Вы путаете уровни драйверов устройств и уровни IP стека.
На уровне IP 127.0.0.1 — это просто еще один IP-адрес, который обрабатывается одинаково.
На уровне драйвера пакеты, отправляемые через петлевой интерфейс, «просто и немедленно передаются обратно вверх по стеку сетевого программного обеспечения», а не отправляются на сетевую карту.
Эта концепция не является специфичной для ОС; различные ОС используют одну и ту же концепцию.
| --- > ---\
lo | |
| --- < ---/
| --- > --- |
veth0 | | veth1
| --- < --- |
Пара veth
— это пара устройств Ethernet с кабелем между ними. Реализовано как виртуальное устройство. Они предназначены для связи с контейнерами :один конец veth пары может быть перемещен в контейнер.
Вы можете думать о lo
как о паре veth
, за исключением того, что у них только один конец.
В действительности детали реализации не совпадают. Это, по крайней мере, ясно, когда вы смотрите на странный факт, что ping 127.0.0.2
работает, но вы не можете видеть адрес 127.0.0.2
в ip -4 addr
. Но вам не о чем беспокоиться, если только вы не используете эту «особенность» устаревшей версии Интернет-протокола или не разрабатываете ядро.
Более продвинутый способ думать о lo
заключается в том, что ему не нужно ничего делать , как и интерфейсу dummy
. (Вы можете играть сip link add type dummy
).
Когда вы пингуете IP-адрес интерфейса Ethernet или Wi-Fi вашего компьютера, он работает без отправки чего-либо через этот интерфейс . Это можно проверить с помощью tcpdump
или счетчиков пакетов в ip -s link
. То же верно для dummy
, и то же верно для . lo
Но если вы этого не заметили, вы можете использовать менее сложное объяснение. Это не вводит вас в заблуждение.
Существует некоторая разница в том, как используются lo
и dummy
, но это магический материал 127.0.0.2, который не важен для вопроса.