我不知道在哪里问这个,所以在这里。这更像是一个网络技术问题,但任何指针都会有所帮助。
假设,我想连接到多个网关后面的机器。假设我想从办公室电脑连接到家用电脑。我的家用电脑在ISP的网关后面,然后在家里的无线路由器后面。假设我知道所有这些的IP。 (我ISP的网关的全局IP,我的ISP的n / w内的无线路由器的本地IP以及我家中的家用机器的本地IP)。如何启动与家用计算机的TCP连接?标准的berkeley套接字程序只需要一个IP,因此我只能连接到具有全局IP的机器。
有解决方案吗?我对伯克利插座是否正确?
感谢。
答案 0 :(得分:0)
完全有可能,与ISP的合作。 ISP提供私人地址这一事实应该促使您转移到另一个地址。
您所追求的概念称为DNAT或Port Forwarding。
假设您决定在PC上访问端口1234
。 PC的地址是Local2
。无线路由器的地址(在与ISP的网络中)为Local1
。
Local1:X -> Local2:1234
Public:1234 -> Local1:X
X
表示可以使用任何端口。
答案 1 :(得分:0)
您只需知道要从应用程序连接的目标IP地址,网关地址用于由OS网络堆栈处理的数据包的转发(路由)。但是,如果目标位于NAT后面,则只能知道目标NAT设备的公共IP地址。即使在这种情况下,你所拥有的只是一个IP地址,你真的不知道是否有NAT正在进行。
如果您的目的地是固定的,您可以在NAT设备上设置端口转发(如果您控制它)。否则,你才意识到NAT是纯粹的邪恶。
在您的情况下,您似乎想要连接到家用计算机。如果您的无线设备具有公共IP地址,则可以在其上设置端口转发,以将端口上的所有传入流量转发到家庭计算机上的端口。