BitTorrent协议的种子文件(英语:Torrent file)可以保存一组
文件的元数据。这种格式的文件被
BitTorrent协议所定义。
扩展名一般为“.torrent”。
BitTorrent(BT),最大的特点和优势是采用了“多源文件传输机制(MFTP,Multi-source File Transmission Protocol)”。该词的实际出处为eDonkey的协议说明文档,但在BT上被应用得更早、更成熟完善。BT与eDonkey的原理完全相同,都是把一个文件切割成若干文件片(Piece),为每一片标上特殊标识。一般文件片的大小为256K字节或512K字节。下载时,用户不是从一个同定节点(例如传统网络的中心服务器或最初搜索到的存储文件的节点)上下载完整的文件,而是同时从多个拥有部分或全部文件的节点处下载不同的文件片,最后获得完整的文件。由于文件分片,因此可以支持断点续传。同时每个节点在获得一个文件片后,即可向其他节点提供上传。这样就减轻了服务器或者最初拥有该文件的节点的压力,上传服务被分摊到所有参与下载的节点上。
BT的网络架构中存在一个中心服务器Tracker,用来保存BT网络巾各节点的IP地址和端口等信息。下载节点刚加入网络时从Trakcer上获得其他节点的地址信息。另外,BT与常见的P2P网络不同,其功能主要限于文件的传输过程,而共享文件的发布和查询都是通过Web服务器来实现的。BT节点下载时,首先要到Web服务器上通过简单的HTTP协议下载一个扩展名是.torrent的文件。而后节点通过.torrent文件中包含的信息使用
HTTP协议与Tracker服务器相连。Tracker服务器记录下节点请求下载的文件信息以及节点的IP地址和端口号,回复节点一个随机生成的下载该文件的节点列表。下载节点与列表上的节点建立连接,实现了多源下载。当下载者拥有完整的文件后,就称其为“种子( Seed)”。BT的网络架构如图《网络架构》所示。
.torrent种子文件本质上是
文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的
Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和
Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。
根据
BitTorrent协议,文件发布者会根据要发布的文件生成提供一个种子文件。下载者要下载文件内容,需要先得到相应的种子文件,然后使用BT客户端软件进行下载。