Допустим, у меня есть клиент и сервер. Клиент находится за NAT, а сервер общедоступен.

Клиент хочет провести сеанс с сервером.

Допустим, клиент находится на 192.168.1.1, а NAT на 192.168.1.2 частных IP-адресов. И NAT на 50.0.0.1 и сервер на 50.0.0.2 публичных IP-адресов.

Клиент отправляет пакет UDP/IP (надеюсь, он похож на TCP/IP) на сервер. Этот пакет имеет исходный IP-адрес 192.168.1.1 и исходный порт, скажем, 1000 (выбран случайным образом), также имеет порт назначения 50.0.0.2 и порт назначения 2000, так как это приложение порта запускается на сервере.

Пакет TCP/IP поступает в NAT, который меняет исходный IP-адрес на 50.0.0.1 и порт, скажем, 5000 (выбран случайным образом) и направляет на сервер.

Сервер отправляет ответный пакет с IP-адресом назначения 50.0.0.1 и портом 5000.

NAT изменяет IP-адрес назначения пакета на 192.168.1.1 и порт назначения на 1000.

  1. Может ли сервер отправить много пакетов UDP/IP на один и тот же IP-адрес 50.0.0.1 и порт 5000, и все пакеты будут перенаправлены на клиентский порт 192.168.1.1 порт 1000?

  2. Если да, то как долго этот порт 5000 на открытой стороне NAT будет пересылать пакеты указанному клиенту?

  3. Только пакеты с исходным IP 50.0.0.2 и исходным портом 2000 будут пересылаться клиенту?

1 ответ1

3

ответы:

  1. Да.
  2. Это зависит от реализации NAT для устройства. В Linux это можно настроить, отредактировав /proc /sys /net /ipv4 /netfilter /ip_conntrack_udp_ *
  3. Да - если только "связанные" порты не распознаются NAT, в этом случае используются дополнительные модули NAT для определения того, что связано (по крайней мере, в Linux)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .