方案如下。我有两台机器A和B: 答:客户端(NAT后面) B:服务器(NAT后面)
我希望B能够侦听任何给定端口,以便A可以通过该特定TCP端口向B发送数据包并接收任何响应。如果两台机器都不在NAT后面,那么这是一个非常直接的过程。但是,我如何使其工作,以便即使B在路由器后面也可以工作,而不必更改路由器配置,启用某些端口转发等...
例如,如果没有用户配置任何东西,那么像torrent客户端这样的点对点程序如何工作?
答案 0 :(得分:6)
回答Peer to Peer程序的例子,一般来说:有一种称为Universal Plug and Play的技术,NAT路由器可以使用它来允许它们后面的客户端向外部公开端口。这就是bittorrent客户可以使用的,所以其他客户可以直接连接到它们。
答案 1 :(得分:1)
您必须:
从nat设置端口转发 服务器前面的网关进入你的服务器软件运行的机器,并拥有客户端 连接到它的IP地址 网关。
创建代理服务器 介于两个nat之间,所以两者兼而有之 您的服务器和客户端可以连接 那个。您的服务器和客户端 必须建立一个连接 将调解数据的代理 在这两个连接之间。
答案 2 :(得分:0)
代理服务器的替代方案是匹配服务器。匹配制造商不是代理所有流量,而是进行协商,直到对等方可以相互通话。这包括查找对等体的外部公共IP并与每个IP进行通信,以便防火墙/路由器知道对等体希望进行通信。
这被称为hole punching,它通常必须由匹配者而不是同伴自己完成。一旦打孔,比赛制造者就可以告诉对方彼此,他们可以直接沟通。
答案 3 :(得分:0)
对于UDP通信,孔穿孔已经得到了很好的理解,但它也可以可靠地用于设置对等TCP流。这是关于TCP和UDP的详细文章: