种子文件

BitTorrent协议的种子文件（）是由BitTorrent协议所定义的，用于可以保存一组文件元数据的文件。扩展名一般为“.torrent”。

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

种子文件包含以下数据：
 announce - tracker的URL
 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协议中还存在一种超级种子的算法。

参见
 磁力链接

参考资料

外部链接
 Search engine for Torrent files

Category:BitTorrent
Category:文件格式