Я только что проверил код отправителя / получателя udp, и я не мог понять переадресацию портов.

A - это мой компьютер в сети без переадресации, а B - сервер UDP на моем vps, который переадресован через порт.

  • Случай 1:

A начинает слушать пакеты udp на порту X. Vps (B) отправляет пакеты из порта Y, но A не получает их, потому что это не порт, перенаправленный.

  • случай 2:

Но когда A отправляет что-то на сервер (B) и сервер отвечает, я получаю ответ. Почему это не требует переадресации портов?

A может находиться в локальной сети с несколькими подключенными устройствами. Как маршрутизатор узнает, что пакет должен быть перенаправлен к A в случае 2, но не в случае 1?

2 ответа2

3

A может находиться в локальной сети с несколькими подключенными устройствами. Как маршрутизатор узнает, что пакет должен быть перенаправлен к A в случае 2, но не в случае 1?

Потому что маршрутизаторы, межсетевые экраны и устройства, которые используют NAT(преобразование сетевых адресов), имеют таблицу NAT, которая отслеживает входящие пакеты, которые будут преобразованы в NAT и отправлены по назначению.

Таблица NAT включает IP-адрес устройства источника, номер порта и протокол (TCP/UDP). Поэтому, когда A отправляет пакет на B (vps), устройство NAT добавляет запись в таблицу NAT, поэтому, когда пакет возвращается из B, оно считывает IP-адрес, порт и протокол назначения и пытается найти совпадают в таблице NAT, а NAT возвращает ответ серверу А.

A начинает прослушивать пакеты udp на порту X. vps (B) отправляет пакеты с порта Y, но A не получает их, потому что это не порт, перенаправленный.

Сервер A не получит пакет, потому что он будет сброшен вашим маршрутизатором. Поскольку переадресация портов отсутствует, а таблица NAT не содержит записи, которая соответствует IP-адресу назначения, порту и протоколу.

Если у вас есть устройство за брандмауэром или маршрутизатором, и вы используете NAT, вам нужно использовать переадресацию портов, чтобы маршрутизатор знал, что пакет, отправленный из B, включает в себя IP-адрес назначения, номер порта и протокол сервера A, должен быть перенаправлен на сервер A, а не удален.

Надеюсь, что я ответил на ваш вопрос.

0

А начать разговор с Б. Но Б не может начать разговор с А.

Как только A начал разговор с B, B может ответить на этот разговор. Но он все еще не может начать один с А.

немного более технический

С А вы запускаете сокет UDP. После запуска UDP-сокета A может отправлять пакеты B, а B может ответить на него, записав ответ в сокет. А затем читает ответ. B не может общаться с A, потому что A не позволяет ему запускать сокет с ними.

Откуда он знает это ты? Ну Б не знает кто ты. Маршрутизатор просто отслеживает ассоциацию сокетов, которая приводит к A.

Это очень похоже на просмотр в Интернете. Вы тот, кто скачивает файлы и просматривает их. Вы открываете соединение через загрузку файлов. И не наоборот. Веб-сервер просто отвечает на ваши запросы.

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