Поделиться через


Параметры сокета IPPROTO_IPV6

В следующих таблицах описаны параметры сокета IPPROTO_IPV6 , которые применяются к сокетам, созданным для семейства адресов IPv6 (AF_INET6). Дополнительные сведения о получении и настройке параметров сокета см. на справочных страницах функций gets и setsockopt.

Чтобы перечислить протоколы и обнаружить поддерживаемые свойства для каждого установленного протокола, используйте функцию WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32.

Для некоторых вариантов сокета требуется больше объяснения, чем эти таблицы могут передаваться; такие параметры содержат ссылки на дополнительные сведения.

Параметры

Вариант get set Тип Optval Description
IP_ORIGINAL_ARRIVAL_IF yes yes DWORD (логический) Указывает, должна ли функция LPFN_WSARECVMSG (WSARecvMsg) возвращать необязательные данные управления, содержащие исходный интерфейс прибытия, в котором пакет был получен для сокетов диаграммы данных. Этот параметр используется с технологиями перехода IPv6 (6to4, ISATAP и Teredo туннелями, например), которые обеспечивают автоматическое туннелирование адресов и автоматическое туннелирование узлов iPv6 для одноадресного трафика IPv6, когда узлы IPv6 должны проходить через ip4-сети для достижения других сетей IPv6. Пакеты IPv6 отправляются c туннелированием в пакетах IPv4. Этот параметр позволяет исходному интерфейсу IPv4, в котором был получен пакет в структуре WSAMSG.
IPV6_ADD_IFLIST yes DWORD (IF_INDEX) Добавляет индекс интерфейса в IFLIST, связанный с параметром IP_IFLIST .
IPV6_ADD_MEMBERSHIP yes ipv6_mreq Присоединяйте сокет к предоставленной группе многоадресной рассылки в указанном интерфейсе. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_DEL_IFLIST yes DWORD (IF_INDEX) Удаляет индекс интерфейса из IFLIST, связанного с параметром IP_IFLIST . Записи можно удалить только приложением, поэтому помните, что записи могут устареть после удаления интерфейса.
IPV6_DROP_MEMBERSHIP yes ipv6_mreq Оставьте предоставленную группу многоадресной рассылки из данного интерфейса. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_GET_IFLIST yes DWORD[] (IF_INDEX[]) Возвращает текущий параметр IFLIST, связанный с параметром IP_IFLIST . Возвращает ошибку, если IP_IFLIST не включена.
IPV6_HDRINCL yes yes DWORD(boolean) Указывает, что приложение предоставляет заголовок IPv6 для всех исходящих данных. Если параметр optval имеет значение 1 для вызова setockopt, параметр включен. Если для параметра optval задано значение 0, параметр отключен. Значение по умолчанию отключено. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). Поставщик служб TCP/IP, поддерживающий SOCK_RAW, также должен поддерживать IPV6_HDRINCL.
IPV6_HOPLIMIT yes yes DWORD (логический) Указывает, что сведения о прыжке (TTL) должны быть возвращены в функции LPFN_WSARECVMSG (WSARecvMsg). Если для вызова setockopt задано значение 1, параметр включен. Если задано значение 0, параметр отключен. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_IFLIST yes yes DWORD (логический) Возвращает или задает состояние IP_IFLIST сокета. Если для этого параметра задано значение true, прием datagram ограничен интерфейсами, которые находятся в IFLIST. Диаграммы данных, полученные на любых других интерфейсах, игнорируются. IFLIST запускается пусто. Используйте IP_ADD_IFLIST и IP_DEL_IFLIST для редактирования IFLIST.
IPV6_JOIN_GROUP yes ipv6_mreq То же, что и IPV6_ADD_MEMBERSHIP
IPV6_LEAVE_GROUP yes ipv6_mreq То же, что и IPV6_DROP_MEMBERSHIP
IPV6_MTU yes DWORD Возвращает оценку MTU пути системы. Сокет должен быть подключен.
IPV6_MTU_DISCOVER yes yes DWORD (PMTUD_STATE) Возвращает или задает состояние обнаружения MTU пути для сокета. Значение по умолчанию — IP_PMTUDISC_NOT_SET. Для сокетов потоков IP_PMTUDISC_NOT_SET и IP_PMTUDISC_DO будет выполнять обнаружение MTU пути. IP_PMTUDISC_DONT и IP_PMTUDISC_PROBE отключит обнаружение MTU пути. Для сокетов диаграммы данных, если задано значение IP_PMTUDISC_DO , попытки отправки пакетов больше пути MTU приведет к ошибке. Если задано значение IP_PMTUDISC_DONT, пакеты будут фрагментированы в соответствии с интерфейсом MTU. Если задано значение IP_PMTUDISC_PROBE, попытка отправить пакеты, превышающие MTU интерфейса, приведет к ошибке.
IPV6_MULTICAST_HOPS yes yes DWORD Возвращает или задает значение TTL, связанное с трафиком многоадресной рассылки IPv6 в сокете. Недопустимо задать значение TTL больше 255. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_MULTICAST_IF yes yes DWORD Возвращает или задает исходящий интерфейс для отправки трафика многоадресной рассылки IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения многоадресного трафика IPv6. Этот параметр важен для многодомных компьютеров. Входное значение для настройки этого параметра — это 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Функцию GetAdaptersAddresses можно использовать для получения сведений об индексе интерфейса. Если для вызова setockopt задано значение NULL, используется интерфейс IPv6 по умолчанию. Если значение optval равно нулю, интерфейс по умолчанию для получения многоадресной рассылки указывается для отправки многоадресного трафика. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv6 многоадресной рассылки в порядке байтов узла.
IPV6_MULTICAST_LOOP yes yes DWORD (логический) Указывает, что данные многоадресной рассылки, отправляемые на сокеты, будут переданы в буфер получения сокетов, если он также присоединен к целевой группе многоадресной рассылки. Если для вызова setockopt задано значение 1, параметр включен. Если задано значение 0, параметр отключен. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_PKTINFO yes yes DWORD (логический) Указывает, что сведения о пакете должны возвращаться функцией LPFN_WSARECVMSG (WSARecvMsg).
IPV6_PROTECTION_LEVEL yes yes INT Включает ограничение сокета в указанную область, например адреса с тем же локальным или локальным префиксом сайта. Предоставляет различные уровни ограничений и параметры по умолчанию. Дополнительные сведения см . в IPV6_PROTECTION_LEVEL .
IPV6_RECVIF yes yes DWORD (логический) Указывает, должен ли стек IP заполнять буфер элемента управления сведениями о том, какой интерфейс получил пакет с сокетом диаграммы данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие интерфейс, в котором был получен пакет для сокетов диаграммы данных. Этот параметр позволяет интерфейсу IPv6, в котором был получен пакет в структуре WSAMSG. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_RECVTCLASS yes yes DWORD (логический) Указывает, должен ли стек IP заполнять буфер управления сообщением, содержащим поле заголовка класса IPv6 трафика на полученной диаграмме данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие значение поля заголовка класса IPv6 класса трафика полученной диаграммы данных. Этот параметр позволяет возвращать поле заголовка класса IPv6 класса трафика полученной диаграммы данных в структуре WSAMSG. Возвращаемый тип сообщения будет IPV6_TCLASS. Будут возвращены все биты DSCP и ECN поля класса трафика. Этот параметр действителен только для сокетов диаграммы данных (тип сокета должен быть SOCK_DGRAM).
IPV6_RECVECN yes yes DWORD (логический) Указывает, должен ли стек IP заполнять буфер управления сообщением, содержащим биты ECN поля заголовка IPv6 класса трафика на полученной диаграмме данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие биты ECN поля поля заголовка класса IPv6 класса трафика полученной диаграммы данных. Этот параметр позволяет возвращать биты ECN поля заголовка класса IPv6 класса трафика полученной диаграммы данных в структуре WSAMSG. Возвращаемый тип сообщения будет IPV6_ECN. Будут возвращены все 2 биты ECN поля класса трафика. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). Для обеспечения безопасности типов следует использовать функции WSAGetRecvIPEcn и WSASetRecvIPEcn вместо использования параметра сокета напрямую.
IPV6_UNICAST_HOPS yes yes DWORD Возвращает или задает текущее значение TTL, связанное с сокетом IPv6 для одноадресного трафика. Недопустимо задать значение TTL больше 255.
IPV6_UNICAST_IF yes yes DWORD (IF_INDEX) Возвращает или задает исходящий интерфейс для отправки трафика IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения трафика IPv6. Этот параметр важен для многодомных компьютеров. Входное значение для настройки этого параметра — это 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Функцию GetAdaptersAddresses можно использовать для получения сведений об индексе интерфейса. Если значение optval равно нулю, интерфейс по умолчанию для отправки трафика IPv6 имеет значение unspecified. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv6 в порядке байтов узла.
IPV6_USER_MTU yes yes DWORD Получает или задает верхнюю границу на уровне IP MTU (в байтах) для заданного сокета. Если значение выше, чем оценка MTU системы (которую можно получить на подключенном сокете, запросив параметр сокета IPV6_MTU ), то этот параметр не действует. Если значение меньше, исходящие пакеты больше, чем это, будут фрагментированы или не будут отправляться в зависимости от значения IPV6_DONTFRAG. Значение по умолчанию — IP_UNSPECIFIED_USER_MTU (MAXULONG). Для обеспечения безопасности типов следует использовать функции WSAGetIPUserMtu и WSASetIPUserMtu вместо прямого использования параметра сокета.
IPV6_V6ONLY yes yes DWORD (логический) Указывает, ограничен ли сокет, созданный для семейства адресов AF_INET6, связью через IPv6. Сокеты, созданные для семейства адресов AF_INET6, можно использовать для связи и через IPv6, и через IPv4. Некоторым приложениям может быть нужно ограничивать использование сокета, созданного для семейства адресов AF_INET6, связью через IPv6. Если это значение ненулевое (по умолчанию в Windows), сокет, созданный для семейства адресов AF_INET6, можно использовать только для отправки и получения пакетов IPv6. Если это значение равно нулю, сокет, созданный для семейства адресов AF_INET6, может использоваться для отправки и получения пакетов IPv6 и IPv4. Обратите внимание, что возможность взаимодействия с адресами IPv4 требует использования адресов, сопоставленных по IPv4. Этот параметр сокета поддерживается в Windows Vista и более поздних версиях.

