Сетевой стек сначала ищет целевой IP в своей таблице маршрутизации, из этого он определяет две вещи.
- Через какой интерфейс должен быть отправлен пакет.
- Каков IP-адрес следующего перехода. Если в таблице маршрутизации не указан следующий переход, в качестве следующего перехода используется IP-адрес получателя.
Обратите внимание, что IP-адрес следующего перехода является чисто локальной концепцией, он никогда не становится частью пакета, отправляемого по сети.
Если пакет должен быть отправлен на многоточечном канальном уровне (например, Ethernet и т. Д.), ОС затем ищет следующий переход в своей таблице arp (ipv4) или соседнего обнаружения (ipv6). Если он находит там нестандартную запись, то у него есть MAC-адрес, который ему нужен, и он может отправить пакет.
Если он не имеет пригодной для использования записи, он удерживает пакеты, предназначенные для следующего перехода, и отправляет запрос на поиск MAC-адреса. Механизмы здесь немного отличаются между v4 и v6.
В v4 arp запросы отправляются. Обычно это широковещательная рассылка, но в некоторых случаях, если у хоста есть устаревшая запись, он может сначала выполнить одноадресный запрос и вернуться к широковещательной передаче только в случае сбоя. Ответ обычно одноадресный.
В версии 6 запросы на отправку соседей отправляются по адресу многоадресной рассылки, созданному из адреса следующего перехода. Цель отвечает одноадресной рекламой соседа. Хосты также могут отправлять объявления о соседях группе «многоадресная рассылка всех узлов» (или, по сути, широковещательной), чтобы обновить записи в своих кешах обнаружения соседних узлов.