基本上所有的BT客户端做种流程都差不多,本贴使用qBittorrent简单介绍BT做种和发布的教程。


生成种子文件

qBtitorrent做种非常简单,启动qBittorrent在顶部工具栏找到“工具→生成 Torrent”,或者直接按快捷键Ctrl+N。

选择你要发布的文件或文件夹,设置勾选“立即开始做种”,填入Tracker和注释等字段即可,最后点击底部的“制作 Torrent”。

注意,如果你直接对文件做种,则种子标题默认为文件名称,如果你对文件夹做种,则种子标题为文件夹名称。

种子可以设置为“私有”和“广播”,即启用DHT网络,启用DHT网络的种子客户端可以通过广播的方式获取到种子用户,这项功能可以在Tracker完全失效的情况下仍然能下载到文件,但是在一些PT站点中,这个功能是关闭的。

除了通过DHT网络获取文件之外,客户端通常是通过Tracker服务器获取种子用户的,这种方法更加快速稳定,以下是一些公共Tracker:

http://tracker.kisssub.org:2015/announce
http://open.acgtracker.com:1096/announce
http://mgtracker.org:6969/announce
udp://tracker.leechers-paradise.org:6969/announce
udp://tracker.opentrackr.org:1337/announce
udp://tracker.internetwarriors.net:1337/announce
udp://eddie4.nl:6969/announce
udp://9.rarbg.com:2790/announce
udp://9.rarbg.to:2740/announce
udp://tracker.torrent.eu.org:451/announce
udp://tracker.coppersurfer.tk:6969/announce
http://t.acg.rip:6699/announce

种子制作完成后可以选择直接发布,或先发布到做种服务器,发布到做种服务器即先将资源上传到远程服务器,上传完成后可以直接删除本地任务,种子上传和维护工作将由服务器代为完成。

发布

种子可以通过磁力链接发布到各种地方,你也可以将种子发布到一些BT页,例如 nyaa.si 。

不过,nyaa等的BT页程序需要将种子的第一个Tracker设置成nyaa自己的Tracker:http://nyaa.tracker.wf:7777/announcehttp(里站是 http://sukebei.tracker.wf:8888/announce),否则无法发布。

上传

生成种子文件和发布种子后,真正的工作才刚刚开始~

如果你在制作种子时选择了“立刻开始做种”,你的客户端中就会出现一个已经下载完成的任务,此时,种子状态显示为“做种”。

如果你没有选择“立刻开始做种”或者你想要对一个之前已经发布的种子进行补种,你需要首先将种子文件在客户端中创建下载,然后暂停任务,将种子对应的资源文件复制到种子文件的下载目录中,然后右键选择“强制再次比对”。

如果目录正确的话,比对完成的种子下载进度会变成100%,此时启动任务就会开始做种了。

关于做种时间,一般来讲,我们可以根据种子健康度来判断是否可以停止做种,如果健康度大于1(有些客户端会显示100%),则可以停止做种,一般的客户端健康度检测都会有一些误差,基本上健康度在0.8左右也可以停止做种。

如果做种的总文件大小在0.5-2GB左右,上传速度在500K/s左右的话,保持做种半天即可。

超级做种模式

超级种子模式是一种为了方便做种者而设计的,更加节约带宽和CPU的做种方式来。

启用超级种子模式后,客户端会伪装成一个没有数据的普通客户端,当其他客户端连接时,客户端将会给对方发送一些没有被发送的文件数据,随后断掉连接。

客户端会这样处理所有的数据,对每个客户端发送一部分数据,这样可以在分享率较低的情况下,让种子健康度达到很高,所有文件数据都被发出时,将意味着即使你停止做种其他下载者依然可以完成下载进程。

这样将大大降低一个文件块被下载多次的几率并提高做种效率,当一个下载者完成了这个文件块的下载,程序将不再传送这个文件块直到它已看到这个文件块被至少一个其他的客户端传送。这样的话,客户端将无权访问任何这个种子的其他文件块,因此减少了种子的带宽占用。

除此以外,超级种子模式可以在一个较低占用的情况下保持种子健康度。

Tracker和DHT

p2p传输本身是tcp/ip协议,处于tcp协议的应用层。

Tracker是一个中心化服务器,记录了所有正在下载这个种子的、下载完成的用户ip,客户端通过Tracker提供的ip去连接其他客户端。

而DHT网络则是为了去除Tracker这样的中心化服务器而诞生的,客户端可以通过此网络和其他客户端连接,然后向其他客户端广播自己需要的文件,如果其他客户端有你需要的文件则会给你提供下载,否则会继续转发你的请求到其他客户端直到找到文件为止。

相对而言,DHT网络获取资源的时间更长,但是种子不会因为Tracker失效而失效。

信用度规则

包括μtorrent等客户端目前都有信用的设定(但是规则不太一样,比如μtorrent新安装客户端的信用是0,而qBittorrent新安装客户端的信用是5,)你的上传越多,信用就越好,其他客户端就会优先给你分配带宽,这也是基于BT互利互惠的精神的。

 

BT如何保持文件准确性

BT下载的时候,客户端连接到其他客户端需要一系列DHT网络广播和Tracker服务器链接,两个或者几个客户端链接之后,会通过种子文件互相告知自己已经有的文件块,然后才能互相发送对方没有的数据。

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

验证码的主要原理是把提供下载的文件虚拟分成大小相等的块(块大小必须为2k的整数次方,由于是虚拟分块,硬盘上并不产生各个块文件),然后根据BitTorrent协议内的编码规则对每个块进行计算生成验证码。

如果想伪造一个文件并加入下载的话,基本不具备可行性。如果你直接对其他客户端发送空包或者其他数据的话,也会被对方直接丢弃。