每次通过3G连接UDP端口都会改变

我使用基于java的UDP套接字与3G模块通信; 但是每次接收数据包的端口(有时是IP地址)都会发生变化,这是非常令人惊讶的。 这表示我无法为3G模块分配固定的IP /端口并与之通信,但仅依靠传入的数据包来获取目的地信息。 谁能告诉我为什么? 通过3G和普通互联网进行TCP / UDP连接有什么区别?提前感谢!

移动运营商通常都有NAT防火墙。 尝试通过发送应用程序可能忽略的UDP数据包来保持UDP“会话”活跃。 可能需要每30秒发送一次以保持NAT映射处于活动状态。

如果移动运营商的NAT防火墙没有从UDP源IP /端口目标IP /端口四重接收数据包,它将删除它并在应用程序的下一个数据包到达时分配新的IP /端口。