Networking 如何使TCP服务器在路由器(NAT)后面工作而不需要任何重定向配置

Networking 如何使TCP服务器在路由器(NAT)后面工作而不需要任何重定向配置,networking,tcp,p2p,nat,Networking,Tcp,P2p,Nat,场景如下。我有两台机器A和B: A:客户端(NAT后面) 服务器(NAT后面) 我希望B能够监听任何给定的端口,这样A就可以通过特定的TCP端口向B发送数据包并接收任何响应。如果两台机器都没有落后于NAT,这是一个非常直接的前进过程。然而,我如何使它工作,使它工作,即使B是在路由器后面,而不必去改变路由器配置,启用一些端口转发等 例如,像torrent Client这样的对等程序如何在用户没有任何配置的情况下工作?您必须: 从nat设置端口转发 网关在服务器前面进入您的服务器软件正在运行的机器,

场景如下。我有两台机器A和B: A:客户端(NAT后面) 服务器(NAT后面)

我希望B能够监听任何给定的端口,这样A就可以通过特定的TCP端口向B发送数据包并接收任何响应。如果两台机器都没有落后于NAT,这是一个非常直接的前进过程。然而,我如何使它工作,使它工作,即使B是在路由器后面,而不必去改变路由器配置,启用一些端口转发等


例如,像torrent Client这样的对等程序如何在用户没有任何配置的情况下工作?

您必须:

  • 从nat设置端口转发 网关在服务器前面进入您的服务器软件正在运行的机器,并拥有客户端 连接到该服务器的IP地址 网关

  • 创建代理服务器 在两个nat网关之间,因此 您的服务器和客户端可以连接 对那件事。您的服务器和客户端 必须建立一个与那个的连接 将调解数据的代理 在这两个连接之间


  • 回答点对点程序的例子,一般来说:有一种叫做NAT路由器的技术,可以让它们后面的客户端将端口暴露给外部。这就是bittorrent客户端可以使用的,以便其他客户端可以直接连接到它们。

    代理服务器的替代方案是match making服务器。与代理所有流量不同,媒人只是进行协商,直到同伴可以相互交谈。这包括查找对等方的外部公共IP并与每个IP进行对话,以便防火墙/路由器知道对等方希望通信


    这就是所谓的,通常必须由媒人而不是同龄人自己来完成。一旦打孔,媒人就可以告诉对方对方,他们可以直接通信。

    打孔对于UDP通信有一定的了解,但也可以可靠地用于建立对等TCP流。以下是关于TCP和UDP的详细文章:


    您在serverfault上可能会有更好的运气。我假设这个问题是如何编写服务器以支持NAT,而不是如何配置它。但UPnP不只是一种自动化端口转发自动化的方法吗?关键是自动化-我假设问题中的“他”是用户。避免手动设置端口转发是UPnP的优点,也是UPnP的危险所在。像这样的AFAIK打孔只适用于UDP,并且只有在路由器上UDP端口映射一致的情况下才有效。我读过打孔的相关文章,TCP打孔也可以吗?然而,它可能不是那么容易实现,但我会尝试一下,因为这似乎是我正在寻找的。谢谢。你可以看看特技。但是我不推荐TCP打孔,因为它不会可靠地工作。我已经设想了这个解决方案,这个解决方案的唯一问题是,代理上的负载将相当大,成本很高。