TCP и UDP - только два примера реализации транспортного уровня.Оба они используют термин «порт», чтобы определить, какое приложение должно получать входящий пакет, но они могут быть по-разному маршрутизированы / отфильтрованы маршрутизаторами / коммутаторами / брандмауэрами / и т. Д.
Так что ответ - нет.У вас будут похожие проблемы с открытием портов.За исключением того, что «TCP-порт xxx должен быть открыт», вы должны требовать «UDP-порт xxx должен быть открыт».
В большинстве домашних сетей правила брандмауэра разрешают исходящие пакеты (запросы) на любой удаленный порт (на вашем сервере дляпример, где этот порт должен быть открыт).И когда такой пакет проходит через маршрутизатор - он создает временное правило, позволяющее ответам возвращаться на локальный порт, с которого пакет запроса.
Итак, нормальный сценарий такой:
- Пакет создан с домашнего компьютера с IP
5.5.5.5
.Допустим, у него есть UDP-порт источника 55555
, IP-адрес источника 5.5.5.5
и порт назначения 8888
. - Пакет достигает домашнего маршрутизатора.Поскольку он идет изнутри - маршрутизатор позволяет ему проходить и создает правило, скажем, в течение 2 минут, чтобы разрешить пакеты, предназначенные для
5.5.5.5
на UDP-порт 55555
. - Пакет достигает корпоративного маршрутизатора до вашего сервера.У него есть правило для передачи пакетов по порту
8888
, поэтому пакет может отправляться. - Ваш сервер получает пакет и обрабатывает его.В ответ он создает пакет для IP
5.5.5.5
и UDP-порта 55555
. - Корпоративный маршрутизатор разрешает отправку ответа.
- Домашний маршрутизатор разрешает отправку ответа согласно временному правилу.
- Ваш компьютер получает ответ.
Корпоративные компьютеры и маршрутизаторы часто более ограничительны для обеспечения безопасности, поэтому вторая точка может ограничить пакет, если ваш пользователь (IP 5.5.5.5
) находится в корпоративной сети.
Это очень упрощенно, так как в действительности почти всегда есть такие вещи, как NAT, а правила более сложные ... Но в целом это дает представление о том, как это работает внутри.