比如说,我在防火墙、路由器等后面有两台计算机(即没有传入连接)。有什么方法可以通过 TCP/UDP 协议将两者连接起来,而无需通过某处的特殊服务器?我知道 Skype 会做类似的事情,也许并不完全如此。
谢谢。
比如说,我在防火墙、路由器等后面有两台计算机(即没有传入连接)。有什么方法可以通过 TCP/UDP 协议将两者连接起来,而无需通过某处的特殊服务器?我知道 Skype 会做类似的事情,也许并不完全如此。
谢谢。
这篇 heise-article解释了 Skype 如何使用 UDP 打孔来使 2 个 NAT 防火墙实例相互连接。
尽管如此,您需要一个外部服务器来进行初始连接信息交换,但您不必通过该特殊服务器进行更多路由。
虽然我自己从未使用过它,但我相信这是 UPnP 提供的,假设在玩游戏的方式中有防火墙和路由器:
http://en.wikipedia.org/wiki/Universal_Plug_and_Play
请参阅 NAT 穿越部分。
编辑:
维基百科有一整页关于 NAT Traversal:
http://en.wikipedia.org/wiki/NAT_traversal
您将不得不使用P2P
是的,这通常称为“发夹网络地址转换”,通常在进行地址转换的设备上实现。正如其他一些评论所暗示的那样,这与 NAT 遍历或打孔并不完全相同。您正试图让同一 NAT 后面的两台主机相互通信。
我将查看下面的链接以查看各种 NAT 实现并决定哪个选项适合您。这是给您的图表和链接:
http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_7-3/anatomy.html
如果您需要在客户端软件上实现此功能,您可能需要研究类似 avahi 或其他“zeroconf”选项来发现本地安装。
http://en.wikipedia.org/wiki/Avahi_(software)