Bittorrent客户端的DHT如何“自举”?

时间:2009-07-25 05:38:04

标签: bittorrent dht

如果我有一个没有任何跟踪器的洪流,我刚刚开始了一个有意义的客户端,所以我还没有同行......我怎么知道谁在DHT中首先连接?好像我必须知道DHT中至少有一个节点才能开始....

8 个答案:

答案 0 :(得分:36)

主线DHT引导程序节点为router.utorrent.com,其为CNAME,router.bittorrent.com。端口6881

答案 1 :(得分:34)

当BitTorrent客户端连接到DHT时,有一个初始位置可以找到对等点。使用最初的BitTorrent客户端,有一个bitorrent.com的网址可以帮助您开始工作。我试着查找引用但我找不到它。一旦与其他客户建立了连接,就可以在DHT网络上进行announce查找您正在查找的torrent的同行。

以下是讨论DHT的BitTorrent specs链接。

  

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

答案 2 :(得分:22)

DHT monitoring project网站底部的图表显示

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

作为自举对等

答案 3 :(得分:15)

在BiTTorrent中,您有三个主要选项:

  • Torrent文件:一些torrent文件可以嵌入nodes,以便您链接到DHT(实际上,建议在制作种子文件时使用)
  • 硬编码:一些torrent客户端硬编码一些引导节点(如stk提到的那些节点)。这些通常由具有长期运行服务器的公司和组织运行。
  • PEX / Peer Conversations :您通常可以向正在下载其他种子的人请求DHT节点(如果您的客户了解其他语言。即某些版本不兼容)。

答案 4 :(得分:9)

如果没有其他方法可以获得同行,

Transmission会使用hardcoded bootstrap node作为dht:

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

我猜每个torrent客户端都使用自己的引导节点。

答案 5 :(得分:3)

客户可以通过与他们的互动来了解其他支持DHT的同行。同行对DHT的支持在它的Handshake中公布。一旦客户端发现至少一个良好,连接良好的DHT对等体,它就可以导航DHT以找到越来越近的DHT对等体。它将记住这些在DHT之间称为节点的对等体,在软件重启之间以及在运行时连续维护/更新列表。在更糟糕的情况下,客户端知道没有好的DHT能力的同伴,它将要求您下载基于跟踪器的torrent,以便它可以希望通过跟踪器联系它学到的一些优秀的DHT同伴。

<强>更新 对于它的DHT对等体的初始列表,正如@Seppo所指出的,torrent客户端可以使用一个或多个硬编码的DNS名称来查找已知对等体的地址,并且它还可以包括硬编码的对等体列表,如也是最后的后退。但是,DNS的一个限制是,它没有提供端口信息,因此通常假定默认端口为6881,而其他装置支持在不同端口上运行的对等端。

答案 6 :(得分:3)

对于记录,Deluge也使用hardcoded boostrap nodes

        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)

答案 7 :(得分:0)

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