我们平时所说的 BT 种子,实际上指的是由 BitTorrent 协议所生成的一个包含资源信息的文件。与传统的网络传输协议不同,BitTorrent 协议是一种以 Peer-To-Peer(P2P) ,即 用户对用户 模式为主的资源分享协议,采用的是一种 去中心化 的思想,不需要一个专门的文件发布者或者发布平台。
bt
我们平常所使用的 HTTP、FTP 等协议需要一个 中心发布者 在网络上发布文件,即一种 点对多 的形式。当然,如果中心发布者由于某种原因被 ban 或者删除了资源,那么我们就无法下载到心爱的 ~~小姐姐~~ 资源了。
传统协议
所以,从理论上来说,一个 bt 种子只要发布了,种子所包含的资源就 永远 存在于互联网上。
BitTorrent 协议的 思想 是将一个文件划分为 大小相等 的 n 块,块大小必须为 $2^k$ 的整数次方。例如一个 100M 的文件,按照每块 1024k 的大小被分为 100 个小块,每块块中包含 索引信息 和 Hash 值,而我们的下载过程实际上就是 块的交换过程。
块
BitTorrent 协议的资源发布者会根据要求,制作一个包含资源下载信息,例如 Tracker 服务器地址、文件大小、文件名、块文件大小 等信息的 .torrent
文件,这个过程也就是我们平时说的 做种。
下图是我利用 BitComet 软件做的一个种子,大家可以看一下。
做种
如果我们要下载 BT 资源,首先要得到对应的 .torrent
文件,然后用专门的下载软件,例如 BitComet、qBittorrent、utorrent 等进行下载,下载过程大概为:
读取 .torrent
文件信息,载入内存
得到文件内的 Tracker
地址,连接 Tracker 服务器
Tracker 服务器回应下载请求,记录你的 IP 并告知其它下载者的 IP 地址
你与其他在线的下载者连接,交换各自没有的块
验证得到的块信息,若不同,则需要重新下载
由此可以看出,Tracker 是很重要的一个东西。一但 Tracker 服务器被封,我们也都无法进行下载了。由此,磁力链接 诞生了。
磁力链接(Magnet URI scheme),是对等网络中进行信息检索和下载文档的电脑程序。和基于“位置”连接的统一资源定位符不同,磁力链接是基于元数据(metadata)文件内容,属于统一资源名称
例如这一串链接:
magnet:?xt=urn:btih:53SWOUDWKG6ORSKTJHHE3QXTIBOGU5WU
magnet
为协议名;xt
表示资源定位点; urn:btih
表示 Hash 方法名,最主要的就是后面唯一的一串 40 位 16 进制的数字。磁力链接利用 DHT 技术(分布式哈希表,Distributed Hash Table)和 PEX (Peer Exchange)实现了资源的 “随意” 传播,根本无法禁止。比如陈冠希的艳照门,再过五百年,他的资源还会流传于网络,成为全人类学习的经典文学。
磁力链接下载的本质是将每一个人都变为 Tracker 服务器,将资源与下载者对应起来,每位下载者保存 部分 信息。这样,在下载资源时,只需寻找拥有所需资源的下载者。
打个比方,A 认识 B,B 认识 C, C 认识 D 和 E;如果 A 想认识 E,就可以通过 B 和 C 的介绍来认识 D,不需要 A 一个个去寻找 E。
推荐下载工具:半半下载器