我正在考虑如何实现一个只有两个节点的P2P协议。
起初,我读到了不同的DHT实现,希望这个场景是可行的。结果,从本质上说,期望超过几个节点是有效的。
对此的天真思考给我带来了以下挑战:
有人成功了吗?
发布于 2015-04-01 04:22:20
基本上,这是不可能有效率的。
大多数P2P网络依赖于种子信息(它可以尝试连接到的现有节点列表)。从您的问题中,我认为您想要一个不需要将种子信息提供给节点的解决方案。
在没有种子信息的情况下,P2P网络中的节点仅限于尝试随机地址。如果(A)网络中的P2P节点数量很大,并且(B)许多/大多数节点能够接受传入的连接(即,不落后于NAT),则可以成功地工作。
对于IPv4上的两个节点,如果其中一个节点能够接受入站连接,这将意味着在它们彼此发现之前发送了数十亿个数据包。
如果两者都不能接受入站连接,则必须尝试同时连接对方以实现nat遍历。每一次成功的几率只有2^64。这是因为他们每个人都必须正确猜测对方的地址。这根本行不通。
显然,IPv6使一切变得更加困难。
https://softwareengineering.stackexchange.com/questions/277930
复制相似问题