Параметры сокета 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 никогда не следует использовать напрямую.
Требования
Требование | Значение |
---|---|
Верхний колонтитул |
|