udp пакеты не возвращаются на устройство

Я пытаюсь связаться с UDP-сервером из небольшого java-кода на устройстве Android. При подключении к моему домашнему wi-fi интернету сервер связывается и отвечает на пакет с данными, который затем доходит до устройства.

Однако при подключении к мобильной сети запускается та же программа, пакеты ДЕЙСТВИТЕЛЬНО доходят до сервера, но пакет ответа сервера теряется. Кроме того, можно было бы сказать, что оператор мобильной связи телефона решает заблокировать входящий трафик UDP или что-то в этом роде, но я проверил и попытался получить доступ к своему домашнему серверу вместо предыдущего, и пакет UDP вернулся!

Итак, давайте подведем итог: Мобильная сеть отправляет UDP-пакеты без проблем, но некоторые IP-адреса теряют свои ответные пакеты. Я что-то упускаю? Есть ли общий порт UDP, который следует использовать для предотвращения этого? И как популярные UDP-приложения не испытывают таких проблем?


person Vladimir Gazbarov    schedule 15.10.2013    source источник


Ответы (1)


Вы не указали, из какого вы оператора или страны. Но многие мобильные сети реализуют NAT операторского класса (соединения с двойным NAT), которые может быть первопричиной.

Вы не описали протокол, который используете. Но способ, которым протокол UDP надежно работает между клиентом и сервером, заключается в том, что клиент НЕ указывает, какой локальный порт должен отвечать в протоколе. Скорее, сервер UDP отвечает, используя адрес, указанный API сокета, с которого был отправлен пакет. Клиент UDP прослушивает тот же порт и тот же сокет, откуда он отправил сообщение на сервер.

person selbie    schedule 24.10.2013