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网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。

0 0
原创粉丝点击