Я создаю сервер ретрансляции для игры и хотел, чтобы он работал в большинстве ситуаций. Хост и клиенты будут подключаться к серверу ретрансляции, который работает как посредник.
Базовая информация:
Сервер ретрансляции (мы называем это R) получил статический IP.
Приложение (сервер или клиент) (мы называем это A) теоретически может использовать любой тип провайдера, например 3G/4G/Wifi ... и находиться за любым количеством брандмауэров /NAT /Proxys /Switches ... Подумайте, в худшем случае ,
Таким образом, мой вопрос, если A отправит UDP-сообщение R. R получит IP и порт, на который он может отправить ответ. Все ок.
Но, скажем, A (тот же A) отправляет еще одно UDP-сообщение R. Есть ли в мире какое-либо оборудование или программное обеспечение, которое может изменить IP-адрес или порт, на который будет отвечать R?
Примеры в теории:
Может ли NAT дать другой порт для ответа, даже если сообщение имеет тот же IP, что и раньше? Существует ли межсетевой экран, который разрешает только один ответ на исходящее сообщение? Может ли одно сообщение проходить через прокси, а другое сообщение не проходит через прокси, в результате чего одно из сообщений может иметь другой порт для отправки ответа? Если А использует 3G-соединение и водит машину, они переключают вышку сотовой связи. Может ли R получить другой IP или порт при использовании новой сотовой вышки? Опять же, подумайте о худшем случае.
Зачем?
Я спрашиваю, потому что мне интересно:
- Я могу использовать тот же IP-адрес и порт, который я получил из первого сообщения от A.
- Или я должен отправить сообщение время от времени, чтобы обновить информацию ответа.
- Или R должен отправлять только A, если A сначала отправляет сообщение, а я просто отправляю один ответ на каждый запрос.
№ 3 должен работать всегда, независимо от ситуации. Но я просто хочу знать, думаю ли я об этом.
Этот вопрос может быть слишком широким, но его трудно определить.