BitTorrent协议小结
来源:互联网 发布:js 数组长度限制 编辑:程序博客网 时间:2024/05/01 18:59
1.BitTorrent协议
BitTorrent是一个文件传输的网络协议。该协议是由美国的程序员布莱姆·科亨(Bram Cohen)在2001年7月发布。该协议是基于TCP/IP协议,它是应用层的协议。目前,流行的P2P下载工具都是基于BitTorrent协议来实现的。
2.BitTorrent协议中的几个概念
(1)tracker服务器
tracker服务器是用来响应bt客户端的请求的,简单来说,client发消息给tracker,告诉本身的信息(ip,port),我要下载什么数据,你给我说下还有其他什么人(other clients)也在下载这份数据;tracker收到消息后,存在一个地方(内存/redis/数据库),然后把tracker所知道的下载同一份数据的人们都告知给client;client拿到这些人的信息(ip,port)后,就知道该跟谁打交道了(下载数据)。
(2)众多客户端
(3)种子文件
种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。
备注,使用的BitTorrent的协议的P2P下载方式,其实还是有一个重要server的哦
3.BitTorrent协议在实际中运作的过程
(1)要分享的信息的某个BT客户端,拿本机中的某个文件或者目录做种,生成种子文件*.torrent. 然后,它会该告诉tracker自己的ip和端口(这个需要验证)
(2)网络中的其他客户端不知道在哪里获取到这个种子文件*.torrent,然后读取*.torrent文件中的tracker server的IP及端口,然后去告诉tracker server它要先要下载的数据,且询问tracker server还有哪些客户端也在下载这份数据。tracker server首先会将该客户端的ip+port记录在数据库中,然后在自己的缓存或者数据库中去查询,将所有它知道的其他的客户端的ip+port都告诉给该客户端。
(3)该客户端拿到ip+port列表后,就去直接与列表中的主机进行通信。根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。
总之,这就凸显了BitTorrent协议是一种P2P的方式,越是下载数据的用户越多,那现在的速度会越快。
4.区分几个概念
(1)BitTorrent协议
(2)BitTorrent公司
该公司开发了一个名称为BitTorrent的P2P工具。但是不知道它与Bram Cohen有什么关系(待验证)
5.众多的P2P工具软件
这些P2P工具软件都是基于BitTorrent协议来实现的,主要包括的有,
BitTorrent
比特精灵
迅雷
FlashGet
QQ旋风
......
6.P2P中一定要有Tracker Server吗?
现在有DHT网络技术,使得无Tracker Server下载称为可能。DHT全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。
- BitTorrent协议小结
- BitTorrent协议
- 读bittorrent小结
- BitTorrent协议详解
- BitTorrent协议详解
- BitTorrent协议详解
- BitTorrent协议详解
- BitTorrent协议详解
- BitTorrent协议详解
- BitTorrent协议详解
- BitTorrent协议详解
- BitTorrent 官方协议(翻译)
- BitTorrent协议详解
- BitTorrent 协议规范
- BitTorrent 协议规范
- BitTorrent协议详解
- 官方BitTorrent协议详解
- BitTorrent 协议规范
- 用R软件绘制中国分省市地图
- 三极管的基极电流究竟做了什么?
- Java中Runnable和Thread的区别
- c++运算符重载
- linux系统编程第一章
- BitTorrent协议小结
- JVM内存模型及垃圾收集策略解析(1)
- 无所谓的事情
- Win10和他的老兄弟们
- 玩的第一个黑客小游戏,isa test
- c语言对数组名取地址
- JVM内存模型及垃圾收集策略解析
- 模拟电路试题
- CodeVS 1003 电话连线