csk*_*wrd 5 networking udp udpclient packet
我正在尝试了解 P2P/去中心化网络的一些来龙去脉。我的问题如下。假设我有两台名为 comp1 和 comp2 的机器。现在,comp1 设置在路由器后面的家庭网络上,comp2 也位于我办公室的路由器后面。假设端口正确转发,我是否可以像这样在 Internet 上来回发送 UDP 数据包?为了更深入地了解我正在研究的内容,我试图弄清楚新节点如何在不使用中央服务器的情况下发现现有节点。
谢谢!
假设,正如您所说,端口转发正确,您可以将 UDP 数据包发送到路由器后面的 2 个客户端。
检测本地 Intranet 上的客户端的一个好方法可能是使用多播,但是这并没有得到 ISP 的广泛支持(至少在英国),因此不能依赖。许多设备发现平台都使用组播,例如 mDNS(用于 Apple 的 Bonjour)
http://en.wikipedia.org/wiki/Multicast
(它基本上是通过客户端订阅组,然后向该组发送消息来工作的)
我认为通过互联网发现新客户端的最佳方法是让新客户端联系一台服务器以使其知道它们的存在,然后集中式服务器将告诉所有其他客户端有关您的信息。例如,这在现代战争 2 等 P2P 游戏中使用,这就是“追踪者”在 BitTorrent 协议中所做的事情。
这并不是完全去中心化的,但它可能是最容易实现、也是最可靠的。