IpPv6 Link-local и Site-local Addresses
IPv6 link-local и локальные адреса сайта называются адресами с областью действия. API сокетов Windows (Winsock) поддерживает элемент sin6_scope_id в структуре sockaddr_in6 для использования с адресами с областью действия. Для ipPv6-локальных адресов (fe80::/10 префикс), элемент sin6_scope_id в структуре sockaddr_in6 является номером интерфейса. Для IPv6-локальных адресов (fec0::/10) элемент sin6_scope_id в структуре sockaddr_in6 является идентификатором сайта.
Пример локального IPv6-адреса ссылки в интерфейсе #5 приведен ниже.
fe80::208:74ff:feda:625c%5
Следующая команда доступна в Windows XP с пакетом обновления 1 (SP1) и более поздними версиями для запроса и настройки IPv6 на локальном компьютере:
Изменения конфигурации, внесенные с помощью команд Netsh.exe, являются постоянными и не теряются при перезапуске компьютера или протокола IPv6.
До Windows XP с пакетом обновления 1 (SP1) конфигурация и управление IPv6 использовали несколько старых средств командной строки (Net.exe, Ipv6.exeи Ipsec6.exe) для настройки IPv6 и управления ими. Используя эти старые средства, изменения IPv6 не являются постоянными и теряются при перезапуске компьютера или протокола IPv6. Эти старые средства командной строки поддерживаются только в Windows XP.
В Windows XP с пакетом обновления 1 (SP1) отобразится список интерфейсов IPv6 на локальном компьютере, включая индекс интерфейса, имя интерфейса и различные другие свойства интерфейса.
интерфейс netsh ipv6 отображает интерфейс
В Windows XP с пакетом обновления 1 (SP1) следующая команда изменит идентификатор сайта, связанный с индексом интерфейса.
интерфейсе netsh ipv6 <InterfaceIndex или Name> siteid=value
В Windows XP следующая старая команда также изменит идентификатор сайта, связанный с локальным адресом сайта, на 3.
ipv6 rtu fec0::/10 3
Если вы отправляете или подключаетесь к адресу с областью действия, то элемент sin6_scope_id в структуре sockaddr_in6 может быть не указан (ноль), представляющий неоднозначный адрес области. Например, следующий локальный адрес ссылки является неоднозначным:
fe80::10
Если вы привязаны к ограниченному адресу, то элемент sin6_scope_id в структуре sockaddr_in6 должен содержать ненулевое значение, указывающее допустимый номер интерфейса для локального адреса ссылки или идентификатор сайта для локального адреса сайта.
Неоднозначные адреса с ограниченной областью
Если вы отправляете или подключаетесь к заданному адресу и не указали элемент sin6_scope_id в структуре sockaddr_in6, то адрес с областью действия является неоднозначным. Чтобы устранить эту проблему, протокол IPv6 сначала определяет, привязан ли сокет к исходному адресу. В этом случае связанный исходный адрес разрешает неоднозначность путем предоставления номера интерфейса или идентификатора сайта.
Если вы отправляете или подключаетесь к заданному адресу и не указали sin6_scope_id-член и не привязали исходный адрес, то протокол IPv6 проверяет таблицу маршрутизации. Например, следующая команда отобразит таблицу маршрутизации IPv6 на локальном компьютере:
интерфейс netsh ipv6 отображает маршрут
No Manual 256 fe80::/64 13 Local Area Connection
No Manual 256 fe80::/64 14 Wireless Network Connection
Это означает, что по умолчанию локальные адреса ссылки обрабатываются как по ссылке на интерфейс #13 и #14.
Неоднозначность возникает, когда локальный компьютер имеет несколько сетевых адаптеров. Например, команда netsh выше указывает на наличие двух сетевых интерфейсов (подключение к локальной зоне и беспроводное сетевое подключение). Если приложение задает локальный адрес целевой ссылки (fe80::10, например) без идентификатора области, не ясно, какой адаптер следует использовать для отправки пакета. При отправке пакета может страдать только одноадресная рассылка (fe80::/64) или многоадресная рассылка (ff00::/8) IPv6.
Обнаружение соседей
Если вы не указали элемент sin6_scope_id в структуре sockaddr_in6, не привязал исходный адрес и не указал маршрут для локальных адресов ссылки, то протокол IPv6 попытается устранить локальный адрес целевой ссылки. Для отправки определенного пакета используется один интерфейс. Этот первый пробный интерфейс считается наиболее предпочтительным интерфейсом. Если обнаружение соседей не удается разрешить локальный адрес ссылки в интерфейсе, то пакет, который будет отправлен, и система запоминает, что локальный адрес целевой ссылки недоступен через этот интерфейс. В следующем пакете, который будет отправлен во всех одинаковых условиях, для обнаружения соседей пробуется другой интерфейс. Этот процесс продолжается через каждый интерфейс на локальном компьютере для каждого нового пакета до тех пор, пока обнаружение соседей не отвечает на локальный адрес целевой ссылки или все возможные интерфейсы были проверены и завершились ошибкой. Каждый раз, когда попытка устранить соседа завершается ошибкой, один интерфейс устраняется для этого соседа.
Если адрес локальной связи назначения разрешается, этот интерфейс используется для отправки текущего пакета. Этот интерфейс также используется для всех последующих неоднозначно ограниченных пакетов, отправляемых в тот же адрес назначения локальной ссылки.
Если обнаружение соседей не удается разрешить локальный адрес целевой ссылки во всех интерфейсах, система пытается отправить пакет в наиболее предпочтительный интерфейс (первый пробованный интерфейс). Сетевой стек продолжает пытаться разрешить локальный адрес целевой ссылки в наиболее предпочтительном интерфейсе. Через некоторое время после сбоя обнаружения соседей на всех интерфейсах сетевой стек снова перезагрузит процесс и попытается разрешить локальный адрес целевой ссылки на всех интерфейсах. В настоящее время этот интервал времени, когда обнаружение соседей снова пробуется на всех интерфейсах составляет 60 секунд. Однако этот интервал времени может измениться в версиях Windows и не должен приниматься приложением.
Заметка
Если приложение привязывает тот же локальный адрес ссылки к другому интерфейсу после того, как обнаружение соседей разрешило локальный адрес ссылки, который не переопределит интерфейс с адресом назначения, возвращаемым обнаружением соседей.
Дополнительные сведения об обнаружении соседей для IP-адреса версии 6 см. в RFC4861 публикации IETF.
Связанные разделы