我不知道该在哪里问这个问题,所以它就在这里。这更像是一个网络技术问题,但任何建议都会有所帮助。
假设,我想连接到位于多个网关后面的一台机器。假设我想从我的办公室计算机连接到我的家庭计算机。我的家用电脑在ISP的网关后面,然后在家里的无线路由器后面。假设我知道他们所有人的IP地址。(ISP网关的全局IP、ISP n/w内无线路由器的本地IP和家庭内计算机的本地IP )。如何启动与家庭计算机的TCP连接?标准的berkeley套接字程序只需要一个IP,所以我只能连接到拥有全局IP的机器。
有解决方案吗?我对berkeley套接字的看法正确吗?
谢谢。
发布于 2011-06-25 13:57:20
在运营商的合作下,是完全可能的。ISP提供私有地址这一事实应该会促使您迁移到另一个地址。
您想要的概念称为DNAT或Port Forwarding。
假设您决定访问PC上的端口1234。PC的地址为Local2。无线路由器(在包含ISP的网络中)的地址为Local1。
ISP路由器必须执行Local1:X -> Local2:1234
Public:1234 -> Local1:X转换
X意味着可以使用任何端口。
发布于 2011-07-22 00:35:07
您只需知道目的IP地址即可从应用程序进行连接,网关地址用于转发(路由)由OS网络堆栈处理的数据包。但是,如果目的地位于NAT之后,您将只知道目的地的NAT设备的公共IP地址。即使在这种情况下,您所拥有的也只是一个IP地址,并且您并不真正知道是否存在NAT。
如果您的目的地是固定的,您可以在NAT设备上设置端口转发(如果您可以控制它)。否则,您就会意识到NAT是纯粹的邪恶。
在您的情况下,您似乎希望连接到您的家庭计算机。如果您的无线设备具有公用IP地址,则可以在该地址上设置端口转发,以便将端口上的所有传入通信转发到家庭计算机上的端口。
https://stackoverflow.com/questions/6473535
复制相似问题