0

我想连接两台位于不同位置但连接到互联网的设备,一台运行 Windows 10 的计算机和一台智能手机 android。该应用程序是一个简单的 UDP 套接字,用于在它们之间传输数据,但我有不同的场景。

第一种情况。具有公共 IP 的 PC 和智能手机位于 3G/4G CG-NAT 之后) PC 打开 de UDP 套接字,智能手机连接到公共 IP,简单快捷。

第二个场景。带有公共 IP 的 NAT 后面的 PC 和 3G/4G NAT 后面的智能手机)

  • 选项 A) PC 配置一个端口转发到 NAT 到它的内部 IP,然后智能手机连接到该公共 IP。简单但不快,因为客户端必须配置 NAT。

  • 选项 B) 使用 UDP HOLE PUNCHING 在 NAT 上打开一个洞,然后客户端连接到它。

第 3 种情况。电脑和智能手机都在 CG-NAT 后面。 这是我的问题,PC 有时在 CG-NAT 后面,可能是因为 ISP 使用了这种技术,或者可能是因为使用另一部智能手机的 Wifi Hotspot 连接到互联网。据我所知,我无法使用任何协议(UPnP、PCP 等)配置 CG-NAT,因此无法进行端口转发。由于“端口随机化”,UDP 打孔不是一个选项,因此 ISP 会在 CG-NAT 之外更改我的源端口,并且每个连接都会更改。

我正在开发一个依赖于此的项目,在没有技术细节的情况下在 PC 和智能手机之间直接连接,并且始终在两个客户端都有互联网的情况下工作,不管是否有防火墙,在 NAT 后面等等……我正在考虑使用第三个云服务器使用公共 IP 连接它们,但只是为了建立连接,而不是转发所有流量,因为这会给我的项目增加延迟和流量成本,这是无法承受的。那么……有什么技术可以解决我的问题吗?

谢谢!

4

0 回答 0