首页 > 代码库 > 什么是BitTorrent协议

什么是BitTorrent协议

一般的下载服务器为每一个发出下载请求的用户提供下载服务,是点到点,一对一的顺序下载服务,而BitTorrent的工作方式与之不同,它是每一个节点都贡献自己那部分内容,是同时好几个节点给你提供服务,直到用户的下载都全部完成。


一般的HTTP/FTP下载,下载的人如果太多,服务器很容易达到瓶颈,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的种子也越多,种子也会越来越多,下载速度就越快。这就是他BT的地方。


BitTorrent协议处于TCP/IP结构的应用层。根据BitTorrent协议,要根据发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。包含Tracker信息和文件信息两部分。Tracker信息主要是下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,把文件虚拟分成大小相等的块,块大小必须为2k的整数次方,种子包含每个块的索引信息和Hash验证码,即索引。


下载时,首先解析种子文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供其他下载者的地址。下载者再连接其他下载者,根据种子文件,两者分别对方告知自己已经有的块,然后交换对方没有的数据。下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。保证每个块都是正确的。


这里有一点是相当有意思的,就是每个结点都优先选择整个系统中最拥有少的那些块去下载,而那些在系统中相对较多的块,放在后面下载,这样,整个系统就趋向于一种更优的状态。如果大家都去下载最多的那些块,那么这些块就会在系统中分布的越来越多,而那些在系统中相对较少的块会越来越少,最后,某些 结点就不再拥有其它结点需要的块了,那么整个系统的吞吐量就会下降。

原文:http://blog.csdn.net/hongchangfirst/article/details/26845699

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst



什么是BitTorrent协议