Магия маршрута 3 работает отчасти благодаря протоколу разрешения адресов
и частично из-за таблицы пересылки и частично из-за
алгоритмы маршрутизации.
Википедия говорит :
Протокол разрешения адресов (ARP) - это протокол связи, используемый для обнаружения адреса канального уровня, такого как MAC-адрес, связанный с данным адресом интернет-уровня (обычно адресом IPv4).
Многие операционные системы выполняют бесплатную ARP во время запуска , Это помогает решить проблемы, которые могли бы возникнуть, если бы, например, недавно была изменена сетевая карта (изменение сопоставления IP-адреса с MAC-адресом), а другие хосты по-прежнему имеют старое сопоставление в своих кэшах ARP.
Ubuntu при запуске объявила о своем присутствии и интерфейсах
в обеих подсетях, к которым он подключен, то есть ко всей вашей сети.
Любое подобное объявление сделано
Windows 10 была только внутри своей подсети, поэтому никогда не доходила до Windows 7.
Даже если такое объявление не было получено, Windows 7 будет,
чтобы найти соответствие, отправьте широковещательный пакет в сеть, используя
Протокол ARP, чтобы спросить "у кого есть 10.1.1.4".
Большой намек на то, что tracert
команда не перечислила маршрутизатор
среди хмеля. Запрос на 10.1.1.4
пошел прямо к компьютеру Ubuntu
хотя Windows 7 не знает о 10.1.1.4
,
То, что мы видим в действии, это Windows Таблица IP-маршрутизации: процесс определения маршрута :
Для каждой записи в таблице маршрутизации выполните побитовое логическое И между IP-адресом назначения и маской сети. Сравните
результат с идентификатором сети записи для совпадения.
Список подходящих маршрутов составляется. Маршрут с самым длинным совпадением (маршрут, который соответствует наибольшему количеству битов с
IP-адрес получателя). Самый длинный соответствующий маршрут
наиболее конкретный маршрут к IP-адресу назначения. Если несколько записей
с наибольшим совпадением (несколько маршрутов в одну сеть
ID, например), маршрутизатор использует самый низкий показатель, чтобы выбрать лучший
маршрут. Если существует несколько записей, которые являются самыми длинными совпадают и
самый низкий показатель, маршрутизатор может свободно выбирать, какую запись таблицы маршрутизации
использовать.
Маршрутизация Windows 7 нашла общий префикс между 10.1.1.4
а также 10.1.1.3
который был 10.1.1
,
Другими возможностями были маршрутизатор или Ubuntu на 10.1.0.99
,
но чей общий префикс был только 10.1
поэтому они не были выбраны.
Мы видим здесь в действии таблицу пересылки, которая построена сверху
таблицы маршрутизации.
В то время как таблица маршрутизации компилирует маршруты на основе IP-адресов, таблица пересылки содержит
соответствующие MAC-адреса.
Таким образом, таблица пересылки содержала запись: «Для 10.1.1.X
,
переслать пакет на MAC-адрес компьютера Ubuntu ".
Как только пакет прибыл на компьютер Ubuntu, он знал очень хорошо
как переслать 10.1.1.4
,
Так вот как пакеты из Windows 7 в конечном итоге на Windows 10,
и наоборот.