Как маршрутизатор узнает, на какое устройство отправлять пакеты? [Дубликат]

15

Мой вопрос касается не как он движется через интернет, а как он проходит через роутер на определенное устройство. Все устройства, подключенные к маршрутизатору в домашней сети, имеют одинаковый внешний IP-адрес. Допустим, устройство A загружает страницу, и пакеты отправляются из внешнего источника в маршрутизатор, поскольку пакеты знают внешний IP-адрес устройства A и могут получить доступ к маршрутизатору. Но как теперь добраться до устройства А? Как маршрутизатор узнает, что нужно отправить его на устройство A вместо устройства B?

Я думаю, что это касается NAT, но я просто ищу логическое объяснение того, что NAT делает для достижения этой цели.


источник
Я не могу дать вам очень конкретный ответ, но маршрутизатор отслеживает, куда направляется запрос и кто его отправил. Когда внешний источник отвечает, маршрутизатор просто проверяет, какое устройство попыталось связаться с внешним источником, и перенаправляет ответ на это устройство. Если вам нужна дополнительная информация, посмотрите на NAT.
Джек Хамфрис
Этот вопрос принадлежит
Superuser.com

Ответы:

11

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

Майкл Брей
источник
1
это объясняет такие вещи, как TCP-соединения, но некоторые приложения не имеют соединения. Как насчет пакетов UDP? Что делать, если вы размещаете сервер на 1 устройстве, даже если он использует TCP для соединения, он не сможет инициализировать соединение, пока маршрутизатор не узнает, на каком устройстве работает сервер.
1
Для UDP-подключений обычно требуется предварительно определить порт на маршрутизаторе, который можно использовать для маршрутизации на определенное устройство. Это функция «переадресации портов» маршрутизаторов, и ее можно использовать как для входящих UDP-пакетов (в ответ на исходящее сообщение или свежий входящий пакет), так и для входящих TCP-пакетов (например, инициированных удаленным клиентом). вашего собственного ПК.)
Майкл Брей
1

Обычно все устройства из домашней сети имеют разные внутренние адреса (частный адрес, всегда 192.168.0.1 ~ 192.168.0.255).

Когда пакет отправляется из домашней сети (скажем, Устройство A: 192.168.0.123), когда он проходит через маршрутизатор, маршрутизатор преобразует частный адрес во внешний адрес маршрутизатора (предположим, это 140.191.2.5), и маршрутизатор также записывает это отображение в его NAT.

Когда ответ возвращается, маршрутизатор сопоставляет NAT и находит исходный источник устройства A.

поэтому устройство A в конечном итоге получит пакет.

Это просто концепция, для более подробной информации, пожалуйста, обратитесь к вики: NAT.

NCola.L
источник