Параметры сокета IPPROTO_IP
В следующих таблицах описаны IPPROTO_IP параметры сокетов, которые применяются к сокетам, созданным для семейства адресов IPv4 (AF_INET). Дополнительные сведения о получении и настройке параметров сокета см. на справочных страницах функций getsockopt и setsockopt .
Для перечисления протоколов и обнаружения поддерживаемых свойств для каждого установленного протокола используйте функцию WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32 .
Для некоторых параметров сокета требуется больше объяснений, чем эти таблицы могут передать; такие параметры содержат ссылки на дополнительные страницы.
Параметры
Параметр | Получить | Присвойте параметру | Тип Optval | Описание |
---|---|---|---|---|
IP_ADD_IFLIST | да | DWORD (IF_INDEX) | Добавляет индекс интерфейса в параметр IFLIST, связанный с параметром IP_IFLIST . | |
IP_ADD_MEMBERSHIP | да | ip_mreq | Присоединение сокета к предоставленной группе многоадресной рассылки в указанном интерфейсе. | |
IP_ADD_SOURCE_MEMBERSHIP | да | ip_mreq_source | Присоединитесь к предоставленной группе многоадресной рассылки в заданном интерфейсе и примите данные, полученные по указанному исходному адресу. | |
IP_BLOCK_SOURCE | да | ip_mreq_source | Удаляет указанный источник в качестве отправителя для предоставленной группы и интерфейса многоадресной рассылки. | |
IP_DEL_IFLIST | да | DWORD (IF_INDEX) | Удаляет индекс интерфейса из списка IFLIST, связанного с параметром IP_IFLIST . Записи могут быть удалены только приложением, поэтому имейте в виду, что после удаления интерфейса записи могут устареть. | |
IP_DONTFRAGMENT | да | да | DWORD (логическое значение) | Указывает, что данные не должны быть фрагментированы независимо от локального MTU. Допустимо только для протоколов, ориентированных на сообщения. Поставщики MICROSOFT TCP/IP учитывают этот параметр для UDP и ICMP. |
IP_DROP_MEMBERSHIP | да | ip_mreq | Оставляет указанную группу многоадресной рассылки из указанного интерфейса. Поставщики услуг должны поддерживать этот параметр, если поддерживается многоадресная рассылка. Поддержка указывается в структуре WSAPROTOCOL_INFO , возвращаемой вызовом функции WSAEnumProtocols , со следующими параметрами: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0. | |
IP_DROP_SOURCE_MEMBERSHIP | да | ip_mreq_source | Удаляет членство в заданной группе многоадресной рассылки, интерфейсе и исходном адресе. | |
IP_GET_IFLIST | да | DWORD[] (IF_INDEX[]) | Возвращает текущий параметр IFLIST, связанный с параметром IP_IFLIST . Возвращает ошибку , если IP_IFLIST не включен. | |
IP_HDRINCL | да | да | DWORD (логическое значение) | Если задано значение TRUE, указывает, что приложение предоставляет заголовок IP. Применяется только к сокетам SOCK_RAW. Поставщик службы TCP/IP может задать поле идентификатора, если значение, предоставленное приложением, равно нулю. Параметр IP_HDRINCL применяется только к SOCK_RAW типу протокола. Поставщик служб TCP/IP, поддерживающий SOCK_RAW, также должен поддерживать IP_HDRINCL. |
IP_IFLIST | да | да | DWORD (логическое значение) | Возвращает или задает состояние IP_IFLIST сокета. Если для этого параметра задано значение true, прием датаграмм ограничивается интерфейсами, которые находятся в IFLIST. Датаграммы, полученные в других интерфейсах, игнорируются. ЕСЛИLIST запускается пустым. Используйте IP_ADD_IFLIST и IP_DEL_IFLIST для изменения списка IFLIST. |
IP_MTU | да | DWORD | Возвращает системную оценку MTU пути. Сокет должен быть подключен. | |
IP_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 принудительно задаст бит DF для всех исходящих пакетов, а попытка отправить пакеты, превышающие MTU пути, приведет к ошибке. IP_PMTUDISC_DONT принудительно не задать бит DF для всех исходящих пакетов, а пакеты будут фрагментированы в соответствии с MTU интерфейса. IP_PMTUDISC_PROBE принудительно задаст бит DF для всех исходящих пакетов, а попытка отправить пакеты, превышающие MTU интерфейса, приведет к ошибке. |
IP_MULTICAST_IF | да | да | DWORD | Возвращает или задает исходящий интерфейс для отправки многоадресного трафика IPv4. Этот параметр не изменяет интерфейс по умолчанию для получения трафика многоадресной рассылки IPv4. Входным значением для установки этого параметра является 4-байтовый IPv4-адрес в порядке сетевых байтов. Этот параметр DWORD также может быть индексом интерфейса в порядке сетевых байтов. Любой IP-адрес в блоке 0.x.x.x (первый октет 0), кроме IPv4-адреса 0.0.0.0, обрабатывается как индекс интерфейса. Индекс интерфейса — это 24-разрядное число, а блок адресов IPv4 0.0.0.0/8 не используется (этот диапазон зарезервирован). Индекс интерфейса можно использовать для указания интерфейса по умолчанию для многоадресного трафика для IPv4. Если optval равно нулю, для отправки многоадресного трафика указывается интерфейс по умолчанию для получения многоадресной рассылки. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки многоадресного трафика IPv4 в порядке байтов узла. |
IP_MULTICAST_LOOP | да | да | DWORD (логическое значение) | Для сокета, присоединенного к одной или нескольким группам многоадресной рассылки, это определяет, будет ли он получать копию исходящих пакетов, отправляемых в эти группы многоадресной рассылки через выбранный интерфейс многоадресной рассылки. По умолчанию IP_MULTICAST_LOOP включен (значение 1/TRUE), поэтому сокеты будут получать соответствующие многоадресные пакеты, отправленные текущим компьютером. Отключение этого параметра (путем установки ему значения 0/FALSE) означает, что этот сокет не будет получать многоадресную рассылку, отправленную с локального компьютера, даже если сокет открыт в интерфейсе замыкания на себя. Это несовместимо с версией POSIX IP_MULTICAST_LOOP — параметр должен быть установлен в принимающем сокете; в то время как параметр POSIX должен быть установлен в сокете отправки. |
IP_MULTICAST_TTL | да | да | DWORD | Задает или получает значение срока жизни, связанное с ip-трафиком многоадресной рассылки в сокете. |
IP_OPTIONS | да | да | char [] | Указывает параметры IP-адресов, которые необходимо вставить в исходящие пакеты. Установка новых параметров перезаписывает все ранее указанные параметры. При установке параметра optval в нулевое значение удаляются все ранее указанные параметры. IP_OPTIONS поддержка не требуется; Чтобы проверка, поддерживается ли IP_OPTIONS, используйте getockopt для получения текущих параметров. Если getsockopt завершается сбоем , IP_OPTIONS не поддерживается. |
IP_ORIGINAL_ARRIVAL_IF | да | да | DWORD (логическое значение) | Указывает, должна ли функция LPFN_WSARECVMSG (WSARecvMsg) возвращать необязательные управляющие данные, содержащие интерфейс прибытия, в котором был получен пакет для сокетов датаграмм. Этот параметр позволяет возвращать интерфейс IPv4, в котором был получен пакет, в структуре WSAMSG . Этот параметр действителен только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IP_PKTINFO | да | да | DWORD | Указывает, что сведения о пакете должны быть возвращены функцией WSARecvMsg . |
IP_RECEIVE_BROADCAST | да | да | DWORD (логическое значение) | Разрешает или блокирует широковещательный прием. |
IP_RECVIF | да | да | DWORD (логическое значение) | Указывает, должен ли стек IP-адресов заполнять буфер управления сведениями о том, какой интерфейс получил пакет с сокетом датаграммы. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные управляющие данные, содержащие интерфейс, в котором был получен пакет для сокетов датаграмм. Этот параметр позволяет возвращать интерфейс IPv4, в котором был получен пакет, в структуре WSAMSG . Этот параметр действителен только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IP_RECVTOS | да | да | DWORD (логическое значение) | Указывает, должен ли стек IP заполнить буфер элемента управления сообщением, содержащим поле заголовка IPv4 типа службы (TOS) на полученной датаграмме. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные управляющие данные, содержащие значение поля заголовка TOS IPv4 полученной датаграммы. Этот параметр позволяет возвращать поле заголовка TOS IPv4 полученной датаграммы в структуре WSAMSG . Возвращаемый тип сообщения будет IP_TOS. Будут возвращены все биты DSCP и ECN поля TOS. Этот параметр действителен только для сокетов датаграмм (тип сокета должен быть SOCK_DGRAM). |
IP_RECVTTL | да | да | DWORD (логическое значение) | Указывает, что сведения о прыжках (TTL) должны возвращаться в функции LPFN_WSARECVMSG (WSARecvMsg). Если параметр optval имеет значение 1 при вызове метода setsockopt, параметр включен. Если задано значение 0, параметр отключен. Этот параметр допустим только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IP_TOS | да | да | DWORD (логическое значение) | Не используйте. Параметры типа службы (TOS) следует задавать только с помощью API качества обслуживания. Дополнительные сведения см. в разделе "Дифференцированные службы " в разделе "Качество обслуживания" пакета SDK для платформы. |
IP_TTL | да | да | DWORD (логическое значение) | Изменяет значение по умолчанию, заданное поставщиком службы TCP/IP в поле TTL заголовка IP в исходящих датаграммах. поддержка IP_TTL не требуется; Чтобы проверка, поддерживается ли IP_TTL, используйте getockopt для получения текущих параметров. Если getsockopt завершается сбоем , IP_TTL не поддерживается. |
IP_UNBLOCK_SOURCE | да | ip_mreq_source | Добавляет заданный источник в качестве отправителя в предоставленную группу и интерфейс многоадресной рассылки. | |
IP_UNICAST_IF | да | да | DWORD (IF_INDEX) | Возвращает или задает исходящий интерфейс для отправки трафика IPv4. Этот параметр не изменяет интерфейс по умолчанию для получения трафика IPv4. Этот параметр важен для компьютеров с несколькими адресами. Входное значение для установки этого параметра — 4-байтовый IPv4-адрес в порядке байтов сети. Этот параметр DWORD должен быть индексом интерфейса в порядке сетевых байтов. Любой IP-адрес в блоке 0.x.x.x (первый октет 0), за исключением IPv4-адреса 0.0.0.0, обрабатывается как индекс интерфейса. Индекс интерфейса — это 24-разрядное число, а блок адресов IPv4 0.0.0.0/8 не используется (этот диапазон зарезервирован). Индекс интерфейса можно использовать для указания интерфейса по умолчанию для отправки трафика для IPv4. Для получения сведений об индексе интерфейса можно использовать функцию GetAdaptersAddresses . Если параметр optval равен нулю, для интерфейса по умолчанию для отправки трафика задано значение unspecified. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv4 в порядке байтов узла. |
IP_USER_MTU | да | да | DWORD | Возвращает или задает верхнюю границу MTU слоя IP (в байтах) для заданного сокета. Если значение выше оценки системы пути MTU (который можно получить в подключенном сокете, запросив параметр сокета IP_MTU ), то параметр не действует. Если значение меньше, исходящие пакеты, превышающие этот размер, будут фрагментированы или не будут отправлены в зависимости от значения IP_DONTFRAGMENT. Значение по умолчанию — IP_UNSPECIFIED_USER_MTU (MAXULONG). Для обеспечения безопасности типов следует использовать функции WSAGetIPUserMtu и WSASetIPUserMtu вместо непосредственного использования параметра сокета. |
IP_WFP_REDIRECT_CONTEXT | да | да | WSACMSGHDR с данными управления | Вспомогательный тип данных сокета датаграммы (cmsg_type), указывающий контекст перенаправления для сокета UDP, используемого службой перенаправления платформы фильтрации Windows (WFP) пользовательского режима. |
IP_WFP_REDIRECT_RECORDS | да | да | WSACMSGHDR с данными управления | Вспомогательный тип данных сокета датаграммы (cmsg_type), указывающий запись перенаправления для сокета UDP, используемого службой перенаправления платформы фильтрации Windows (WFP) пользовательского режима. |
Поддержка параметров IP_PROTO в Windows
Параметр | Windows 10 | Windows 8 | Windows Server 2012 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|---|---|
IP_ADD_IFLIST | Начиная с Windows 10 версии 1803 | |||||
IP_ADD_MEMBERSHIP | x | x | x | x | x | x |
IP_ADD_SOURCE_MEMBERSHIP | x | x | x | x | x | x |
IP_BLOCK_SOURCE | x | x | x | x | x | x |
IP_DEL_IFLIST | Начиная с Windows 10 версии 1803 | |||||
IP_DONTFRAGMENT | x | x | x | x | x | x |
IP_DROP_MEMBERSHIP | x | x | x | x | x | x |
IP_DROP_SOURCE_MEMBERSHIP | x | x | x | x | x | x |
IP_GET_IFLIST | Начиная с Windows 10 версии 1803 | |||||
IP_HDRINCL | x | x | x | x | x | x |
IP_IFLIST | Начиная с Windows 10 версии 1803 | |||||
IP_MULTICAST_IF | x | x | x | x | x | x |
IP_MULTICAST_LOOP | x | x | x | x | x | x |
IP_MULTICAST_TTL | x | x | x | x | x | x |
IP_OPTIONS | x | x | x | x | x | x |
IP_ORIGINAL_ARRIVAL_IF | x | x | x | x | ||
IP_PKTINFO | x | x | x | x | x | x |
IP_RECEIVE_BROADCAST | x | x | x | x | x | x |
IP_RECVIF | Начиная с Windows 10 версии 1703 | x | x | x | x | x |
IP_RECVTTL | x | |||||
IP_TOS | x | x | x | |||
IP_TTL | x | x | x | x | x | x |
IP_UNBLOCK_SOURCE | x | x | x | x | x | x |
IP_UNICAST_IF | x | x | x | x | x | x |
IP_WFP_REDIRECT_CONTEXT | x | x | x | |||
IP_WFP_REDIRECT_RECORDS | x | x | x |
Параметр | Windows Server 2003 | Windows XP |
---|---|---|
IP_ADD_IFLIST | ||
IP_ADD_MEMBERSHIP | x | x |
IP_ADD_SOURCE_MEMBERSHIP | x | x |
IP_BLOCK_SOURCE | x | x |
IP_DEL_IFLIST | ||
IP_DONTFRAGMENT | x | x |
IP_DROP_MEMBERSHIP | x | x |
IP_DROP_SOURCE_MEMBERSHIP | x | x |
IP_GET_IFLIST | ||
IP_HDRINCL | x | x |
IP_IFLIST | ||
IP_MULTICAST_IF | x | x |
IP_MULTICAST_LOOP | x | x |
IP_MULTICAST_TTL | x | x |
IP_OPTIONS | x | x |
IP_ORIGINAL_ARRIVAL_IF | ||
IP_PKTINFO | x | x |
IP_RECEIVE_BROADCAST | x | x |
IP_RECVIF | ||
IP_RECVTTL | ||
IP_TOS | ||
IP_TTL | x | x |
IP_UNBLOCK_SOURCE | x | x |
IP_UNICAST_IF | ||
IP_WFP_REDIRECT_CONTEXT | ||
IP_WFP_REDIRECT_RECORDS |
Комментарии
В пакете SDK microsoft Windows, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, и уровень IPPROTO_IP определяется в файле заголовка Ws2def.h , который автоматически включается в файл заголовка Winsock2.h . Некоторые параметры сокета IPPROTO_IP определены в файле заголовка Ws2ipdef.h , который автоматически включается в файл заголовка Ws2tcpip.h . Остальные параметры сокета IPPROTO_IP определены в файле заголовка Wsipv6ok.h , который автоматически включается в файл заголовка Winsock2.h . Файлы заголовков Ws2def.h, Ws2ipdef.h и Wsipv6ok.h никогда не должны использоваться напрямую.
В пакете SDK для платформы, выпущенном для Windows Server 2003 и Windows XP, уровень IPPROTO_IP определяется в файле заголовка Winsock2.h . Некоторые параметры сокета IPPROTO_IP определены в файле заголовка Ws2tcpip.h . Остальные параметры сокета IPPROTO_IP определены в файле заголовка Wsipv6ok.h , который автоматически включается в файл заголовка Winsock2.h . Файл заголовка Wsipv6ok.h никогда не следует использовать напрямую.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по