Магія маршруту 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
.
У роботі ми бачимо таблицю маршрутизації IP-адреси Windows
: Процес визначення маршруту :
Для кожного запису в таблиці маршрутизації виконайте трохи розумну логічну І між IP-адресою призначення та мережевою маскою. Порівняйте результат із ідентифікатором мережі запису на відповідність.
Список відповідних маршрутів складається. Вибирається маршрут, який має найдовший збіг (маршрут, який збігав найбільшу кількість бітів з IP-адресою призначення). Найдовший маршрут узгодження - це найбільш конкретний маршрут до IP-адреси призначення. Якщо знайдено кілька записів з найдовшим збігом (наприклад, кілька маршрутів до одного і того ж ідентифікатора мережі), маршрутизатор використовує найнижчий показник для вибору найкращого маршруту. Якщо існує декілька записів, які відповідають найдовшій і найнижчій метриці, маршрутизатор може вільно вибрати, яку таблицю маршрутизації використовувати.
Маршрутизація 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, і навпаки.