BitTorrent 与 Magnet 的原理与对比

用户通过 BitTorrent 下载文件的基本过程:

  1. 找到 .torrent 文件
  2. 使用 BT 客户端软件打开 .torrent 文件
  3. 等待文件下载完成

你知道什么是 BitTorrent 吗? 里介绍可知,从整个下载过程中不难看出,BitTorrent tracker 服务器是一个中央节点,任何客户端都可以在上面找到“同伴”——只要其他人也在下载或分享同一个文件。因此,BitTorrent 并非一个去中心化的应用,必须依靠中央节点(BitTorrent tracker 服务器)才能正常工作。

Magnet 下载文件原理:

DHT2002年,纽约大学的两个教授 Petar Maymounkov 和 David Mazières 发表了一篇论文,提出了一种真正去中心化的“点对点”下载模型,他们将其称为 Kademlia 方法。2005年,BT 软件开始引入这种技术,在 BT 中被称为 DHT 协议(Distributed Hash Table,分布式哈希表)。

DHT 是一种分布式存储方法。DHT 的作用是找到那些与本机正在下载(上传)相同文件的对端主机(Peer),当然,实现这一过程并不依赖Tracker服务器。在 DHT 网络中的每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个 DHT 网络的寻址和存储。这种信息获取方式保证了整个网络没有单个的中心,即使一个节点下线,依然可以通过其他节点来获取文件,因此也就不需要 tracker 服务器来告诉你,其他节点在什么地方。

PEX:是 Peer Exchange 的简写,我们可以将其理解为“节点信息交换”。虽然 DHT 解决了去中心化的问题,但要在没有“中心协调员”(Tracker)的情况下实现高效寻址,就要借助PEX。PEX所提供的功能有点类似于以前的Tracker服务器,但工作方式却非常不同,我们可以打个比方来说明。

小赵在A班,她不认识B班的小何,也不认识C班的小温,但小赵认识同班的小王,而小王认识B班的小何,也可能还认识C班的小温,或者小王仅认识B班的小何,但小何认识C班的小温,而小温又认识同班的所有同学,结果就是小赵可以“无限”地延伸自己的关系网,不管怎样,总有一条沟通途径可以将这些同学联系在一起,待小赵“认识”了小温后,他们就可以直接沟通了,在P2P世界里,就是进行上传与下载。

Magnet links:有网友将其称为磁链。DHT+PEX 解决了 BT “寻址”的问题,但是如何告诉 BT 客户端找(寻)什么又是另外一个问题。在 .torrent 文件中包含的内容就是用户真正要下载的文件的特征信息,或称为“电子指纹”,BT 客户端知道了要找什么,也知道如何去找,于是 p2p 方式的下载、上传就实现了。以前 BT 客户端通过 .torrent 文件得知“要找什么”,现在,文件的“电子指纹”不再存放于 .torrent 中,而被放在了 Magnet links 中

例如:

magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073&dn=Microsoft+iSCSI+Initiator

分解一下这个地址:

  • magnet:协议名。
  • xt:exact topic的缩写,表示资源定位点。
  • BTIH(BitTorrent Info Hash)表示哈希方法名,这里还可以使用SHA1和MD5。这个值是文件的标识符,是不可缺少的。
  • dn:display name的缩写,表示向用户显示的文件名。这是一个可选项。
  • tr:tracker的缩写,表示 tracker服务器的地址。这是一个可选项,本例未出现。

精简一下上例,仅需要 magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073 就够用了,如果附加 dn(display name),在使用上会更加方便一些。

Magnet Link 的好处就不多说了,至少包括两点:网络的可靠性得到了极大的增强;不存在“被拔线”的风险。由于不存在所谓的中央节点,审查将变得更加困难,“单点失效”的问题也就不存在了。此外,Magnet URI 只是一个字符串,非常容易传播,根本无法禁止。因此,Magnet URI 取代 tracker 模式将是大势所趋,迟早会成为主流 BT 下载方式。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注