Как онлайн-игры отправляют UDP-пакеты через Интернет?

Как онлайн-игры отправляют UDP-пакеты через Интернет?

Как многопользовательские онлайн-игры, использующие UDP, доставляют пакеты между сетями через Интернет? Насколько я понимаю, клиентам придется включить переадресацию портов на своих маршрутизаторах, чтобы пакеты приходили на их компьютер. Этого ли требуют от игроков крупные онлайн-игры (WoW, Diablo и т. д.)?

Например, я недавно создал сервер, который обрабатывает трафик udp. Он просто возвращает обратно все, что отправил отправитель. Я развернул его на сервере в Интернете. Я могу вернуть эхо отправителю только после включения переадресации портов, но это не сработает, если в одной локальной сети находятся два отправителя.

решение1

Короткий ответ: отслеживание подключений NAT

Следует помнить, что подавляющее большинство маршрутизаторов в Интернете IPv4 — это маршрутизаторы NAT.

Большинство реализаций NAT используют интеллектуальное отслеживание. Когда вы отправляете UDP с внутреннего клиента куда-либо, у вас будут порт назначения и порт источника. Если трафик приходит с перепутанными портами, то этот трафик будет направлен обратно к вашему клиенту и разрешен в большинстве брандмауэров.

NAT/брандмауэры с отслеживанием определяют эти пакеты как связанные и пересылают их обратно.

Пример на основе комментариев с serverпортом 5000UDP

  • Клиент отправляет пакет для server:5000, источникclient:5001
  • Первый маршрутизатор NAT увидит пакет с исходным IP-адресом и портом client:5001, а также пунктом назначения server:5000.
  • Маршрутизатор отправляет это по своему пути и будет иметьNATip:NATport
  • Сервер получает это и создает ответ, NATip:NATportкоторый имеет источникserver:5000
  • NAT получает его и имеет источник server:5000назначения NATip:NATport, который соответствует отправленному пакету (но имеет источник и назначение в обратном порядке)
  • NAT отправляет это по- client:5001прежнему с источникомserver:5000

Исходный IP+порт и целевой IP+порт создают комбинацию, которую можно отслеживать. (есть более подробная информация, но это основы)

Еще немного чтенияНо мне следует поискать более подробную документацию по этому вопросу, а не просто ссылаться на отдельные свидетельства того, что я видел и испытал.

Связанный контент