连接到已知的外部IP和内部IP而无需端口转发

时间:2015-08-25 13:02:51

标签: python python-2.7 sockets networking tcp

我知道我朋友的外部IP(来自whatsmyip)和内部IP(例如192.168.1.x),他知道我的。如何与他建立TCP连接?

是否可以在没有任何端口转发的情况下执行此操作?或者我是否需要具有外部IP的服务器在我和他之间传输消息?

2 个答案:

答案 0 :(得分:2)

由于NAT(网络地址转换),您无法做到这一点。您通过whatsmyip.com看到的公共IP是路由器的公共IP。由于不同的机器可以连接到同一个路由器,所以它们将具有相同的公共IP(路由器的IP)。但是,每个人都有一个由路由器分配的私人IP。必须区分来自专用网络的每个传出连接,因此路由器将连接(专用IP,端口)转换为(不同端口)并将其添加到NAT表。

因此,如果您真的想要有一个有效的连接,您必须确定两端的内部和外部端口,并在路由器中进行端口转发。它有点棘手,因此使用TCP打孔等技术。

答案 1 :(得分:1)

基本上,您不应该(不应该)通过防火墙连接到您的朋友私人IP。这就是防火墙:-o

两种解决方案 - 最简单的是防火墙上的端口转发规则,第二种是建议两个客户端连接的外部服务器。