Какой знак процента после адреса из IPAddress.ToString? - PullRequest
2 голосов
/ 07 ноября 2019

Вызывая метод ToString() для экземпляра IPAddress, который представляет адрес IPv6, я получаю текст со знаком процента после адреса. Это не задокументировано . Что это значит?

Возвращаемое значение выглядит так: fe80::1538:3f6c:a202:3af7%3

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

у вас есть Scoped literal IPv6 address,

Поиск по символу% на странице Википедии: https://en.wikipedia.org/wiki/IPv6_address

вставьте соответствующий абзац здесь:

Литеральная область IPv6адреса

Для адресов, отличных от глобальной области (как описано ниже), и, в частности, для локальных адресов каналов, выбор сетевого интерфейса для отправки пакета может зависеть от того, к какой зоне относится адрес:один и тот же адрес может быть действительным в разных зонах и использоваться другим хостом в каждой из этих зон. Даже если один адрес не используется в разных зонах, префиксы адресов для адресов в этих зонах все равно могут быть идентичными, что делает операционную систему неспособной выбрать исходящий интерфейс на основе информации в таблице маршрутизации (которая является префиксом-based).

Чтобы устранить неоднозначность в текстовых адресах, к адресу должен быть добавлен индекс зоны, разделенные знаком процента (%). [10]Синтаксис индексов зоны является строкой, зависящей от реализации, хотя числовые индексы зоны также должны поддерживаться повсеместно. Локальный адрес ссылки

fe80 :: 1ff: fe23: 4567: 890a может быть выражен как

fe80 :: 1ff: fe23: 4567: 890a% eth2 или:

fe80 :: 1ff: fe23: 4567: 890a% 3

1 голос
/ 07 ноября 2019

Указывает на ненулевое значение scope Id. Действительный идентификатор области видимости выглядит следующим образом.

Источник: Справочный источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...