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

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

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

Параметры

Параметр Получить Присвойте параметру Тип Optval Описание
TCP_BSDURGENT да да DWORD (логическое значение) Если значение РАВНО TRUE, поставщик услуг реализует стиль распространения программного обеспечения Беркли (BSD) (по умолчанию) для обработки ускоренной обработки данных. Этот параметр является обратным для параметра TCP_EXPEDITED_1122. Этот параметр можно задать для подключения только один раз. Если этот параметр включен, его нельзя отключить. Этот параметр не обязательно должен быть реализован поставщиками услуг. Параметр включен (имеет значение TRUE) по умолчанию.
TCP_EXPEDITED_1122 да да DWORD (логическое значение) Если значение РАВНО TRUE, поставщик службы реализует ускоренную обработку данных, как указано в RFC-1222. В противном случае используется стиль Berkeley Software Distribution (BSD) (по умолчанию). Этот параметр можно задать для подключения только один раз. Если этот параметр включен, его нельзя отключить. Этот параметр не обязательно должен быть реализован поставщиками услуг.
TCP_FAIL_CONNECT_ON_ICMP_ERROR да да DWORD (логическое значение) Если значение РАВНО TRUE, вызов API подключения возвращается при получении ошибки ICMP со значением WSAEHOSTUNREACH. Затем исходный адрес ошибки будет доступен через параметр сокета TCP_ICMP_ERROR_INFO. Если значение РАВНО FALSE, сокет работает нормально. Значение по умолчанию отключено (установлено значение FALSE). Для обеспечения безопасности типов следует использовать функции WSAGetFailConnectOnIcmpError и WSASetFailConnectOnIcmpError вместо непосредственного использования параметра сокета.
TCP_ICMP_ERROR_INFO да нет ICMP_ERROR_INFO Извлекает сведения об ошибке ICMP, полученной сокетом TCP во время неудачного вызова подключения. Действителен только в сокете TCP, где ранее был включен TCP_FAIL_CONNECT_ON_ICMP_ERROR, а функция connect вернула WSAEHOSTUNREACH. Запрос не блокируется. Если запрос выполнен успешно и возвращенное значение optlen равно 0, ошибка ICMP не была получена с момента последнего вызова подключения. Если получена ошибка ICMP, сведения о ней будут доступны до повторного вызова подключения . Сведения возвращаются в виде структуры ICMP_ERROR_INFO . Для обеспечения безопасности типов следует использовать функцию WSAGetIcmpErrorInfo вместо непосредственного использования параметра сокета.
TCP_KEEPCNT да да DWORD Возвращает или задает количество проб активности TCP, которые будут отправлены до завершения подключения. Недопустимо задавать TCP_KEEPCNT значение больше 255.
TCP_MAXRT да да DWORD Если это значение не является отрицательным, оно представляет требуемое время ожидания подключения в секундах. Если значение равно -1, оно представляет собой запрос на отключение времени ожидания подключения (т. е. подключение будет повторно передаваться навсегда). Если время ожидания подключения отключено, время ожидания повторной передачи увеличивается экспоненциально для каждой повторной передачи до максимального значения 60 секунд, а затем остается там.
TCP_NODELAY да да DWORD (логическое значение) Включает или отключает алгоритм Nagle для сокетов TCP. Этот параметр по умолчанию отключен (имеет значение FALSE).
TCP_TIMESTAMPS да да DWORD (логическое значение) Включает или отключает метки времени RFC 1323. Обратите внимание, что существует также глобальная конфигурация меток времени (по умолчанию — off), "Timestamps" в (set/get)-nettcpsetting. Установка этого параметра сокета переопределяет этот глобальный параметр конфигурации.
TCP_FASTOPEN да да DWORD (логическое значение) Включает или отключает функцию RFC 7413 TCP Fast Open, которая позволяет начать отправку данных на этапе трехстороннего подтверждения при открытии подключения. Обратите внимание, что для быстрого открытия необходимо использовать ConnectEx , чтобы установить начальное соединение, и указать данные в параметре lpSendBuffer этой функции, которые будут переданы во время подтверждения. Некоторые данные в lpSendBuffer будут передаваться по протоколу Fast Open.
TCP_KEEPIDLE да да DWORD Возвращает или задает количество секунд, в течение которых TCP-подключение будет оставаться бездействующим, прежде чем пробы keepalive будут отправлены в удаленный репозиторий.

Примечание.
Этот параметр доступен начиная с Windows 10 версии 1709.


TCP_KEEPINTVL да да DWORD Возвращает или задает количество секунд, в течение которых TCP-подключение будет ожидать ответа на сохранение перед отправкой другой проверки активности.

Примечание.
Этот параметр доступен начиная с Windows 10 версии 1709.


Поддержка параметров IPPROTO_TCP в Windows

Параметр Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x x
TCP_KEEPCNT Начиная с Windows 10 версии 1703
TCP_MAXRT x x x x
TCP_NODELAY x x x x
TCP_TIMESTAMPS x x x x
TCP_FASTOPEN Начиная с Windows 10 версии 1607

  Параметр Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/Me
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x
TCP_KEEPCNT
TCP_MAXRT
TCP_NODELAY x x x x
TCP_TIMESTAMPS
TCP_FASTOPEN

Комментарии

В пакете SDK для Windows, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, и уровень IPPROTO_TCP определяется в файле заголовка Ws2def.h , который автоматически включается в файл заголовка Winsock2.h . Параметры сокета IPPROTO_TCP , за исключением TCP_BSDURGENT, определяются в файле заголовка Ws2ipdef.h , который автоматически включается в файл заголовка Ws2tcpip.h . Параметр TCP_BSDURGENT по историческим причинам определен в файле заголовка Mswsock.h . Файлы заголовков Ws2def.h и Ws2ipdef.h никогда не следует использовать напрямую.

Требования

Требование Значение
Заголовок
Ws2def.h (включая Winsock2.h);
Winsock2.h в Windows Server 2003, Windows XP и Windows 2000