What is Nostr?
阮一峰的博客 / 阮一峰
npub1nja…ktgh
2023-04-30 12:38:37

阮一峰的博客 on Nostr: 4. ...


4.

为了说清楚这个问题,我们必须了解传统的BT下载模式是什么样的,以及Tracker服务器到底起到什么作用。

请回忆一下,你是如何使用BT下载的。

首先,你从浏览器中找到你感兴趣的内容,下载相应的torrent文件。然后,你用一个BT下载客户端软件,打开这个文件。这时,客户端软件就会根据torrent文件中的网址,自动连接Tracker服务器,从它那里接收到其他正在下载该文件的人的网址名单。下一步,软件就一一与名单上的网址取得联系,从他们那里获取文件的片段,直到整个下载完成。

从这个过程中,我们可以看到,Tracker服务器是整个BT下载的灵魂,文件可以不存在,但是Tracker服务器却不能不存在。要是连不上它,BT下载根本没法启动,因为你无从知道,找谁索要文件。就是由于这个原因,Tracker服务器成为了版权组织打击的重点。他们的想法很明确,只要除掉了Tracker,BT下载就完了。他们的理由是,虽然Tracker本身不传递内容,但是为传播盗版提供了便利,是犯罪的协助者。更何况,Tracker服务器的网址是公开的,很容易找到它的所有者,逃都逃不掉。

在这种形势下,Tracker提供者的日子都很难过。海盗湾是世界排名第一的Tracker提供者,它已经在被追杀了。排名第二的Demonoid从今年9月15日起,就一直处于维护状态,不知道何时重新开放。其他的Tracker提供者基本上也是在法律诉讼的阴影下度日。那些不提供Tracker服务,只提供torrent文件索引服务的网站,比如Mininova、Torrentz、isoHunt,日子稍微好过一点。但是明摆着,版权组织收拾完Tracker以后,就要收拾它们了。比如,今年8月,Mininova就在一场官司中败诉,荷兰法官判决,该网站必须移除所有侵权内容的torrent文件。

5.

既然,Tracker服务器在法律上很难立足,那么有没有办法,在不使用Tracker的情况下,依然使用BT下载呢?

2002年,纽约大学的两个教授Petar Maymounkov和David Mazières发表了一篇论文,提出了一种真正去中心化的"点对点"下载模型,他们把它叫做Kademlia方法。Emule率先在软件中支持这种方法,KAD网络就是这样来的。到了2005年,BT软件也开始跟进了。目前,所有主流的BT下载客户端软件都支持这种方法。在BT下载中,这被叫做DHT协议(Distributed hash table,分布式哈希表)。

为什么有了DHT协议以后,就不再需要Tracker服务器了,真正实现了去中心化的点对点下载?

根据我对这个协议有限的理解,它是这样做的:

每一台加入BT下载的计算机,都被称为一个节点(node),有一个自己的ID。这个ID是一个哈希函数值,通过对要分享的文件内容或它的元数据进行哈希运算而得到。这就是说,如果两台计算机正在下载同一个文件,那么它们的ID应该是彼此相似的。于是,每一台计算机就通过寻找与自己相似的ID,来找到自己可以与之交换数据的其他节点。

DHT协议的另一个巧妙之处在于,每一台计算机只保留自己附近的一部分节点信息。因此,为了得到更多的节点信息,就必须采用接龙方式,在一个个节点之间跳跃,逐步得到全网的节点分布图。这种信息获取方式,就保证了整个网络没有单个的中心,即使一个节点下线了,依然可以通过其他节点来获取文件,因此也就不需要Tracker服务器来告诉你,其他节点在什么地方了。

我对这个协议有一个细节还不是很清楚,我不知道,当BT下载刚刚启动的时候,如何获得第一个外部节点的位置?需不需要有人告诉你,你首先应该去找谁?如果需要的话,那么这个协议或多或少还是有一个中央服务器的。但是,如果不需要的话,那就真的是纯粹的去中心化的分布式下载协议了。

现在所有主流的BT下载客户端,都支持DHT协议,也就是说,它们都能在没有Tracker的情况下完成下载。事实证明,它们不仅能完成,而且还能完成得很好!海盗湾和Demonoid的Tracker服务器都已经关掉了,但是如果你使用它们以前的torrent文件,依然能够完成下载。为什么?这就是DHT协议在发挥作用啊。所以,正是由于DHT可以取代Tracker,海盗湾才会宣布放弃Tracker模式。

6.

让我们看看,现在在海盗湾上,如何使用BT下载。

如果你细心观察的话,你会发现在每一个文件后面,现在都有一个磁铁标志。点击以后,会打开一个地址,这被叫做magnet URI。



举例来说,今天的热门下载文件是Inglourious.Basterds.DVDRip.XviD-iMBT.avi,按照以前的方式,我们需要下载它的torrent文件,然后才能下载这部电影本身。但是,在新的模式下面,我们不需要下载torrent文件,我们只需要知道它的magnet URI,就可以了。只要把这个地址告诉下载软件,软件就会开始自动下载。这和emule下载非常相似,只需要一个资源定位信息,其他都不需要。

Inglourious.Basterds.DVDRip.XviD-iMBT.avi的magnet URI如下:

magnet:
?xt=urn:btih:60c423137f453492ca34c2d69f6f573408dca35a
&dn=Inglourious.Basterds.DVDRip.XviD-iMBT.avi
&tr=http%3A%2F%2Ftracker.publicbt.com%2Fannounce

分解一下这个网址:

magnet:协议名。

xt:exact topic的缩写,表示资源定位点。BTIH(BitTorrent Info Hash)表示哈希方法名,这里还可以使用SHA1和MD5。这个值是文件的标识符,是不可缺少的。

dn:display name的缩写,表示向用户显示的文件名。这一项是选填的。

tr:tracker的缩写,表示tracker服务器的地址。这一项也是选填的。

简单说,只要知道magnet:?xt=urn:btih:60c423137f453492ca34c2d69f6f573408dca35a这个地址,不用下载torrent文件,也不用再了解其他信息,就能开始BT下载这个文件了。
Author Public Key
npub1njaks8z0kvsqwhgda5adfcj759ez38q63e84v2h8utzj6j5f87tsv4ktgh