为什么 UDP 套接字在 wifi 上运行正常,但在蜂窝网络上却不行?

为什么 UDP 套接字在 wifi 上运行正常,但在蜂窝网络上却不行?

新手问题 -

我在 Linux 服务器上运行一个 perl 脚本,它打开 UDP 端口 7015。netstat -ulnp 显示:

udp        0      0 0.0.0.0:7015                0.0.0.0:*                               16365/perl

远程机器上的 nmap -sU -p 7015‘hostname’显示:

7015/udp open|filtered unknown

现在,当我在 Android 设备上运行客户端 Java 程序并发送数据报时,它在 wifi 下可以完美运行,但在蜂窝网络下则无法运行 - 在关闭 wifi 或将设备移出 wifi 范围后。除了提供商可能阻止端口外,为什么此套接字可以在 wifi 下运行,但在 GPRS 下却不行?

答案1

蜂窝网络提供商在流量整形策略方面做了一些奇怪的事情。我敢打赌他们正在放弃 UDP。我知道有些网络和提供商在你的手机和网络之间有一个透明代理,可以对数据包进行一些“顽皮”的重写。有时他们会重写数据包并欺骗 TCP 握手,以便看起来加载速度更快。

在这种情况下,我敢打赌他们会默默地丢弃这些流量。你可能对此无能为力。当我编写 Android 应用程序时,我会不遗余力地确保与主机的所有连接都是通过 HTTP 以 RESTful API 的形式进行的,因此在大多数情况下,它看起来就像一个正常的网络连接。

相关内容