用于 UDP NAT 打孔的 PHP 和 Java...?

Posted

技术标签:

【中文标题】用于 UDP NAT 打孔的 PHP 和 Java...?【英文标题】:PHP and Java for UDP NAT hole punching...? 【发布时间】:2011-11-27 05:11:09 【问题描述】:

我想在我的一个 java 应用程序中使用 NAT 打孔,但我不知道从哪里开始。我想要一些示例代码开始...... (我可以访问带有套接字、cURL 和服务器套接字的 php 服务器,所以一些 PHP 服务器代码也将不胜感激......)

提前致谢。

编辑:对不起,我不够清楚。我想知道如何创建一个可以成为打孔“中间人”的 PHP 服务器。我还想知道如何制作一个可以连接到 PHP 服务器的 Java 应用程序,并在另一个 Java 应用程序连接到同一端口上的第一个应用程序时保持该连接。 (这是我对 NAT 打孔工作原理的印象)

【问题讨论】:

你做过研究吗?你至少在谷歌上搜索过“UDP NAT Hole Punching”吗?你了解需要什么吗? 是的,我愿意。我了解它是如何工作的,但不知道如何实际去做......(谷歌搜索了所有与它有关的东西,但我仍然找不到任何示例代码开始......) 如果您解释了您遇到问题的概念,您可能会获得更多帮助。您是否正在尝试实施打孔中介服务器?您是否已经拥有这样的服务器并想知道如何配置它?您目前的问题无法回答。 【参考方案1】:

您需要了解 STUN。您还需要了解可以进行 nat 遍历的条件(以及何时不能遍历)。您可以在 scribd 在线阅读实用 JXTA II 书籍的第 4 章。如果 STUN 是不可能的,那么你需要依靠 TURN。

我没有可提供的 PHP 代码示例,但是当您了解它的工作原理后,您会发现实现起来并不复杂。您只需要从中间人那里检索翻译后的 IP 地址和端口,基本上就是这样。

【讨论】:

也供参考 here 是 STUN RFC - 学习如何阅读这些总是一个好主意。大多数都写得很好,通常对主题有很好的介绍,或者至少链接到包含它的 RFC。 @Voo,我也有类似的问题。问题是它不是那么简单,就像我们不必自己实现 TCP 一样,我想知道是否有任何可用的开源库来实现这个功能,因为我已经了解了这些概念,但是实现整个协议太多了工作。如果您知道任何提供类似功能的免费库,我将不胜感激

以上是关于用于 UDP NAT 打孔的 PHP 和 Java...?的主要内容,如果未能解决你的问题,请参考以下文章

Java UDP STUN 打孔与 DatagramSocket

libutp (µTP) 和 NAT 遍历(UDP 打孔)

UDP 打孔在非对称 NAT 上失败

UDP打孔到期[关闭]

UDP打孔可能吗?

P2P 应用程序,打孔不适用于与端点无关的映射 NAT