磁力链接,简单的说(Magnet URI scheme):类似下面这样以“magnet:?xt=urn:btih:”开头的字符串,就是一条磁力链接;确切的说:“磁力链接”的主要作用是识别【能够通过“点对点技术(即:P2P)”下载的文件】。这种链接是通过不同文件内容的Hash结果生成一个纯文本的“数字指纹”,来识别文件的。而不是基于文件的位置或者名称。
众所周知,BT下载速度不够稳定,当中断种时则无法完整下载。但是,这还不是最严重的。从2009年开始,BT下载遭遇到了“更大的困难”——很多的BT服务器被关,不仅很多种子文件无法找到,BT Tracker服务器也断开解析工作,这就使得BT下载成为很大的难题。磁力链接很好地解决了这个问题。磁力链接的问世与大行其道,标志着BT 1.0时代已经过去,BT 2.0 时代已经到来。深刻理解磁力链接简单地说,磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的普通链接(如http://xxx)不一样,它只是通过不同文件内容的Hash结果生成一个纯文本的“数字指纹”,并用它来识别文件。它类似于生活消费品包装上常见的条码,不同的是这个“数字指纹”可以被任何人从任何文件上生成,这也就注定了磁力链接不需要任何“中心机构”的支持(例如:BT Tracker服务器),且识别准确度极高。因此任何人都可以生成一个Magnet 链接并确保通过该链接下载的文件准确无误。
更简单地说:类似【
】这样以“magnet:?”开头的字符串,就是一条磁力链接,其在网页上的图标通常如图1所示,像一块磁铁,很容易辨别。
和拒汝棋士下棋赢了就让你XX
上面是笔者打算下载的一个文件,Microsoft iSCSI Initiator,按照以前的方式,我们需要下载它的.torrent文件,然后才能下载这个文件本身。但是,在新的模式下,我们不需要下载.torrent文件,只需知道它的Magnet URI,一个资源定位信息,其他都不需要。只要把这个地址告诉下载软件,软件就会开始自动下载。
我们来分解一下这个地址:
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下载方式。
细心的网友可能看出了DHT+PEX+Magnet Link模式中的一个问题——BT客户端的“第一步是如何迈出的”,套用在介绍PEX时使用的例子,那就是小赵是怎么“加入”A班的呢?这确实是个问题。解决这个问题依然需要一台服务器(bootstrap node),不过这台服务器所起的作用与Tracker不同,它仅负责接纳小赵进入A班,当小赵与A班中的同学“搭上了话”,之后这台服务器就没有什么用处了。bootstrap node可以是不同BT客户端厂商独立运营的,也可以是几家联合共用,总之,它是分散的,只要在客户端软件中内置一张表单,那客户端就将有非常多的入口可供选择。
说了这么多,到底Magnet这块“吸铁石”表现如何?是骡子是马总要拉出来溜溜。于是笔者找来了目前已经支持Magnet的BT客户端µTorrent。
本文地址: https://shyhot.com/fuli/20170602588.html