Символи після% (які у вашому прикладі бувають числами) є ідентифікатором інтерфейсу. Ці символи використовуються для ідентифікації "мережевого інтерфейсу", який люди часто називають "мережевою картою". Наприклад, це може допомогти визначити, чи буде пакет використовувати провідну карту Ethernet або бездротовий адаптер Wi-Fi.
Я здогадуюсь, що ви використовуєте Microsoft Windows. Він використовує числа як ідентифікатори інтерфейсу.
Як порівняння, Unix-подібні системи можуть використовувати літери після знаку%. наприклад:fe80::71a3:2b00:ddd3:753f%eth0
У цьому випадку ідентифікатор інтерфейсу eth0
, відповідає назві мережевої карти.
У Microsoft Windows можна отримати список ідентифікаторів (числових) інтерфейсів, скориставшись одним із командних рядків, що перевіряють таблицю маршрутизації. Я віддаю перевагу " netstat -nr
", оскільки це працює і в інших операційних системах, але Microsoft Windows також підтримує " route print
". Отриманий результат, про який повідомляється, швидше за все, буде довгий на екрані, тому будьте готові прокручуватися назад, якщо ви не підключите більше.
наприклад, у моїй системі:
===========================================================================
Interface List
14...5c f9 dd 6d 98 b8 ......Realtek PCIe GBE Family Controller
12...e0 06 e6 7e fc 4e ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
15...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
===========================================================================
У такому випадку така адреса, як fe80 :: 71a3: 2b00: ddd3: 753f% 14, стосується мого сімейного контролера Realtek PCIe GBE. "GBE" посилається на Gigabit Ethernet.
Тепер ось складна частина: Якщо ви хочете ввести пінг у віддалену адресу, можливо, вам доведеться використовувати IPv6 адресу віддаленої системи, але ідентифікатор інтерфейсу локальної системи. Так, наприклад, якщо я використовую комп'ютер A і у мене локальна IPv6 адреса fe80 :: 1, приєднана до інтерфейсу № 14, і я хочу пінг-комп’ютер B, і до нього приєднано локальну IPv6-адресу fe80 :: 2 його інтерфейс номер 16, то я б це використав:
ping fe80::2%14
Таким чином ping
команда відправить пакет ICMPv6 на віддалену адресу IPv6 (fd80 :: 2), яка належить до віддаленого комп'ютера, і буде використовувати для цього інтерфейс з ідентифікатором 14. Ідентифікатор інтерфейсу 14 - це номер системи, яку я використовую, а не віддаленої системи.
Тепер давайте розберемося, чому це може знадобитися.
Якщо я хочу ввести адресу IPv6 Google (яка на момент написання цієї відповіді - 2607: f8b0: 400a: 802 :: 200e), тоді таблиця маршрутизації перевірить, яка мережна карта обробляє адреси, які починаються з 2607: f8b0: 400a: 802. У таблиці маршрутизації буде вказано, що жодна з моїх мережевих карт не підключена безпосередньо до мережі за допомогою адрес, які починаються з 2607: f8b0: 400a: 802, тому мій комп'ютер в кінцевому підсумку використовує адресу "шлюзу". Якщо я підключався до іншої мережі, яка є частиною організації, над якою я працюю, у мене може бути спеціальна адреса "шлюзу", яка спрямовує трафік до приватної мережі. У цьому випадку у мене немає більш конкретного шлюзу, тому я буду використовувати IPv6 "шлюз за замовчуванням". Ось як працює IPv6 більшу частину часу, за винятком локальних адрес посилань. Це також, як IPv4 працював більшу частину часу.
Згідно з розділом 2.8 RFC 4291 , кожен комп'ютер, що використовує IPv6, повинен призначити локальну адресу для кожного мережевого інтерфейсу. Розділ 2.5.6 RFC 4291 показує біти, з яких повинні починатися локальні адреси, які змушують локальні адреси починатися з "fe80: 0000: 0000: 0000:" (хоча багато з цих нулів згортаються до подвійної двокрапки ). Те, що ці адреси починаються з "fe80:", також описано у розділі 2.4 RFC 4291 .
Якщо ви намагаєтеся пінгувати віддалену систему (наприклад, "2607: f8b0: 400a: 802"), загальним процесом є звичайно з'ясувати мережу або підмережу, до якої належить адреса, що робиться, переглядаючи біти. на початку адреси. Потім ці біти використовуються для визначення маршруту руху.
Однак цей процес не працює для локальної адреси IPv6, оскільки кожен окремий (оперативний, активний) мережевий інтерфейс має локальну адресу, що починається з "fe80:" у підмережі, використовуючи префікс підрозетки / розмір "/ 64 ". Якщо ви перебуваєте на ноутбуці, ви, ймовірно, виявите, що як на вашій Ethernet-картці, так і на адаптері Wi-Fi очікується така IPv6-адреса.
Тепер, коли ви відправляєте свій ping на fe80 :: 2, ви хочете, щоб ваш комп'ютер надіслав цей пакет із потрібної мережевої карти. Якщо у вас принтер, підключений до дротової мережі, ви не хочете відправляти трафік на свою Wi-Fi карту, використовуючи мережевий шлях / маршрут, що не призведе до того, що трафік потрапить на принтер. І якщо ви намагаєтеся зв’язатися з бездротовим пристроєм за допомогою своєї Wi-Fi-картки, ви не хочете, щоб ваш трафік виходив з Ethernet-карти.
Рішення полягає в тому, щоб ви вказали, на якому мережному пристрої ви хочете використовувати трафік. Отже, саме така мета ідентифікатора мережі.