2

Вопрос: Предполагая, что PAT включена на моем домашнем интернет-маршрутизаторе, как мой маршрутизатор узнает, на каких хостах демультиплексировать пакеты, когда он получает пакеты из Интернета?

Пример: в моей локальной сети есть 2 хоста. Каждый отправляет запрос на один и тот же сервер за одинаковой информацией. Каждый хост использует один и тот же порт. Как маршрутизатор узнает, какие пакеты должны куда идти? Каждый пакет должен иметь одинаковый адрес отправителя и получателя. Порты должны быть одинаковыми, если только нет какой-то магии портов, о которой я не знаю.

Мое предположение: я собираюсь предположить, что есть некоторые метаданные, о которых я не знаю, которые прикреплены к пакетам, которые каким-то образом идентифицируют каждый отдельный хост в частной сети. Но это не похоже на работу в следующем примере.

Пример: какой-то хост (другой) в другой сети хочет отправить пакет хосту (моему) в моей локальной сети. Другой хост отправляет пакет на публичный IP-адрес моей сети. Но так как мой хост не ожидает пакет, он не мог дать моему маршрутизатору метаданные о том, как демультиплексировать пакет. А другой хост не знает метаданных, кроме общедоступного IP-адреса моей сети.

3 ответа3

8

Устройства, выполняющие преобразование сетевых адресов, поддерживают таблицу перевода, которая включает информацию об IP-адресах источника и назначения и номерах портов. Комбинация исходного IP-адреса и номера порта, а также IP-адреса назначения и номера порта создает уникальный идентификатор для каждого сеанса.

0

Исходные порты.

Каждый клиент внутри NAT назначает случайный порт с большим числом в качестве порта источника их соединения с сервером.

Когда маршрутизатор транслирует запрос, он также устанавливает порт источника и отслеживает, какой порт источника ему назначен для какого соединения. Таким образом, веб-сервер отправляет обратно что-то с портом источника 80 и портом назначения 35201 (или любым другим), маршрутизатор ищет, какое из сетевых подключений клиента было назначено как 35201.

Обратите внимание, что это означает, что веб-сервер, вероятно, не будет знать, на какой исходный порт запросил исходный клиент, а на какой исходный порт его перевел маршрутизатор. (Исходный порт в запросе становится портом назначения в ответе.)

0

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

Чтобы разрешить трафик, поступающий на вашу локальную сеть из Интернета, можно было бы определить специальное правило переадресации портов, также известное как статический nat, чтобы вы сообщали маршрутизатору, когда трафик поступает, например, из Интернета на порт 80, перешлите этот трафик. к моему веб-серверу по локальной сети по ip и порту 192.168.1.5:80 например.

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