如何在没有任何重定向配置的情况下使TCP服务器在路由器(NAT)后面工作

时间:2009-10-02 20:10:33

标签: networking tcp p2p nat

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

我希望B能够侦听任何给定端口,以便A可以通过该特定TCP端口向B发送数据包并接收任何响应。如果两台机器都不在NAT后面,那么这是一个非常直接的过程。但是,我如何使其工作,以便即使B在路由器后面也可以工作,而不必更改路由器配置,启用某些端口转发等...

例如,如果没有用户配置任何东西,那么像torrent客户端这样的点对点程序如何工作?

4 个答案:

答案 0 :(得分:6)

回答Peer to Peer程序的例子,一般来说:有一种称为Universal Plug and Play的技术,NAT路由器可以使用它来允许它们后面的客户端向外部公开端口。这就是bittorrent客户可以使用的,所以其他客户可以直接连接到它们。

答案 1 :(得分:1)

您必须:

  1. 从nat设置端口转发 服务器前面的网关进入你的服务器软件运行的机器,并拥有客户端 连接到它的IP地址 网关。

  2. 创建代理服务器 介于两个nat之间,所以两者兼而有之 您的服务器和客户端可以连接 那个。您的服务器和客户端 必须建立一个连接 将调解数据的代理 在这两个连接之间。

答案 2 :(得分:0)

代理服务器的替代方案是匹配服务器。匹配制造商不是代理所有流量,而是进行协商,直到对等方可以相互通话。这包括查找对等体的外部公共IP并与每个IP进行通信,以便防火墙/路由器知道对等体希望进行通信。

这被称为hole punching,它通常必须由匹配者而不是同伴自己完成。一旦打孔,比赛制造者就可以告诉对方彼此,他们可以直接沟通。

答案 3 :(得分:0)

对于UDP通信,孔穿孔已经得到了很好的理解,但它也可以可靠地用于设置对等TCP流。这是关于TCP和UDP的详细文章:

http://www.brynosaurus.com/pub/net/p2pnat/