Назад | Перейти на главную страницу

Как маршрутизатор определяет место назначения пакета?

У меня основной сетевой вопрос. Два ПК обмениваются данными по WLAN. Оба ПК находятся за маршрутизаторами или модемами.

Оба компьютера имеют одинаковый публичный IP-адрес. Этот общедоступный IP-адрес в большинстве случаев принадлежит либо маршрутизатору, либо модему. За этими маршрутизаторами и модемами может быть несколько компьютеров. Как ПК общаются? Я могу понять, что пакеты могут достигать этих маршрутизаторов или модемов, а затем Интернет, но что после этого? В пакете IP-адрес назначения устанавливается как общедоступный IP-адрес. Когда пакет возвращается, как маршрутизатор или модем решает, куда отправить пакет? Кто-нибудь может мне это объяснить, пожалуйста.

Большая часть механики, стоящей за этим тайна является NAT-маскировка:

  • Ваш компьютер общается с внешним

например, ваш компьютер находится в частной сети с IP 10.1.2.3.
Ваш маршрутизатор запоминает IP / порт ПК и инициализировал соединение с удаленным IP / портом (WAN). Таким образом, когда есть ответ по тому же каналу, маршрутизатор пересылает пакет обратно на ПК на своей стороне LAN.

  • Внешнее устройство обменивается данными с вашим ПК

В этом случае доп. устройство инициализирует соединение, и, следовательно, маршрутизатор не знает, какому клиенту 10.x.x.x он должен переслать пакет.
Вот почему маршрутизатору нужны особые настройки, которые говорят, например, если ваш компьютер является веб-сервером (порт http)

  HTTP (WAN) ==> (LAN) 10.1.2.3:80

в нем говорится, что пакеты, поступающие на порт HTTP, поступают на внутренний адрес локальной сети 10.1.2.3 (ваш компьютер) на порт 80.

Хороший вопрос. На самом деле существует несколько стратегий, но, по сути, маршрутизатор хранит таблицу всех NAT-подключений (порт клиента, IP-адрес клиента, IP-адрес назначения, порт назначения). Когда возвратный пакет возвращается, он определяет, какому клиенту его переслать, в зависимости от того, откуда пришел пакет и с какого порта.

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

Некоторые маршрутизаторы, например Устройства Cisco выполняют рандомизацию порядковых номеров по соображениям безопасности - это может помочь скрыть, сколько и какие типы клиентов находятся за NAT. Он также может попытаться защитить клиентов от типов атак, нацеленных на порядковый номер, или угадать следующий порядковый номер для следующего соединения.

Меня немного озадачивает твое «большую часть времени»: я думаю, что либо всегда, либо никогда. Если общедоступный IP-адрес ПК всегда совпадает с его маршрутизатором / модемом, то локальная сеть использует NAT для предоставления доступа к ПК из-за пределов локальной сети. => см. первый ответ

Если общедоступный IP-адрес ПК не совпадает с его маршрутизатором / модемом, то локальная сеть доступна напрямую из WAN (если мы игнорируем возможные брандмауэры, которые могут блокировать путь). => см. второй ответ

Если вы только начинаете понимать, как работает маршрутизация, вам, вероятно, сначала следует сосредоточиться на последнем сценарии и, возможно, также упростить его следующим образом:

PC1 <-LAN1-> Router1 <-WAN_link-> Router2 <-LAN2-> PC2 

(вроде бы вокруг ничего не было)

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

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

если становится слишком сложно управлять этими маршрутами вручную, используются протоколы динамического распределения маршрутов, например ПОКОЙСЯ С МИРОМ

даже более сложные протоколы знают больше о глобальном распределении IP-блоков (через Номера AS) и попробуйте принять решение о том, куда направлять пакеты по стоимости и расстоянию. примеры BGP и OSPF