29

我一直在尝试了解 torrent-magnet 技术,但我似乎无法弄清楚在打开磁力链接时如何连接到第一个对等方。

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

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

根据BitTorrent & Magnets:它们是如何工作的?(MakeUseOf)

如果您单击未指定跟踪器 ( tr)的磁力链接,将使用 DHT 找到第一个对等点。一旦你有了对等点,对等点交换也开始了。

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

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

但是它从哪里知道那个节点呢?我没有在磁力链接中看到地址或任何内容。由于它是分散的(无跟踪器),我不希望它提前知道节点。或者 DHT 实际上不是去中心化的?

4

1 回答 1

23

在大多数情况下,当你启动一个 bittorrent 客户端时,引导程序:

  1. 上次会话中的节点,已保存到磁盘
  2. 您所在的任何群体中的其他同龄人

如果客户没有其他方法可以找到它们,则可以使用一些众所周知的引导节点。基本上,这种情况发生的唯一情况是您第一次安装客户端时,您下载的第一个 torrent 是没有跟踪器的磁力链接。

然后你可以点击 router.utorrent.com:6881。我相信传输、azureus 和 bitcomet 运行类似的路由器,可能还有其他客户端。

“路由器”是指一个节点,其行为与 DHT 中的任何其他节点相似,但可能具有不同的机制来确定分发哪些节点,并且可能专门针对仅引入 dht 节点的用例进行了优化彼此。

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

于 2013-03-17T20:48:49.523 回答