
CentOS в частности. Допустим, машина находится на 1.2.3.4, работает httpd и делает запросhttp://1.2.3.4, машина сразу понимает, что запрос адресован ей, и направляет его внутрь, или он отправляется наружу и обратно?
Мне интересно понять, как это работает.
решение1
Да, машина сразу узнает, что запрос предназначен для нее. Она делает это, сравнивая адрес назначения пакетов со всеми известными IP-адресами, назначенными сетевым интерфейсам, и помечая пакет какместный, обращаясь к специальной таблице маршрутизации ( ip route show table local
), которая автоматически обновляется правилами для локально назначенных IP-адресов, и заменяя сетевой интерфейс для доставки lo
, даже если адрес назначения не является 127.0.0.1
(попробуйте tcpdump -ni lo
выполнить ping-тестирование локального адреса).
Вы также можете использовать , ip route get 1.2.3.4
чтобы показать, как ядро Linux классифицирует маршрут ( local
) и через какой интерфейс оно доставит пакет, вместе с другой информацией, такой как шлюз и т. д.