通过互联网发送UDP数据包

5
我正在尝试学习P2P / 分散网络的一些内部知识。我的问题是:假设我有两台计算机,分别命名为comp1和comp2。现在,comp1设置在我的家庭网络中,并位于路由器后面,而comp2位于我的办公室中,并且也在路由器后面。假设端口正确地转发,我是否可以像这样通过互联网发送UDP数据包来回传输数据?为更深入探究我正在研究如何在没有使用中央服务器的情况下新节点如何发现现有节点。感谢您!

是的,这是可能的。你在用什么编程语言工作? - Matt Ball
目前,我正在使用Python,但如果需要的话,我愿意更改。 - cskwrd
2个回答

4
假设,如你所说,端口已经正确转发,你可以向路由器后面的2个客户端发送UDP数据包。
在本地局域网中检测客户端的好方法可能是使用组播,但这在ISP(至少在英国)中没有广泛支持,因此不能依赖。多播被许多设备发现平台使用,例如mDNS(用于Apple的Bonjour)。

http://en.wikipedia.org/wiki/Multicast

它的基本原理是客户端订阅组,然后向该组发送消息。
我认为在互联网上发现新客户的最佳方式是拥有一个服务器,新客户联系该服务器以让其知道他们的存在,然后中央服务器将告诉所有其他客户端关于您的信息。例如,在P2P游戏中如《现代战争2》中使用此方法,并且这就是BitTorrent协议中“跟踪器”的作用。
这并不完全是分散的,但它可能是最容易实现的,也是最可靠的。

1
补充Dotmister的回答,如果端口未正确转发(例如,路由器未静态配置以转发端口),则必须查看类似UDP打洞的东西。无论哪种方式,在没有某种中央服务器的情况下发现新节点,您都必须依赖某种组播技术。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接