Параметры сокета IPPROTO_IPV6
В следующих таблицах описаны IPPROTO_IPV6 параметры сокетов, которые применяются к сокетам, созданным для семейства адресов IPv6 (AF_INET6). Дополнительные сведения о получении и настройке параметров сокета см. на справочных страницах функций getsockopt и setsockopt .
Для перечисления протоколов и обнаружения поддерживаемых свойств для каждого установленного протокола используйте функцию WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32 .
Для некоторых параметров сокета требуется больше объяснений, чем эти таблицы могут передать; такие параметры содержат ссылки на дополнительные сведения.
Параметры
Параметр | get | set | Тип Optval | Описание |
---|---|---|---|---|
IP_ORIGINAL_ARRIVAL_IF | да | да | DWORD (логическое значение) | Указывает, должна ли функция LPFN_WSARECVMSG (WSARecvMsg) возвращать необязательные управляющие данные, содержащие исходный интерфейс поступления, в котором был получен пакет для сокетов датаграмм. Этот параметр используется с технологиями перехода IPv6 (например, 6to4, ISATAP и Teredo), которые обеспечивают назначение адресов и автоматическое туннелирование между узлами для одноадресного трафика IPv6, когда узлы IPv6 должны проходить через сети IP4, чтобы достичь других сетей IPv6. Пакеты IPv6 отправляются c туннелированием в пакетах IPv4. Этот параметр позволяет вернуть исходный интерфейс IPv4, в котором был получен пакет, в структуре WSAMSG . |
IPV6_ADD_IFLIST | да | DWORD (IF_INDEX) | Добавляет индекс интерфейса в параметр IFLIST, связанный с параметром IP_IFLIST . | |
IPV6_ADD_MEMBERSHIP | да | ipv6_mreq | Присоединение сокета к предоставленной группе многоадресной рассылки в указанном интерфейсе. Этот параметр действителен только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). | |
IPV6_DEL_IFLIST | да | DWORD (IF_INDEX) | Удаляет индекс интерфейса из списка IFLIST, связанного с параметром IP_IFLIST . Записи могут быть удалены только приложением, поэтому имейте в виду, что после удаления интерфейса записи могут устареть. | |
IPV6_DROP_MEMBERSHIP | да | ipv6_mreq | Оставьте предоставленную группу многоадресной рассылки из заданного интерфейса. Этот параметр действителен только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). | |
IPV6_GET_IFLIST | да | DWORD[] (IF_INDEX[]) | Возвращает текущий параметр IFLIST, связанный с параметром IP_IFLIST . Возвращает ошибку , если IP_IFLIST не включен. | |
IPV6_HDRINCL | да | да | DWORD(boolean) | Указывает, что приложение предоставляет заголовок IPv6 для всех исходящих данных. Если параметр optval имеет значение 1 при вызове setsockopt, параметр включен. Если параметр optval имеет значение 0, параметр отключается. По умолчанию эта политика отключена. Этот параметр допустим только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). Поставщик служб TCP/IP, поддерживающий SOCK_RAW, также должен поддерживать IPV6_HDRINCL. |
IPV6_HOPLIMIT | да | да | DWORD (логическое значение) | Указывает, что сведения о прыжке (TTL) должны возвращаться в функции LPFN_WSARECVMSG (WSARecvMsg). Если параметр optval имеет значение 1 при вызове setsockopt, параметр включен. Если задано значение 0, параметр отключен. Этот параметр допустим только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_IFLIST | да | да | DWORD (логическое значение) | Возвращает или задает состояние IP_IFLIST сокета. Если для этого параметра задано значение true, прием датаграмм ограничивается интерфейсами, которые находятся в IFLIST. Датаграммы, полученные в других интерфейсах, игнорируются. ЕСЛИLIST запускается пустым. Используйте IP_ADD_IFLIST и IP_DEL_IFLIST для изменения списка IFLIST. |
IPV6_JOIN_GROUP | да | ipv6_mreq | То же, что и IPV6_ADD_MEMBERSHIP | |
IPV6_LEAVE_GROUP | да | ipv6_mreq | То же, что и IPV6_DROP_MEMBERSHIP | |
IPV6_MTU | да | DWORD | Возвращает системную оценку MTU пути. Сокет должен быть подключен. | |
IPV6_MTU_DISCOVER | да | да | 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 | да | да | DWORD | Возвращает или задает значение срока жизни, связанное с многоадресным трафиком IPv6 в сокете. Недопустимо устанавливать для срока жизни значение больше 255. Этот параметр допустим только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_MULTICAST_IF | да | да | DWORD | Возвращает или задает исходящий интерфейс для отправки многоадресного трафика IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения многоадресного трафика IPv6. Этот параметр важен для компьютеров с несколькими адресами. Входным значением для установки этого параметра является 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Для получения сведений об индексе интерфейса можно использовать функцию GetAdaptersAddresses . Если параметр optval имеет значение NULL при вызове метода setsockopt, используется интерфейс IPv6 по умолчанию. Если optval равно нулю, для отправки многоадресного трафика указывается интерфейс по умолчанию для получения многоадресной рассылки. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки многоадресного трафика IPv6 в порядке байтов узла. |
IPV6_MULTICAST_LOOP | да | да | DWORD (логическое значение) | Указывает, что данные многоадресной рассылки, отправленные в сокет, будут передаваться в буфер получения сокетов, если они также присоединены к целевой группе многоадресной рассылки. Если параметр optval имеет значение 1 при вызове метода setsockopt, параметр включен. Если задано значение 0, параметр отключен. Этот параметр допустим только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_PKTINFO | да | да | DWORD (логическое значение) | Указывает, что сведения о пакете должны быть возвращены функцией LPFN_WSARECVMSG (WSARecvMsg). |
IPV6_PROTECTION_LEVEL | да | да | INT | Включает ограничение сокета для указанного область, например адресов с тем же локальным префиксом ссылки или локального сайта. Предоставляет различные уровни ограничений и параметры по умолчанию. Дополнительные сведения см . в разделе IPV6_PROTECTION_LEVEL . |
IPV6_RECVIF | да | да | DWORD (логическое значение) | Указывает, должен ли стек IP-адресов заполнять буфер управления сведениями о том, какой интерфейс получил пакет с сокетом датаграммы. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные управляющие данные, содержащие интерфейс, в котором был получен пакет для сокетов датаграмм. Этот параметр позволяет возвращать интерфейс IPv6, в котором был получен пакет, в структуре WSAMSG . Этот параметр допустим только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_RECVTCLASS | да | да | DWORD (логическое значение) | Указывает, должен ли стек IP заполнить буфер элемента управления сообщением, содержащим поле заголовка IPv6 класса трафика на полученной датаграмме. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные управляющие данные, содержащие значение поля заголовка IPv6 класса трафика полученной датаграммы. Этот параметр позволяет возвращать поле заголовка IPv6 класса трафика полученной датаграммы в структуре WSAMSG . Возвращаемый тип сообщения будет IPV6_TCLASS. Будут возвращены все биты DSCP и ECN поля Класс трафика. Этот параметр действителен только для сокетов датаграмм (тип сокета должен быть SOCK_DGRAM). |
IPV6_UNICAST_HOPS | да | да | DWORD | Возвращает или задает текущее значение срока жизни, связанное с сокетом IPv6 для одноадресного трафика. Недопустимо устанавливать для срока жизни значение больше 255. |
IPV6_UNICAST_IF | да | да | DWORD (IF_INDEX) | Возвращает или задает исходящий интерфейс для отправки трафика IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения трафика IPv6. Этот параметр важен для компьютеров с несколькими адресами. Входным значением для установки этого параметра является 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Для получения сведений об индексе интерфейса можно использовать функцию GetAdaptersAddresses . Если optval равно нулю, для интерфейса по умолчанию для отправки трафика IPv6 задано значение unspecified. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv6 в порядке байтов узла. |
IPV6_USER_MTU | да | да | DWORD | Возвращает или задает верхнюю границу MTU уровня IP (в байтах) для заданного сокета. Если значение выше, чем оценка системой пути MTU (которую можно получить в подключенном сокете, запросив параметр сокета IPV6_MTU ), то параметр не оказывает никакого влияния. Если значение меньше, то исходящие пакеты, превышающие этот, будут фрагментированы или не будут отправляться в зависимости от значения IPV6_DONTFRAG. Значение по умолчанию — IP_UNSPECIFIED_USER_MTU (MAXULONG). Для обеспечения безопасности типа следует использовать функции WSAGetIPUserMtu и WSASetIPUserMtu вместо использования параметра сокета напрямую. |
IPV6_V6ONLY | да | да | 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 | x | x | x | ||
IPV6_ADD_IFLIST | Начиная с Windows 10 версии 1803 | ||||
IPV6_ADD_MEMBERSHIP | x | x | x | x | x |
IPV6_DEL_IFLIST | Начиная с Windows 10 версии 1803 | ||||
IPV6_DROP_MEMBERSHIP | x | x | x | x | x |
IPV6_GET_IFLIST | Начиная с Windows 10 версии 1803 | ||||
IPV6_HDRINCL | x | x | x | x | x |
IPV6_HOPLIMIT | x | x | x | x | x |
IPV6_IFLIST | Начиная с Windows 10 версии 1803 | ||||
IPV6_JOIN_GROUP | x | x | x | x | x |
IPV6_LEAVE_GROUP | x | x | x | x | x |
IPV6_MULTICAST_HOPS | x | x | x | x | x |
IPV6_MULTICAST_IF | x | x | x | x | x |
IPV6_MULTICAST_LOOP | x | x | x | x | x |
IPV6_PKTINFO | x | x | x | x | x |
IPV6_PROTECTION_LEVEL | x | x | x | x | x |
IPV6_RECVIF | x | x | x | x | x |
IPV6_UNICAST_HOPS | x | x | x | x | x |
IPV6_UNICAST_IF | x | x | x | x | x |
IPV6_V6ONLY | x | x | x | x | x |
Параметр | Windows Server 2003 | Windows XP |
---|---|---|
IP_ORIGINAL_ARRIVAL_IF | ||
IPV6_ADD_IFLIST | ||
IPV6_ADD_MEMBERSHIP | x | x |
IPV6_DEL_IFLIST | ||
IPV6_DROP_MEMBERSHIP | x | x |
IPV6_GET_IFLIST | ||
IPV6_HDRINCL x | x | |
IPV6_HOPLIMIT x | x | |
IPV6_IFLIST | ||
IPV6_JOIN_GROUP | x | x |
IPV6_LEAVE_GROUP | x | x |
IPV6_MULTICAST_HOPS | x | x |
IPV6_MULTICAST_IF | x | x |
IPV6_MULTICAST_LOOP | x | x |
IPV6_PKTINFO | x | x |
IPV6_PROTECTION_LEVEL | x | x |
IPV6_RECVIF | ||
IPV6_UNICAST_HOPS | x | x |
IPV6_UNICAST_IF | ||
IPV6_V6ONLY |
Комментарии
В пакете SDK microsoft Windows, выпущенном для 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.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по