如何从种子磁力链接中获取第一个节点?

30

我一直在尝试理解种子磁力链接技术,但似乎无法弄清楚在打开磁力链接时如何连接到第一个对等节点。

当您获得如下的磁力链接时,它不包含初始对等节点,只有BitTorrent信息哈希(btih)和文件名。

magnet:?xt=urn:btih:bbb6db69965af769f664b6636e7914f8735141b3&dn=ubuntu-12.04-desktop-i386.iso

根据BitTorrent & Magnets: How Do They Work? (MakeUseOf),如果您点击不指定跟踪器(tr)的磁力链接,则第一个对等点将使用DHT找到。一旦您有了一个对等点,对等点交换也会启动。

Wikipedia上的DHT文章没有说明如何找到对等点,但在Kademlia文章中(基于BitTorrent DHT),它说

想要加入网络的节点必须首先通过引导过程。在这个阶段,加入节点需要知道另一个已经参与Kademlia网络的节点的IP地址和端口 - 引导节点(从用户处获得或从存储的列表中获得)。

但是它是从哪里知道那个节点的呢?我在磁力链接中没有看到任何地址或其他信息。由于它是去中心化的(无需跟踪器),我不会预先期望它“知道”该节点。或者DHT实际上并非去中心化吗?

1个回答

23

通常情况下,当你启动比特流客户端时,会使用以下方式引导:

  1. 从上次保存到磁盘的节点中引导
  2. 使用你在任何群集中的其他对等方

如果没有其他方法可以找到引导点,那么还有一些众所周知的引导节点可供客户端使用。基本上,这种情况只会发生在你第一次安装客户端,且第一个下载的种子是没有跟踪器的磁链。

然后,你可以连接router.utorrent.com:6881。我相信Transmission、Azureus和BitComet也运行类似的路由器,可能还有其他客户端。

“路由器”指的是一种表现得像DHT中的任何其他节点的节点,但可能具有不同的分配节点的机制,并且可能专门针对仅用于互相介绍DHT节点的用例进行了优化。

更新: 你可以运行自己的DHT引导机器,这里是源代码。


引导节点(如dht.transmission.com)不应该只是一个tracker吗?我理解的方式是,它需要跟踪每个info hash的对等方列表 - 这正是tracker所做的。 - Kar
6
引导节点与比特流跟踪器不同。它们不按info-hash保存对等方列表,而是只保留单个节点列表。 DHT协议也不同于跟踪器协议。 - Arvid
router.bittorrent.com:6881 67.215.246.10 dht.transmissionbt.com:6881 212.129.33.59 87.98.162.88 2001:41d0:c:5ac:5::1 dht.aelitis.com 174.129.43.152 // Vuze router.silotis.us:6881",// IPv6 router.utorrent.com:6881 82.221.103.244 router.bitcomet.com dht.libtorrent.org:25401 //@arvidn's 这些不仅仅是追踪器。Tor 和 https://metrics.torproject.org/rs.html#search/flag:authority%20 的服务器相同。没有它们,Tor 或 Bittorent 将无法正常工作。封锁它们将无法阻止Bittorent,因为Cademlia 允许通过简单的暴力破解发现最初的节点,但也有例外情况。 - Валерий Заподовников
我不明白你的观点是什么。这两个句子似乎是矛盾的:“没有它们,Tor或Bittorent将无法工作。”和“阻止它们将不允许停止Bittorent”。拥有DHT路由器节点的访问权限并不是引导进入DHT所必需的。只要您可以访问至少一个,就可以找到其他比特流同行,因此您可能可以引导启动。 - Arvid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接