Мой вопрос касается не как он движется через интернет, а как он проходит через роутер на определенное устройство. Все устройства, подключенные к маршрутизатору в домашней сети, имеют одинаковый внешний IP-адрес. Допустим, устройство A загружает страницу, и пакеты отправляются из внешнего источника в маршрутизатор, поскольку пакеты знают внешний IP-адрес устройства A и могут получить доступ к маршрутизатору. Но как теперь добраться до устройства А? Как маршрутизатор узнает, что нужно отправить его на устройство A вместо устройства B?
Я думаю, что это касается NAT, но я просто ищу логическое объяснение того, что NAT делает для достижения этой цели.
Ответы:
Когда вы инициируете соединение с внешним сайтом, маршрутизатор каждый раз использует другой номер порта источника ... затем он использует этот номер порта источника (куда возвращаются данные) в качестве ключа для поиска, на какой машине из вашей внутренней сети поступил запрос. Это называется преобразованием адреса PORT (в отличие от преобразования сетевого адреса, когда у вас есть несколько сетевых адресов, доступных для вашего маршрутизатора).
источник
Обычно все устройства из домашней сети имеют разные внутренние адреса (частный адрес, всегда 192.168.0.1 ~ 192.168.0.255).
Когда пакет отправляется из домашней сети (скажем, Устройство A: 192.168.0.123), когда он проходит через маршрутизатор, маршрутизатор преобразует частный адрес во внешний адрес маршрутизатора (предположим, это 140.191.2.5), и маршрутизатор также записывает это отображение в его NAT.
Когда ответ возвращается, маршрутизатор сопоставляет NAT и находит исходный источник устройства A.
поэтому устройство A в конечном итоге получит пакет.
Это просто концепция, для более подробной информации, пожалуйста, обратитесь к вики: NAT.
источник