如何使用IP连接到多个网关后面的另一台机器?

时间:2011-06-24 20:40:09

标签: sockets tcp ip network-protocols

我不知道在哪里问这个,所以在这里。这更像是一个网络技术问题,但任何指针都会有所帮助。

假设,我想连接到多个网关后面的机器。假设我想从办公室电脑连接到家用电脑。我的家用电脑在ISP的网关后面,然后在家里的无线路由器后面。假设我知道所有这些的IP。 (我ISP的网关的全局IP,我的ISP的n / w内的无线路由器的本地IP以及我家中的家用机器的本地IP)。如何启动与家用计算机的TCP连接?标准的berkeley套接字程序只需要一个IP,因此我只能连接到具有全局IP的机器。

有解决方案吗?我对伯克利插座是否正确?

感谢。

2 个答案:

答案 0 :(得分:0)

完全有可能,与ISP的合作。 ISP提供私人地址这一事实应该促使您转移到另一个地址。

您所追求的概念称为DNAT或Port Forwarding

假设您决定在PC上访问端口1234。 PC的地址是Local2。无线路由器的地址(在与ISP的网络中)为Local1

  • 无线路由器必须执行翻译Local1:X -> Local2:1234
  • ISP路由器必须执行翻译Public:1234 -> Local1:X

X表示可以使用任何端口。

答案 1 :(得分:0)

您只需知道要从应用程序连接的目标IP地址,网关地址用于由OS网络堆栈处理的数据包的转发(路由)。但是,如果目标位于NAT后面,则只能知道目标NAT设备的公共IP地址。即使在这种情况下,你所拥有的只是一个IP地址,你真的不知道是否有NAT正在进行。

如果您的目的地是固定的,您可以在NAT设备上设置端口转发(如果您控制它)。否则,你才意识到NAT是纯粹的邪恶。

在您的情况下,您似乎想要连接到家用计算机。如果您的无线设备具有公共IP地址,则可以在其上设置端口转发,以将端口上的所有传入流量转发到家庭计算机上的端口。