Поддержка Windows для параметров сокета IPPROTO_IPV6

Вариант Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF yes yes yes
IPV6_ADD_IFLIST Начиная с Windows 10 версии 1803
IPV6_ADD_MEMBERSHIP yes yes yes yes yes
IPV6_DEL_IFLIST Начиная с Windows 10 версии 1803
IPV6_DROP_MEMBERSHIP yes yes yes yes yes
IPV6_GET_IFLIST Начиная с Windows 10 версии 1803
IPV6_HDRINCL yes yes yes yes yes
IPV6_HOPLIMIT yes yes yes yes yes
IPV6_IFLIST Начиная с Windows 10 версии 1803
IPV6_JOIN_GROUP yes yes yes yes yes
IPV6_LEAVE_GROUP yes yes yes yes yes
IPV6_MULTICAST_HOPS yes yes yes yes yes
IPV6_MULTICAST_IF yes yes yes yes yes
IPV6_MULTICAST_LOOP yes yes yes yes yes
IPV6_PKTINFO yes yes yes yes yes
IPV6_PROTECTION_LEVEL yes yes yes yes yes
IPV6_RECVIF yes yes yes yes yes
IPV6_UNICAST_HOPS yes yes yes yes yes
IPV6_UNICAST_IF yes yes yes yes yes
IPV6_V6ONLY yes yes yes yes yes

