Я создаю сервер ретрансляции для игры и хотел, чтобы он работал в большинстве ситуаций. Хост и клиенты будут подключаться к серверу ретрансляции, который работает как посредник.

Базовая информация:

Сервер ретрансляции (мы называем это 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 или порт при использовании новой сотовой вышки? Опять же, подумайте о худшем случае.

Зачем?

Я спрашиваю, потому что мне интересно:

  1. Я могу использовать тот же IP-адрес и порт, который я получил из первого сообщения от A.
  2. Или я должен отправить сообщение время от времени, чтобы обновить информацию ответа.
  3. Или R должен отправлять только A, если A сначала отправляет сообщение, а я просто отправляю один ответ на каждый запрос.

№ 3 должен работать всегда, независимо от ситуации. Но я просто хочу знать, думаю ли я об этом.

Этот вопрос может быть слишком широким, но его трудно определить.

0