Почему UDP-сокет работает нормально на Wi-Fi, а не в сотовой сети?

Нубишский вопрос -

У меня есть скрипт Perl, работающий на сервере Linux, который открывает UDP-порт 7015.NETstat -ulnp показывает:

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

nmap -sU -p 7015 'имя хоста' на удаленном компьютере показывает:

7015/udp open|filtered unknown

Теперь, когда я запускаю клиентскую java-программу на устройстве Android и отправляю дейтаграмму, она работает без сбоев под Wi-Fi, но не через сотовую сеть - после выключения Wi-Fi или перемещения устройства за пределы диапазона Wi-Fi. Кроме возможной блокировки портов провайдером, почему этот сокет работает под Wi-Fi, а не GPRS?

1 ответ

Решение

Провайдеры сотовой связи делают странные вещи со своими политиками формирования трафика. Я готов поспорить, что они отбрасывают UDP. Я знаю, что некоторые сети и провайдеры имеют прозрачный прокси-сервер между вашей трубкой и сетью, который делает некоторые "непослушные" перезаписи вещей в пакеты. Иногда они переписывают пакеты и подменяют TCP-квитирование, чтобы вещи загружались быстрее.

В этом случае, держу пари, они молча отбрасывают этот трафик. Там, наверное, все, что вы можете с этим поделать. Когда я пишу приложения для Android, я стараюсь изо всех сил убедиться, что все соединения с хостом осуществляются через HTTP в форме RESTful API, так что в большинстве случаев он выглядит как обычное веб-соединение.,

Другие вопросы по тегам