首页 文章

NAT背后的NAT连接

提问于
浏览
8

我遇到了一个有趣的问题 . 基本上我有两部手机都在NAT之后 . 我想使用UDP直接在2台设备之间进行通信 .

我知道如果我发起从电话到服务器的连接,那么我可以将数据推回到与电话的连接(即从收到消息的同一端口将其发送回收到的相同IP和端口) . 所以我可以通过将两部手机连接到服务器来轻松地在两台设备之间进行通信 . 然后将数据发送到服务器并将其重新路由回电话 . 这绕过了我可能遇到的任何NAT遍历问题 .

但是我宁愿只使用服务器将2个设备指向对方,然后让它们直接通信 . 我该怎么做呢?是否可以不使用像uPnP这样的东西?

任何帮助都会很有用!

Edit :我发现这个文件http://www.brynosaurus.com/pub/net/p2pnat/看起来发夹翻译看起来像是广泛支持的 . 我想知道移动ISP对UPnP的支持有多好?

2 回答

  • 4

    您正在寻找的是UDP穿孔,参见例如http://en.wikipedia.org/wiki/UDP_hole_punching

    基本思路很简单,您告诉每个 endpoints 要使用的端口,并且它们开始发送udp数据包 . NAT'ing设备在看到第一个传出数据包时会设置一个遍历规则,然后另一端的下一次尝试将匹配此遍历规则 .

  • 4

    您需要一个中介服务器,以便客户端可以知道它们的位置 . 然后由uPNP打开一个服务器,另一个连接到它 .

相关问题