символы после % (которые в вашем примере являются числами) являются идентификатором интерфейса. Эти символы используются для идентификации "сетевого интерфейса", который люди часто называют"сетевой картой". Например, это может помочь определить, будет ли пакет использовать проводную карту 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" ссылается к локальным сетям гигабита.
теперь, вот сложная часть: Если вы хотите пропинговать удаленный адрес, вам может потребоваться Использовать IPv6-адрес удаленной системы, но локальный идентификатор интерфейса системы. Так, например, если я использую компьютер а и у меня есть локальный IPv6-адрес fe80:: 1, подключенный к интерфейсу номер 14, и я хочу пинговать компьютер Б, и он имеет локальный IPv6-адрес fe80:: 2, прикрепленный к его интерфейсу номер 16, то это то, что я хотел бы использовать:
ping fe80::2%14
так ping
команда пошлет пакет ICMPv6 к дистанционному адресу IPv6 (fd80::2), который принадлежит к дистанционному компьютеру, и будет использовать интерфейс с Идентификатор 14 для этого. Идентификатор интерфейса 14-это номер системы, которую я использую, а не удаленной системы.
теперь давайте посмотрим, почему это может потребоваться.
если я хочу, чтобы пинг Гугла IPv6-адрес (который 2607:f8b0:400А:802::200Е в то время я писал этот ответ), то таблица маршрутизации будет проверить что сетевая карта обрабатывает адреса, начинающиеся с 2607:f8b0:400А:802. В таблице маршрутизации будет указано, что ни одна из моих сетевых карт не подключена напрямую к сети, используя адреса, которые начинаются с 2607: f8b0:400a: 802, так что мой компьютер будет в конечном итоге с помощью адреса "шлюз". Если бы я подключался к другой сети, которая является частью организации, в которой я работаю, у меня мог бы быть специальный адрес "шлюза", который направляет трафик в частную сеть. В этом случае у меня нет более конкретного шлюза, поэтому я буду использовать "шлюз по умолчанию"IPv6. Именно так IPv6 работает большую часть времени, за исключением локальных для канала адресов. Это также, как IPv4 работал больше всего тогдашний. (Я упростил этот пример, приняв размер подсети IPv6 /64, поскольку описание всего процесса сделало бы это описание еще более длинным.)
по данным RFC 4291 раздел 2.8, каждый компьютер, использующий IPv6 должен назначить локальный для канала адрес для каждого сетевого интерфейса. RFC 4291 раздел 2.5.6 показывает биты, что локальные адреса должны начинаться с, которые вызывают локальные адреса для начала "на fe80:0000:0000:0000:" (хотя многие из этих нулей сворачиваются в двойную двоеточие). Тот факт, что эти адреса начинаются с "fe80:" также описывается RFC 4291 раздел 2.4.
при попытке пинговать удаленную систему (например, "2607:f8b0:400А:802"), как правило, обычно, чтобы выяснить, сети или подсети, адреса это часть, которая, глядя на биты в начале адреса. Затем эти биты используются для определения трафик.
однако этот процесс не работает для IPv6 link-local адреса, потому что каждый (рабочий, активный) сетевой интерфейс имеет локальный для канала адрес, начинающийся с "fe80:" в подсети, использующей префикс подсети / размер "/ 64". Если вы находитесь на ноутбуке, вы, вероятно, обнаружите, что ваша карта Ethernet и адаптер Wi-Fi, как ожидается, имеют такой адрес IPv6.
теперь, когда вы посылаете ваш пинг на fe80:: 2, вы хотите, чтобы ваш компьютер, чтобы отправить этот пакет из правой сетевой карты. Если у вас есть принтер, подключенный к проводной сети, вы не хотите отправлять трафик с вашей карты Wi-Fi, используя сетевой путь/маршрут, который не приведет к получению трафика на принтер. И если вы пытаетесь связаться к беспроводному устройству используя вашу карту Ви-Фи, то вы не хотите ваш трафик пойти вне карта локальных сетей.
решение, чтобы указать, какие сетевые устройства вы хотите воспользоваться. Таким образом, это цель идентификатор сети.