
Допустим, у меня есть маршрутизатор, на одном из интерфейсов которого есть публичный IP-адрес, а на другом — частный, скажем, 192.168.1.1/24. Затем к этому второму интерфейсу подключен компьютер, который также имеет частный IP-адрес (192.168.1.2/24). Теперь компьютер хочет отправить пакет на какой-то публичный IP-адрес, скажем, 11.12.13.14, поэтому я думаю, что он поместит этот публичный адрес в поле назначения IP-пакета, не так ли?
Но как этот пакет доставляется на маршрутизатор, если локальный IP-адрес маршрутизатора (и шлюз по умолчанию компьютера) — 192.168.1.1?
Это кажется очень простым вопросом, но мне действительно трудно понять, как это работает.
решение1
Сеть с Интернетом и локальной сетью настраивается следующим образом.
Ваша сеть подключена к интернету через модем. Модем может обмениваться информацией из интернета и в интернет только с одним устройством.
Обычно в вашей сети есть более одного устройства. Чтобы эти устройства могли взаимодействовать друг с другом, вам нужно что-то с несколькими сетевыми портами и немного программного обеспечения для управления этим. Раньше это был сетевой концентратор. Концентратор в основном копирует входящий трафик на все порты, и тот, кто слушает, отвечает.
Исследования позволили этим устройствам стать умными, и вот как был создан коммутатор. Коммутатор немного отличается от концентратора. Он попытается выяснить, кто является пунктом назначения, передавая новое соединение на все порты и наблюдая, кто отвечает. Когда он получает ответ на порт, он помечает этот порт IP-адресом, который был указан в первоначальном запросе, и направляет весь трафик для этого IP-адреса на этот порт, не передавая его на все остальные порты.
Модем и коммутатор не могут использоваться вместе для подключения локальных ПК к Интернету, поэтому было создано новое устройство, называемое Маршрутизатором. Маршрутизатор находится между модемом и коммутатором. Маршрутизатор обычно оснащен дополнительными функциями, такими как DHCP-сервер, позволяющий управлять локальной сетью. Маршрутизатор будет иметь таблицу поиска, которая поможет выяснить, должен ли IP-адрес быть локальным или в Интернете. Он также будет иметь таблицу с сопоставлениями портов, чтобы вы могли открыть порт из Интернета и перенаправить его трафик на локальное устройство.
Итак. Допустим, ПК1 с IP: 192.168.1.2 отправляет пакет на 192.168.1.3. Пакет передается из сетевой карты по подключенному кабелю. Пакеты достигают порта на коммутаторе.
На коммутаторе включены 3 порта: порт WAN, который идет к маршрутизатору, порт 1, который является 192.168.1.2 (сам) и порт 2, который является 192.168.1.3. Маршрутизатор передаст его на порт WAN и порт 2, если он уже не выяснил, что 192.168.1.3 принадлежит и отправляет пакет непосредственно на этот порт.
Допустим, ваш компьютер теперь передает пакет на 11.22.33.44. Пакет проходит через сетевую карту и снова достигает коммутатора. У него нет коллекции этого IP-адреса, поэтому он отправляет его на все порты. Маршрутизатор получает пакет и пересылает его модему, который передает его в Интернет.
Чуть позже интернет отвечает, и с модема приходит пакет. Он пересылается на маршрутизатор, который распознает, что это ответ на предыдущий пакет (через uPNP), и пересылает его на коммутатор. Коммутатор пересылает его обратно на ваш порт.
Вот как вкратце работает маршрутизатор.
Надеюсь, это имело смысл. :)
Также, если ваш вопрос заключается в том, что 2 устройства имеют одинаковый IP, вы не можете иметь 2 устройства с одинаковым IP-адресом. Вы получите конфликт IP-адресов, и сеть не будет работать правильно.
решение2
В дополнение к предыдущему ответу вы спросили:
Итак, маршрутизатор получает пакет, предназначенный для 11.22.33.44, хотя его адрес на локальном (LAN) порту (через который пришел пакет) — 192.168.1.1?
Да, потому что ваш компьютер физически подключен к маршрутизатору через Ethernet-соединение или Wi-Fi-соединение. Это физическое соединение, по которому вы отправляете весь свой сетевой трафик (все IP-пакеты проходят через один и тот же физический MAC-адрес, чтобы достичь маршрутизатора). У вашего маршрутизатора есть IP-адрес, как вы сказали, 192.168.1.1, и это IP вашего шлюза по умолчанию, так что любой входящий трафик с этого адреса будет распознаваться как идущий из сети через маршрутизатор.
Однако не забывайте, что вы физически отправляете каждый сетевой пакет через соединение Wi-Fi или Ethernet, а эти соединения имеют более низкий уровень, чем IP, поэтому все ваши пакеты отправляются на маршрутизатор через физическое соединение, независимо от содержимого их протокола TCP/IP (IP-адрес источника, IP-адрес назначения, порт источника, порт назначения).
Итак, независимо от вашего исходного IP или IP назначения ваших пакетов, все ваши IP-пакеты достигают маршрутизатора через проводное или беспроводное соединение, и оттуда маршрутизатор или любое подобное устройство решает, что с ними делать, проверять ли исходный IP и порт вашего пакета, чтобы отправлять любой ответный трафик, который соответствует IP и порту вашего ПК обратно на него (маршрутизатор), или отправлять весь ответный трафик на каждое устройство, подключенное к маршрутизатору, для проверки ответа, как в коммутаторе или концентраторе. Разница, как сказано в первом ответе, заключается в том, что концентратор всегда отправляет весь трафик всем устройствам, связанным с ним, для проверки ответа, в то время как коммутатор делает это только до получения одного ответа, а затем помечает это устройство для этого соединения, и дальнейшая проверка не требуется.