说,我在防火墙,路由器等后面有两台计算机(即没有传入连接)。有没有什么方法可以通过TCP / UDP协议连接这两个,而不需要通过某个特殊的服务器?我知道Skype做了类似的事情,也许并不完全正确。
感谢。
答案 0 :(得分:3)
This heise-article解释了Skype如何使用UDP打孔来获得彼此连接的2个NAT防火墙实例。
尽管如此,您需要一个外部服务器进行初始连接信息交换,但您不必通过该特殊服务器进行更多路由。
答案 1 :(得分:1)
虽然我自己从未使用它,但我相信这就是UPnP所提供的,假设防火墙和路由器正在游戏中:
http://en.wikipedia.org/wiki/Universal_Plug_and_Play
请参阅NAT遍历一节。
编辑:
Wikipedia在NAT Traversal上有一整页:
http://en.wikipedia.org/wiki/NAT_traversal
答案 2 :(得分:1)
您必须使用P2P
答案 3 :(得分:1)
是的,这通常称为“发夹网络地址转换”,通常在进行地址转换的设备上实现。这与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)