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


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

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

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

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

Параметры

Вариант Получить Set Тип Optval Description
IP_ADD_IFLIST yes DWORD (IF_INDEX) Добавляет индекс интерфейса в IFLIST, связанный с параметром IP_IFLIST .
IP_ADD_MEMBERSHIP yes ip_mreq Присоединяйте сокет к предоставленной группе многоадресной рассылки в указанном интерфейсе.
IP_ADD_SOURCE_MEMBERSHIP yes ip_mreq_source Присоединитесь к предоставленной группе многоадресной рассылки в данном интерфейсе и примите данные из предоставленного исходного адреса.
IP_BLOCK_SOURCE yes ip_mreq_source Удаляет указанный источник в качестве отправителя в указанную группу многоадресной рассылки и интерфейс.
IP_DEL_IFLIST yes DWORD (IF_INDEX) Удаляет индекс интерфейса из IFLIST, связанного с параметром IP_IFLIST . Записи можно удалить только приложением, поэтому помните, что записи могут устареть после удаления интерфейса.
IP_DONTFRAGMENT yes yes DWORD (логический) Указывает, что данные не должны быть фрагментированы независимо от локального MTU. Допустимо только для протоколов, ориентированных на сообщение. Поставщики MICROSOFT TCP/IP уважают этот параметр для UDP и ICMP.
IP_DROP_MEMBERSHIP yes ip_mreq Покидает указанную группу многоадресной рассылки из указанного интерфейса. Поставщики услуг должны поддерживать этот параметр, если поддерживается многоадресная рассылка. Поддержка указывается в структуре WSAPROTOCOL_INFO, возвращаемой вызовом функции WSAEnumProtocols следующим образом: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0.
IP_DROP_SOURCE_MEMBERSHIP yes ip_mreq_source Удаляет членство в заданной группе многоадресной рассылки, интерфейсе и исходном адресе.
IP_GET_IFLIST yes DWORD[] (IF_INDEX[]) Возвращает текущий параметр IFLIST, связанный с параметром IP_IFLIST . Возвращает ошибку, если IP_IFLIST не включена.
IP_HDRINCL yes yes DWORD (логический) Если задано значение TRUE, приложение предоставляет заголовок IP. Применяется только к сокетам SOCK_RAW. Поставщик услуг TCP/IP может задать поле идентификатора, если значение, предоставленное приложением, равно нулю. Параметр IP_HDRINCL применяется только к типу протокола SOCK_RAW. Поставщик служб TCP/IP, поддерживающий SOCK_RAW, также должен поддерживать IP_HDRINCL.
IP_IFLIST yes yes DWORD (логический) Возвращает или задает состояние IP_IFLIST сокета. Если для этого параметра задано значение true, прием datagram ограничен интерфейсами, которые находятся в IFLIST. Диаграммы данных, полученные на любых других интерфейсах, игнорируются. IFLIST запускается пусто. Используйте IP_ADD_IFLIST и IP_DEL_IFLIST для редактирования IFLIST.
IP_MTU yes DWORD Возвращает оценку MTU пути системы. Сокет должен быть подключен.
IP_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 принудительно принудит все исходящие пакеты иметь набор битов DF, а попытка отправить пакеты, превышающие путь MTU, приведет к ошибке. IP_PMTUDISC_DONT принудит все исходящие пакеты иметь бит DF не задан, и пакеты будут фрагментированы в соответствии с интерфейсом MTU. IP_PMTUDISC_PROBE приведет ко всем исходящим пакетам набор битов DF, а попытка отправить пакеты, превышающие MTU интерфейса, приведет к ошибке.
IP_MULTICAST_IF yes yes DWORD Возвращает или задает исходящий интерфейс для отправки трафика многоадресной рассылки IPv4. Этот параметр не изменяет интерфейс по умолчанию для получения трафика многоадресной рассылки IPv4. Входное значение для настройки этого параметра — это 4-байтовый IPv4-адрес в порядке байтов сети. Этот параметр DWORD также может быть индексом интерфейса в порядке байтов сети. Любой IP-адрес в блоке 0.x.x.x (первый октет 0), кроме IPv4-адреса 0.0.0.0,0, рассматривается как индекс интерфейса. Индекс интерфейса — это 24-разрядное число, а блок адресов 0.0.0.0/8 IPv4 не используется (этот диапазон зарезервирован). Индекс интерфейса можно использовать для указания интерфейса по умолчанию для многоадресного трафика для IPv4. Если значение optval равно нулю, интерфейс по умолчанию для получения многоадресной рассылки указывается для отправки многоадресного трафика. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv4 многоадресной рассылки в порядке байтов узла.
IP_MULTICAST_LOOP yes yes DWORD (логический) Для сокета, присоединенного к одной или нескольким группам многоадресной рассылки, это определяет, будет ли он получать копию исходящих пакетов, отправленных этим группам многоадресной рассылки через выбранный интерфейс многоадресной рассылки. По умолчанию IP_MULTICAST_LOOP включен (значение 1/TRUE), поэтому сокеты будут получать соответствующие пакеты многоадресной рассылки, отправленные текущим компьютером. Отключение этого параметра (задав значение 0/FALSE) означает, что этот сокет не будет получать многоадресные рассылки, отправленные с локального компьютера, даже если сокет открыт в интерфейсе петли.

