Bittorent客户端中的DHT如何得到“引导”?

如果我有一个没有任何追踪器的洪stream,而且我刚刚开始一个不知名的客户端,所以我还没有同行呢…我怎么知道在DHT中首先连接的是谁? 看来我必须知道DHT中至less有一个节点才能开始….

当一个BitTorrent客户端连接到DHT时,有一个最初的地方去寻找同伴。 使用原来的BitTorrent客户端,有一个urlbitorrent.com,这将有助于开始。 我试图查找参考,但我找不到它。 一旦你build立了与其他客户端的连接,那么你可以在DHTnetworking上做一个announce ,find你正在寻找的洪stream的同行。

这是一个讨论DHT的BitTorrent规范的链接。

无追踪者的洪stream字典没有“通知”键。 相反,一个trackerless种子有一个“节点”键。 该密钥应该设置为生成客户端路由表的洪stream中K个最接近的节点。 或者,可以将密钥设置为已知的良好节点,例如由生成洪stream的人操作的节点。 请不要自动将“router.bittorrent.com”添加到torrent文件,或自动将此节点添加到客户端路由表。

主线DHT引导节点是router.utorrent.com和它的一个CNAME, router.bittorrent.com 。 港口6881

DHT监测项目网站底部的图表显示

  • dht.transmissionbt.com
  • router.utorrent.com
  • router.bittorrent.com

作为引导同行

在BiT​​Trent中,您有三个主要选项:

  • Torrent文件:一些torrent文件可以embeddednodes让你链接到DHT(实际上,build议在制作torrent文件时)
  • 硬编码一些洪stream客户端硬编码一些引导节点(如由stk提到的那些节点)。 这些通常由长期运行的服务器的公司和组织运行。
  • PEX / Peer Conversations :你通常可以从你正在下载其他种子的人那里得到DHT节点(如果你的客户了解他们的语言,即某些版本不兼容)。

如果没有其他方法可以获得同伴,则Transmission使用硬编码的引导程序节点 。

 bootstrap_from_name( "dht.transmissionbt.com", 6881, bootstrap_af(session) ); 

我想每个洪stream客户端使用自己的引导节点。

客户可以通过与他们的交互来了解其他支持DHT的同伴。 同行对DHT的支持在它的Handshake中做广告。 一旦客户发现至less有一个连接良好的DHT对等体,它可以浏览DHT以find更多更接近的DHT对等体。 它会记住这些节点(称为DHT节点),在重新启动软件之间,以及在运行时不断维护/更新列表。 在最糟糕的情况下,如果客户知道没有DHT能力的同行,那么您需要下载一个基于跟踪器的洪stream,以便能够通过跟踪器联系一些他们了解的具有DHTfunction的同行。

更新:正如@Seppo指出的,它是DHT对等体的初始列表,一个BT客户端可以使用一个或多个硬编码的DNS名称来查找知名对等体的地址,还可能包含硬编码的同行也是最后的倒退。 DNS的一个限制,但是,它没有提供端口信息,所以通常假定默认端口是6881,而其他方式则支持在不同端口上运行的对等端口。

为了logging, Deluge也使用硬编码的boostrap节点 :

  self.session.add_dht_router("router.bittorrent.com", 6881) self.session.add_dht_router("router.utorrent.com", 6881) self.session.add_dht_router("router.bitcomet.com", 6881) 

你需要来自其他洪stream的同伴交谈。 正如你所说你没有这些,你没有太多的东西去….