zzzzy09

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

BitTorrent协议(简称BT,俗称比特洪流BT下载)是用在对等网络文件分享网络协议程序。和点对点(point-to-point)的协议程序不同,它是用户群对用户群(peer-to-peer),而且用户越多,下载同一文件的人越多,下载该文件的速度越快。且下载后,继续维持上传的状态,就可以“分享”,成为其用户端节点下载的种子文件(.torrent),同时上传及下载。

历史[编辑]

该技术由美国的程序员布莱姆·科亨于2001年4月时发布,并于2001年7月2日时首次正式应用。

原理简述[编辑]

BT原理在该图示中,由不同颜色区分的是某一文件的不同部分,当传输开始时,只有种子发布者拥有全部文件,在传输进行中,有部分用户获得部分文件(带颜色线条表示),随着传输的继续,文件已经全部公布在系统中,此时,种子拥有者可以退出,也不会影响该文件的传播
 

普通的HTTPFTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输通信协议,处于TCP/IP结构的应用层。BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩展中。

根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。

种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。

下载者要下载文件内容,需要先得到相应的种子文件,然后使用BT客户端软件进行下载。

下载时,BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。

下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。同时,拥有完整文件的用户也会越来越多,使文件的“寿命”不断延长。

为了解决某些用户“下完就跑”的现象,在非官方BitTorrent协议中还存在一种慢慢开放下载内容的超级种子算法

DHT网络[编辑]

目前,又发展出DHT网络技术,可以在无Tracker的情况下下载。

DHT全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。

有些软件(如比特精灵)还会自动通过DHT搜索种子资源,构成种子市场

另外,这里使用的DHT算法叫Kademlia(在eMule中也有使用,称为Kad网络,具体实现协议有所不同)。

这种技术好处十分明显,就是大大减轻了Tracker的负担(甚至不需要)。用户之间可以更快速创建通讯(特别是与Tracker连接不上的时候)。

BT中相关概念[编辑]

  • Tracker:收集下载者信息的服务器,并将此信息提供给其他下载者,使下载者们相互连接起来,传输数据。
  • 种子:指一个下载任务中所有文件都被某下载者完整的下载,此时下载者成为一个种子。发布者本身发布的文件就是原始种子。
  • 做种:发布者提供下载任务的全部内容的行为;下载者下载完成后继续提供给他人下载的行为。

BitTorrent与自由软件[编辑]

BitTorrent对于大型文档和自由软件LinuxFreeBSD的发布帮助很大。对于发布数百MiB以至数十GiB的文件时,如Fedora光盘镜像格式档,BitTorrent的使用能大大减低服务器数据流量从而减低发布的成本。另外,一般有新版本软件推出时,链接该服务器的人数必定非常庞大,使用BitTorrent也能大大减低繁忙时间服务器的负担。

历史[编辑]

2002年,布莱姆·科亨CodeCon初次露面,发表首个BT软件BitTorrent。它以Python写成,以MIT许可证发布。

posted on 2022-02-06 12:46  zzzzy09  阅读(480)  评论(0编辑  收藏  举报