Это несовместимо с версией POSIX IP_MULTICAST_LOOP. Этот параметр должен быть установлен на принимающем сокете; в то время как параметр POSIX должен быть установлен в сокете отправки.
IP_MULTICAST_TTL yes yes DWORD Задает или получает значение TTL, связанное с трафиком многоадресной рассылки IP-адресов в сокете.
IP_OPTIONS yes yes char [] Указывает параметры IP-адресов для вставки в исходящие пакеты. Установка новых параметров перезаписывает все ранее указанные параметры. Если задать значение нуля, все ранее указанные параметры удаляются. поддержка IP_OPTIONS не требуется; чтобы проверить, поддерживается ли IP_OPTIONS, используйте getockopt для получения текущих параметров. Если метод getsockopt завершается ошибкой, IP_OPTIONS не поддерживается.
IP_ORIGINAL_ARRIVAL_IF yes yes DWORD (логический) Указывает, должна ли функция LPFN_WSARECVMSG (WSARecvMsg) возвращать необязательные данные управления, содержащие интерфейс прибытия, в котором пакет был получен для сокетов диаграммы данных. Этот параметр позволяет использовать интерфейс IPv4, в котором был получен пакет в структуре WSAMSG. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IP_PKTINFO yes yes DWORD Указывает, что сведения о пакете должны возвращаться функцией WSARecvMsg .
IP_RECEIVE_BROADCAST yes yes DWORD (логический) Разрешает или блокирует прием трансляции.
IP_RECVIF yes yes DWORD (логический) Указывает, должен ли стек IP заполнять буфер элемента управления сведениями о том, какой интерфейс получил пакет с сокетом диаграммы данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие интерфейс, в котором был получен пакет для сокетов диаграммы данных. Этот параметр позволяет использовать интерфейс IPv4, в котором был получен пакет в структуре WSAMSG. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IP_RECVTOS yes yes DWORD (логический) Указывает, должен ли стек IP заполнять буфер управления сообщением, содержащим поле заголовка IPv4 типа службы (TOS) на полученной диаграмме данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие значение поля заголовка TOS IPv4 полученной диаграммы данных. Этот параметр позволяет возвращать поле заголовка TOS IPv4 полученной диаграммы данных в структуре WSAMSG. Возвращаемый тип сообщения будет IP_TOS. Будут возвращены все биты DSCP и ECN поля TOS. Этот параметр действителен только для сокетов диаграммы данных (тип сокета должен быть SOCK_DGRAM).
IP_RECVECN yes yes DWORD (логический) Указывает, должен ли стек IP заполнять буфер управления сообщением, содержащим биты ECN поля заголовка IPv4 типа службы (TOS) на полученной диаграмме данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие биты ECN поля поля заголовка TOS IPv4 полученной диаграммы данных. Этот параметр позволяет возвращать биты ECN поля заголовка TOS IPv4 полученной диаграммы данных в структуре WSAMSG. Возвращаемый тип сообщения будет IP_ECN. Будут возвращены все 2 биты ECN поля TOS. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). Для обеспечения безопасности типов следует использовать функции WSAGetRecvIPEcn и WSASetRecvIPEcn вместо использования параметра сокета напрямую.
IP_RECVTTL yes yes DWORD (логический) Указывает, что сведения о прыжке (TTL) должны быть возвращены в функции LPFN_WSARECVMSG (WSARecvMsg). Если для вызова setockopt задано значение 1, параметр включен. Если задано значение 0, параметр отключен. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IP_TOS yes yes DWORD (логический) Не используйте. Параметры типа службы (TOS) следует задать только с помощью API качества обслуживания. Дополнительные сведения см . в разделе "Качество обслуживания" пакета SDK для платформы.
IP_TTL yes yes DWORD (логический) Изменяет значение по умолчанию, заданное поставщиком служб TCP/IP в поле TTL заголовка IP в исходящих диаграммах данных. поддержка IP_TTL не требуется; чтобы проверить, поддерживается ли IP_TTL, используйте getockopt для получения текущих параметров. Если метод getsockopt завершается ошибкой, IP_TTL не поддерживается.
IP_UNBLOCK_SOURCE yes ip_mreq_source Добавляет указанный источник в качестве отправителя в указанную группу многоадресной рассылки и интерфейс.
IP_UNICAST_IF yes yes DWORD (IF_INDEX) Возвращает или задает исходящий интерфейс для отправки трафика IPv4. Этот параметр не изменяет интерфейс по умолчанию для получения трафика IPv4. Этот параметр важен для многодомных компьютеров. Входное значение для настройки этого параметра — это 4-байтовый IPv4-адрес в порядке байтов сети. Этот параметр DWORD должен быть индексом интерфейса в порядке байтов сети. Любой IP-адрес в блоке 0.x.x.x (первый октет 0), кроме IPv4-адреса 0.0.0.0,0, рассматривается как индекс интерфейса. Индекс интерфейса — это 24-разрядное число, а блок адресов 0.0.0.0/8 IPv4 не используется (этот диапазон зарезервирован). Индекс интерфейса можно использовать для указания интерфейса по умолчанию для отправки трафика для IPv4. Функцию GetAdaptersAddresses можно использовать для получения сведений об индексе интерфейса. Если значение optval равно нулю, интерфейс по умолчанию для отправки трафика не указан. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv4 в порядке байтов узла.
IP_USER_MTU yes yes DWORD Получает или задает верхнюю границу на уровне IP MTU (в байтах) для заданного сокета. Если значение выше, чем оценка MTU системы (которую можно получить на подключенном сокете, запросив параметр сокета IP_MTU ), то этот параметр не действует. Если значение меньше, то исходящие пакеты, превышающие его, будут фрагментированы или не будут отправляться в зависимости от значения IP_DONTFRAGMENT. Значение по умолчанию — IP_UNSPECIFIED_USER_MTU (MAXULONG). Для обеспечения безопасности типов следует использовать функции WSAGetIPUserMtu и WSASetIPUserMtu вместо прямого использования параметра сокета.
IP_WFP_REDIRECT_CONTEXT yes yes WSACMSGHDR с данными управления Сокет диаграммы данных с типом данных (cmsg_type) для указания контекста перенаправления для сокета UDP, используемого службой перенаправления платформы фильтрации Windows в пользовательском режиме ..
IP_WFP_REDIRECT_RECORDS yes yes WSACMSGHDR с данными управления Сокет диаграммы данных сокета анклинарного типа данных (cmsg_type) для указания записи перенаправления для сокета UDP, используемого службой перенаправления платформы фильтрации Windows (ПП).

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

Вариант 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 Software Development Kit, выпущенном для 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 никогда не следует использовать напрямую.

Требования

Требование Значение
Верхний колонтитул
Ws2def.h (включая Winsock2.h);
Ws2ipdef.h (включая Ws2tcpip.h);
Wsipv6ok.h (включая Winsock2.h)