种子文档

BitTorrent协议种子文档英语:)是由BitTorrent协议所定义的,用于可以保存一组文档元数据的文档[1]扩展名一般为“.torrent”。

种子文档()
.torrent
application/x-bittorrent
标准BEP-0003[1]

结构

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

种子文档包含以下数据:

  • announce - trackerURL
  • info - 该条映射到一个字典,该字典的键将取决于共享的一个或多个文档:
    • name - 建议保存到的文档和目录名称
    • piece length - 每个文档块的字节数。通常为 = 256KiB = 262144B
    • pieces - 每个文档块的SHA-1的集成Hash。因为SHA-1会返回160-bit的Hash,所以pieces将会得到1个160-bit的整数倍的字符串。和一个length(相当于只有一个文档正在共享)或files(相当于当多个文档被共享):
    • length - 文档的大小(以字节为单位)
    • files - 一个字典的列表(每个字典对应一个文档)与以下的键:
      • path - 一个对应子目录名的字符串列表,最后一项是实际的文档名称
      • length - 文档的大小(以字节为单位)

作用

根据BitTorrent协议,文档发布者会根据要发布的文档生成提供一个种子文档。下载者要下载文档内容,需要先得到相应的种子文档,然后使用BT客户端软件进行下载。

下载时,BT客户端首先解析种子文档得到Tracker地址,然后连接Tracker服务器。

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

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

参见

参考资料

  1. . Bittorrent.org. [2009-10-22]. (原始内容存档于2014-02-08).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.