【发布时间】:2018-07-12 23:32:15
【问题描述】:
我在 NAT 后面的 android 设备上有一个服务器套接字,我想从另一个设备连接到这个套接字。我知道,我如何通过打孔来实现这一点,但我有一些问题。它适用于我的移动运营商,但我与其他运营商有问题。普遍的问题是不同的移动运营商有不同的 NAT 类型。有人有同样的问题吗?有哪些解决方案?
【问题讨论】:
-
一些移动运营商不仅使用 NAT,而且还设置了防火墙来阻止设备之间的所有流量。因此,可靠的设备到设备通信需要两个设备都连接到互联网上的服务器或设备之间的直接网络(蓝牙、Wifi 直连……)。
-
你不能。这就是为什么 NAT 是邪恶的,为什么 IPv6 是惊人的。另请参阅serverfault.com/questions/894488/…
-
当我使用打孔时,仅在我的国家的一家移动运营商中,它运行良好。
-
你能补充一些关于你是如何实现整体打孔的细节吗?
-
但那是真的。并非所有 nats 类型都支持打孔,因为它们不是标准化的。 en.wikipedia.org/wiki/TCP_hole_punching 另外,其他客户端设备也很重要。就像 NATS 和防火墙通常是 MODEM/ROUTER 问题(而不是 ISP)一样,我认为可能是另一部有问题的手机而不是他们的移动运营商。让 P2P 连接正常工作总是很困难,请确保这是最适合您的解决方案。