通过互联网发送UDP数据包

通过互联网发送UDP数据包

问题描述:

我正在尝试学习一些P2P /分布式网络的来龙去脉。我的问题如下。假设我有两台名为comp1和comp2的机器。现在,comp1被安装在路由器后面的家庭网络中,comp2位于我的办公室,也位于路由器后面。我是否可以像这样在互联网上来回发送UDP数据包,当然假设端口已正确转发?为了提供更多关于我正在调查的内容的信息,我试图找出新节点如何在不使用中央服务器的情况下发现现有节点。通过互联网发送UDP数据包

谢谢!

+0

是的,这是可能的。你在用什么编程语言? – 2011-03-31 16:48:14

+0

目前,我正在使用python,但我愿意在需要时进行更改。 – cskwrd 2011-03-31 17:34:12

假设,正如你所说的端口正确转发,你可以发送UDP数据包到路由器后面的2个客户端。

在本地Intranet上检测客户端的好方法可能是使用多播,但是这并没有广泛支持ISP(至少在英国),因此不能被依赖。组播被许多设备发现的平台如mDNS(使用inApple的Bonjour)

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

(它主要的工作原理是客户订阅组,然后将消息发送到该组)

我想在互联网上发现新客户的最好方法是让一个新客户联系的服务器让它知道他们存在,然后中央服务器会告诉所有其他客户关于你。这在例如现代战争2等P2P游戏中使用,并且这是“跟踪者”在BitTorrent协议中所做的。

这不是完全分散的,但它可能是最容易实现的,也是最可靠的。

要添加到Dotmister的回应,如果端口不正确转发(例如路由器没有静态配置为转发端口),您将不得不寻找类似UDP hole punching。无论哪种方式,为了发现一个没有某种中央服务器的新节点,你必须依赖某种多播。