使用 dht 可以代替 P2P 网络中使用信令服务器打孔吗?

Posted

技术标签:

【中文标题】使用 dht 可以代替 P2P 网络中使用信令服务器打孔吗?【英文标题】:Can using a dht replace the use of signaling servers in P2P networks holepunching? 【发布时间】:2021-11-22 22:51:33 【问题描述】:

在学习 p2p 网络时,我发现 P2P 网络需要信令服务器,但现代 DHT 能否取代对信令服务器的需求? (主要是打孔)

【问题讨论】:

【参考方案1】:

仅充当哈希表的普通 DHT 无法达到此目的,但节点支持某些特定于协议的扩展的自定义实现是可能的。例如。在 bittorent 中,DHT 客户端可以指示 DHT 节点将其外部可见端口放入哈希表中,而不是简单地发布其内部端口号。这仅适用于全锥形 NAT。

对于受限锥形或对称 nat,必须将更复杂的信令和猜测方法(如 STUN)添加到所有 DHT 节点,然后 NAT 后面的对等方可以通过将特定节点发布为它们的集合点来启动特定节点的遍历。

【讨论】:

感谢您提供的答案。具体来说,您认为这个 bittorrent dht (github.com/anacrolix/dht) 会打孔吗? 看起来它支持隐含的端口机制。其余的都是被动发生的,因为常规的 DHT 流量使映射在全锥 NAT 中保持打开状态。假设您在谈论 UDP 打孔。 感谢您的回复。对不起,我说得不准确,我说的是 TCP 对等网络的 TCP 打孔。你认为这个 DHT 可以为 TCP 对等网络进行 TCP 打孔吗? 嗯,这是一个定义问题。它并不是真正的 DHT(因为那些通常在 UDP 上运行),它将是一个使用 DHT 作为构建块的分布式系统,例如找到集合节点,以及作为每个节点的另一部分的打孔系统。所以你应该问是否可以构建分布式TCP打孔系统。无论如何,bittorrent DHT 实现不会为您做到这一点。

以上是关于使用 dht 可以代替 P2P 网络中使用信令服务器打孔吗?的主要内容,如果未能解决你的问题,请参考以下文章

利用DHT网络,爬取bt种子。

dht算法原理描述

使用C++编写一个DHT爬虫,实现从DHT网络爬取BT种子

转贴: Kademlia详解

将 DHT 用于八卦协议?

libtorrent python dht 示例 [关闭]