举个例子吧:
这是摇曳露营全集的磁链
magnet:?xt=urn:btih:cfd6b190df47342a17415cb4c930db90968c0342&tr=http://t.nyaatracker.com/announce&tr=http://tracker.kamigami.org:2710/announce&tr=http://share.camoe.cn:8080/announce&tr=http://opentracker.acgnx.se/announce&tr=http://anidex.moe:6969/announce&tr=http://t.acg.rip:6699/announce&tr=https://tr.bangumi.moe:9696/announce&tr=udp://tr.bangumi.moe:6969/announce&tr=http://open.acgtracker.com:1096/announce&tr=udp://tracker.opentrackr.org:1337/announce
magnet :协议名。
xt :包含文件哈希值的统一资源名称。
urn:表示资源名
btih:表示哈希方法名,这里还可以使用ED2K,AICH,SHA1和MD5等。这个值是文件的标识符,是不可缺少的。
&dn :display name的缩写,表示向用户显示的文件名。这一项是选填的。
&tr :tracker的缩写,表示tracker服务器的地址。这一项也是选填的。
一个磁链最少需要
magnet?xt=urn:btih:cfd6b190df47342a17415cb4c930db90968c0342
这么些部分。
磁链的基本工作流程是:
1. 先看磁链有写tracker服务器没,如果没有写,去客户端默认的tracker服务器问,还有谁在下载/上传哈希值为cfd6b190df47342a17415cb4c930db90968c0342的文件啊。
2. 然后去DHT网络上问,还有谁在下载/上传哈希值为cfd6b190df47342a17415cb4c930db90968c0342的文件啊。
3. 然后客户端去连接这些在下载/上传的人,排队申请对方把文件已经下载完的部分,发给你。
tracker服务器的作用是,记录都有谁正在下载/上传这个种子。
DHT网络基本等同于,每个用户都是一个mini的tracker服务器,只记录很少数量的种子都有谁在下载,
如果其他客户端问的种子你的客户端知道就告诉他,
如果不知道就告诉他,还有那些其他的支持DHT的用户在线上,它可以再去问他们。
BT的工作模式导致几个问题:
1、你的下载速度其实受制于其他人的上传速度。
2、如果tracker服务器被屏蔽的太厉害,下载用户可能需要很久才能找到足够多的上传用户。
比如我就经历过一个磁链,在下载了0.2%后,3天都是0KB/S,直到突然在DHT网络找到了几个大佬,分分钟用10M/s的速度下完了。