来源:
种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。
1.Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置;
2.文件信息是根据对目标文件的计算生成的,包括以下字段:
- announce - tracker的URL
-
info - 该条映射到一个字典,该字典的键将取决于共享的一个或多个文件:
-
name - 建议保存到的文件和目录名称
-
piece length - 每个文件块的字节数。通常为28 = 256KB = 262144B
-
pieces - 每个文件块的SHA-1的整合Hash。因为SHA-1会返回160-bit的Hash,所以pieces将会得到1个160-bit的整数倍的字符串。和一个length(相当于只有一个文件正在共享)或files(相当于当多个文件被共享):
-
length - 文件的大小(以字节为单位)
-
files - 一个字典的列表(每个字典对应一个文件)与以下的键:
-
path - 一个对应子目录名的字符串行表,最后一项是实际的文件名称
-
length - 文件的大小(以字节为单位)
它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块(是块,不是整个文件)的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。
下载启动
- BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker服务器。
- Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。
- 此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。
防止重复下载
- 下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
下载过程中的变化
- 用户下载的文件内容越来越完整,对应的,拥有完整种子文件的用户也会越来越多,使文件的“寿命”不断延长。
算法扩展
- 为了解决某些用户“下完就跑”的现象,在非官方BitTorrent协议中还存在一种慢慢开放下载内容的超级种子的算法。
网络技术扩展
- DHT技术可以在无Tracker的情况下下载。
-
DHT全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。
-
有些软件(如比特精灵)还会自动通过DHT搜索种子资源,构成种子市场。
阅读(4897) | 评论(0) | 转发(0) |