Opciones de socket IPPROTO_TCP

En la tabla siguiente se describen IPPROTO_TCP opciones de socket que se aplican a los sockets creados para las familias de direcciones IPv4 e IPv6 (AF_INET y AF_INET6) con el parámetro de protocolo a la función de socket especificada como TCP (IPPROTO_TCP). Consulte las páginas de referencia de la función getsockopt y setsockopt para obtener más información sobre cómo obtener y establecer opciones de socket.

Para enumerar protocolos y detectar las propiedades admitidas para cada protocolo instalado, use la función WSAEnumProtocols, WSCEnumProtocols o WSCEnumProtocols32 .

Opciones

Opción Obtener Set Tipo optval Descripción
TCP_BSDURGENT DWORD (booleano) Si es TRUE, el proveedor de servicios implementa el estilo de distribución de software de Berkeley (BSD) (valor predeterminado) para controlar los datos acelerados. Esta opción es la inversa de la opción TCP_EXPEDITED_1122. Esta opción solo se puede establecer en la conexión una vez. Una vez establecida esta opción, esta opción no se puede desactivar. No es necesario implementar esta opción por parte de los proveedores de servicios. La opción está habilitada (establecida en TRUE) de forma predeterminada.
TCP_EXPEDITED_1122 DWORD (booleano) Si es TRUE, el proveedor de servicios implementa los datos acelerados tal y como se especifica en RFC-1222. De lo contrario, se usa el estilo De distribución de software de Berkeley (BSD) (valor predeterminado). Esta opción solo se puede establecer en la conexión una vez. Una vez establecida esta opción, esta opción no se puede desactivar. No es necesario implementar esta opción por parte de los proveedores de servicios.
TCP_FAIL_CONNECT_ON_ICMP_ERROR DWORD (booleano) Si es TRUE, se devolverá una llamada API de conexión tras la recepción de un error ICMP con el valor WSAEHOSTUNREACH. La dirección de origen del error estará disponible a través de la opción de socket TCP_ICMP_ERROR_INFO. Si es FALSE, el socket se comporta normalmente. El valor predeterminado está deshabilitado (establecido en FALSE). Para la seguridad de tipos, debe usar las funciones WSAGetFailConnectOnIcmpError y WSASetFailConnectOnIcmpError en lugar de usar la opción de socket directamente.
TCP_ICMP_ERROR_INFO no ICMP_ERROR_INFO Recupera la información de un error ICMP recibido por el socket TCP durante una llamada de conexión con error. Solo es válido en un socket TCP donde TCP_FAIL_CONNECT_ON_ICMP_ERROR se ha habilitado anteriormente y la conexión ha devuelto WSAEHOSTUNREACH. La consulta no está bloqueada. Si se consulta correctamente y el valor optlen devuelto es 0, no se ha recibido ningún error ICMP desde la última llamada de conexión. Si se recibió un error icMP, su información estará disponible hasta que se vuelva a llamar a connect . La información se devuelve como una estructura ICMP_ERROR_INFO . Para la seguridad de tipos, debe usar la función WSAGetIcmpErrorInfo en lugar de usar la opción de socket directamente.
TCP_KEEPCNT DWORD Obtiene o establece el número de sondeos de mantenimiento persistente de TCP que se enviarán antes de que finalice la conexión. No es válido establecer TCP_KEEPCNT en un valor mayor que 255.
TCP_MAXRT DWORD Si este valor no es negativo, representa el tiempo de espera de conexión deseado en segundos. Si es -1, representa una solicitud para deshabilitar el tiempo de espera de conexión (es decir, la conexión retransmitirá para siempre). Si el tiempo de espera de conexión está deshabilitado, el tiempo de espera de retransmisión aumenta exponencialmente para cada retransmisión hasta su valor máximo de 60sec y, a continuación, permanece allí.
TCP_NODELAY DWORD (booleano) Habilita o deshabilita el algoritmo nagle para sockets TCP. Esta opción está deshabilitada (establecida en FALSE) de forma predeterminada.
TCP_TIMESTAMPS DWORD (booleano) Habilita o deshabilita las marcas de tiempo RFC 1323. Tenga en cuenta que también hay una configuración global para las marcas de tiempo (el valor predeterminado está desactivado), "Marcas de tiempo" en (set/get)-nettcpsetting. Al establecer esta opción de socket, se invalida esa configuración global.
TCP_FASTOPEN DWORD (booleano) Habilita o deshabilita RFC 7413 TCP Fast Open, lo que le permite empezar a enviar datos durante la fase de protocolo de enlace triple de apertura de una conexión. Tenga en cuenta que para usar las aperturas rápidas, debe usar ConnectEx para realizar la conexión inicial y especificar los datos en el parámetro lpSendBuffer de esa función que se va a transferir durante el proceso de protocolo de enlace. Algunos de los datos de lpSendBuffer se transferirán bajo el protocolo Fast Open.
TCP_KEEPIDLE DWORD Obtiene o establece el número de segundos que una conexión TCP permanecerá inactiva antes de enviar sondeos keepalive al remoto.

Nota:
Esta opción está disponible a partir de Windows 10, versión 1709.


TCP_KEEPINTVL DWORD Obtiene o establece el número de segundos que una conexión TCP esperará a una respuesta keepalive antes de enviar otro sondeo keepalive.

Nota:
Esta opción está disponible a partir de Windows 10, versión 1709.


Compatibilidad de Windows con opciones de IPPROTO_TCP

Opción Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x x
TCP_KEEPCNT A partir de Windows 10, versión 1703
TCP_MAXRT x x x x
TCP_NODELAY x x x x
TCP_TIMESTAMPS x x x x
TCP_FASTOPEN A partir de Windows 10, versión 1607

  Opción 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

Comentarios

En el Kit de desarrollo de software (SDK) de Microsoft Windows publicado para Windows Vista y versiones posteriores, la organización de los archivos de encabezado ha cambiado y IPPROTO_TCP nivel se define en el archivo de encabezado Ws2def.h , que se incluye automáticamente en el archivo de encabezado Winsock2.h . Las opciones de socket de IPPROTO_TCP , a excepción de TCP_BSDURGENT, se definen en el archivo de encabezado Ws2ipdef.h que se incluye automáticamente en el archivo de encabezado Ws2tcpip.h . La opción TCP_BSDURGENT por motivos históricos se define en el archivo de encabezado Mswsock.h . Los archivos de encabezado Ws2def.h y Ws2ipdef.h nunca se deben usar directamente.

Requisitos

Requisito Value
Encabezado
Ws2def.h (incluya Winsock2.h);
Winsock2.h en Windows Server 2003, Windows XP y Windows 2000