Краткий ответ: отслеживание соединения NAT
Следует помнить, что подавляющее большинство маршрутизаторов в Интернете IPv4 являются маршрутизаторами NAT.
Большинство реализаций NAT выполняет интеллектуальное отслеживание. Когда вы отправляете UDP от внутреннего клиента куда-то, у вас будет порт назначения и порт источника.
Если трафик поступает с перевернутыми портами, то этот трафик будет перенаправлен обратно вашему клиенту и разрешен в большинстве брандмауэров.
NAT/брандмауэры с отслеживанием определяют эти пакеты как связанные и пересылают их обратно.
Пример на основе комментариев с сервер
в порту 5000
UDP
- Клиент отправляет пакет для
сервер: 5000
, источник клиент: 5001
- Первый маршрутизатор NAT увидит пакет с IP-адресом источника и портом
клиент: 5001
, и пункт назначения сервер: 5000
.
- Маршрутизатор отправляет это по пути и будет иметь
Совет NAT: порт NAT
- Сервер получает это и создает ответ на
Совет NAT: порт NAT
который имеет источник сервер: 5000
- NAT получает это и имеет источник
сервер: 5000
пункт назначения Совет NAT: порт NAT
, который соответствует отправленному пакету (но имеет местами источник и пункт назначения)
- NAT отправляет это на
клиент: 5001
еще с исходником сервер: 5000
Исходный IP+порт и IP+порт назначения создают комбинацию, которую можно отследить. (там больше деталей, но это основы)
Еще немного чтения Но я должен найти лучшую документацию по этому вопросу, а не просто ссылаться на неофициальные свидетельства из того, что я видел.