BitTorrent协议
不是point to point 而是 peer to peer (用户群对用户群)
普通的HTTP/FTP下载采用TCP/IP协议,BitTorrent协议是架构于TCP/IP之上的P2P文件传输协议,处于TCP/IP结构的应用层
根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件(一个文本文件),包含Tracker信息和文件信息
Tracker信息:Tracker服务器地址和针对Tracker服务器的设置
文件信息:计算目标文件,把结果根据BitTorrent内的Bencode规则编码
Bencode(发音为Bee-Encode)是BitTorrent用在传输数据结构的编码方式。这种编码方式支持四种数据类型:字符串,整数,序列,字典
它的主要原理是把下载的文件虚拟分成大小相等的块,块的大小必须是2k的整数次方(由于是虚拟分块, 磁盘上不常上各个块文件),并把每个块的索引信息和Hash验证码写入种子文件内;所以种子文件就是被下载文件的索引。
下载时:BT客户端首先解析种子文件得到Tracker地址,然后连接服务器。Tracker服务器回应下载者的请求,根据种子文件,两者分别告诉对方自己已经有的块,然后交换对方没有的数据。此时不需其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。
下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
DHT网络
DHT全称为分布式哈希表(Distributed Hash Table)
是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。软件会在DHT网络中需要不知该下载同一文件的其他用户并与之通讯,开始下载任务。
网友评论