Вариант Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP yes yes
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP yes yes
IPV6_GET_IFLIST
IPV6_HDRINCL да yes
IPV6_HOPLIMIT да yes
IPV6_IFLIST
IPV6_JOIN_GROUP yes yes
IPV6_LEAVE_GROUP yes yes
IPV6_MULTICAST_HOPS yes yes
IPV6_MULTICAST_IF yes yes
IPV6_MULTICAST_LOOP yes yes
IPV6_PKTINFO yes yes
IPV6_PROTECTION_LEVEL yes yes
IPV6_RECVIF
IPV6_UNICAST_HOPS yes yes
IPV6_UNICAST_IF
IPV6_V6ONLY

Замечания

В пакете СРЕДСТВ разработки программного обеспечения Microsoft Windows (SDK), выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась и IPPROTO_IPV6 уровень определяется в файле заголовка Ws2def.h, который автоматически входит в файл заголовка Winsock2.h. Параметры сокета IPPROTO_IPV6 определяются в файле заголовка Ws2ipdef.h , который автоматически включается в файл заголовка Ws2tcpip.h . Файлы заголовков Ws2def.h и Ws2ipdef.h никогда не должны использоваться напрямую.

Параметр сокета IP_ORIGINAL_ARRIVAL_IF поддерживается в Windows Server 2008 R2, а также в Windows 7.

Требования

Требование Значение
Верхний колонтитул
Ws2def.h (включая Winsock2.h);
Winsock2.h в Windows Server 2003 и Windows XP