![]() |
| 比特流 |
BT原理普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。
根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。
![]() |
| 比特流软件 |
下载者要下载文件内容,需要先得到相应的.torrent文件,然后使用BT客户端软件进行下载。
下载时,BT客户端首先解析.torrent文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别对方告知自己已经有的块,然后交换对方没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。
下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,种子也会越来越多,下载速度就越快。
而有些人下载完成后关掉下载任务,提供较少量数据给其他用户,为尽量避免这种行为,在非官方BitTorrent协议中存在超级种子的算法。这种算法允许文件发布者分几步发布文件,发布者不需要一次提供文件所有内容,而是慢慢开放的下载内容的比例,延长下载时间。此时,速度快的人由于未下载完必须提供给他人数据,速度慢的人有更多机会得到数据。
目前,又发展出DHT网络技术,使得无Tracker下载成为可能。
DHT全称为分布式哈希表(DistributedHashTable),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。
有些软件(比特精灵)还会自动通过DHT搜索种子资源,构成种子市场。
另外,这里使用的DHT算法叫Kademlia(在eMule中也有使用,常把它叫做KAD,具体实现协议有所不同)。
这种技术好处十分明显,就是大大减轻了Tracker的负担(甚至不需要)。用户之间可以更快速建立通讯(特别是与Tracker连接不上的时候)。
Tracker:收集下载者信息的服务器,并将此信息提供给其他下载者,使下载者们相互连接起来,传输数据。
种子:指一个下载任务中所有文件都被某下载者完整的下载,此时下载者成为一个种子。发布者本身发布的文件就是原始种子。也指.torrent文件。
做种:发布者提供下载任务的全部内容的行为;下载者下载完成后继续提供给他人下载的行为。
编辑本段BitTorrent与自由软件
BitTorrent对于大型文档和自由软件如Linux、FreeBSD的发布帮助很大。对于发布数百MB以至数GB的档案时,如Fedora的光盘镜像格式档,BitTorrent的使用能大大减低服务器的数据流量从而减低发布的成本。另外,一般有新版本软件推出时,服务器必定人山人海,使用BitTorrent也能大大减低繁忙时间服务器的负担。
1.http://www.BitTorrent.com
位网民共同编写而成。共计

