我正在尝试了解 P2P/去中心化网络的一些细节。我的问题如下。假设我有两台名为 comp1 和 comp2 的机器。现在 comp1 设置在我的家庭网络上的路由器后面,而 comp2 也位于我的办公室中,也位于路由器后面。假设端口被正确转发,我是否可以像这样在互联网上来回发送 UDP 数据包?为了更深入地了解我正在调查的内容,我试图弄清楚一个新节点如何在不使用中央服务器的情况下发现现有节点。
谢谢!
我正在尝试了解 P2P/去中心化网络的一些细节。我的问题如下。假设我有两台名为 comp1 和 comp2 的机器。现在 comp1 设置在我的家庭网络上的路由器后面,而 comp2 也位于我的办公室中,也位于路由器后面。假设端口被正确转发,我是否可以像这样在互联网上来回发送 UDP 数据包?为了更深入地了解我正在调查的内容,我试图弄清楚一个新节点如何在不使用中央服务器的情况下发现现有节点。
谢谢!
假设,正如您所说,端口转发正确,您可以将 UDP 数据包发送到路由器后面的 2 个客户端。
在本地 Intranet 上检测客户端的一种好方法可能是使用多播,但是这在 ISP(至少在英国)没有广泛的支持,因此不能依赖。Multicast 被许多设备发现平台使用,例如 mDNS(用于 Apple 的 Bonjour)
http://en.wikipedia.org/wiki/Multicast
(它基本上是由客户订阅组,然后向该组发送消息)
我认为通过互联网发现新客户的最佳方式是让新客户联系一台服务器以告知其存在,然后中央服务器将告诉所有其他客户有关您的信息。这例如在现代战争 2 等 P2P 游戏中使用,这就是“跟踪器”在 BitTorrent 协议中所做的事情。
这不是完全去中心化的,但它可能是最容易实现和最可靠的。
要添加到 Dotmister 的响应中,如果端口未正确转发(例如,路由器未静态配置为转发端口),您将不得不研究类似UDP 打孔的东西。无论哪种方式,为了在没有某种中央服务器的情况下发现一个新节点,您都必须依赖某种多播。