无需外部服务器进行NAT穿越

4
我一直在阅读TURN和STUN服务器的相关信息,因为我想开发一款浏览器对浏览器的应用程序,这样BrowserA(在NAT后面)就可以与BrowserB(在NAT后面)进行通信。在这种情况下,我认为我应该使用TURN协议。
我的问题是:是否有其他不需要外部物理服务器的解决方案?一个仅限软件的解决方案将是完美的。
谢谢。
3个回答

4

答案是否定的。

解释:NAT代表网络地址转换。它意味着将您设备的“私有”IP地址(仅在局域网内有效)翻译成一个“公共”IP地址,该地址在WAN上有效(即,在您的NAT另一侧的互联网上)。

问题在于,翻译后的地址仅从您的LAN外部可见。因此,您需要一个可达的设备来读取它并将其发送回给您(或其他对等方)。

当两个位于不同NAT后面且都具有私有IP地址的对等方需要建立连接时,您始终需要一个服务器/中央对等方来帮助建立连接。


2

http://samy.pl/pwnat/可以不需要中间人进行工作,但是将此问题移至serverfault可能会有所帮助 :)


1

谢谢。假设浏览器A(发起通信的浏览器)知道浏览器B的公共IP地址,但反过来不知道。对于这个问题的答案是相同的吗?


1
请记住,对于B向WAN上的设备建立的每个连接,可能会使用不同的公共地址。这取决于NAT的转换策略。你问题的子问题是A如何知道B的公共IP?是a)通过B向A建立的连接还是b)来自另一个看到B的公共转换的C对等体?你新问题的答案在大多数情况下是“是”。这个主题在Practical JXTA II书中有讨论,该书可以在线阅读Scribd。NAT穿越是一个复杂的主题。 - Jérôme Verstrynge

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