Compartilhar via


Opções de soquete IPPROTO_TCP

A tabela a seguir descreve IPPROTO_TCP opções de soquete que se aplicam a soquetes criados para as famílias de endereços IPv4 e IPv6 (AF_INET e AF_INET6) com o parâmetro de protocolo para a função de soquete especificada como TCP (IPPROTO_TCP). Consulte as páginas de referência das funções getsockopt e setsockopt para obter mais informações sobre como obter e definir opções de soquete.

Para enumerar protocolos e descobrir propriedades com suporte para cada protocolo instalado, use a função WSAEnumProtocols, WSCEnumProtocols ou WSCEnumProtocols32.

Opções

Opção Obter Definir Tipo Optval Descrição
TCP_BSDURGENT sim sim DWORD (booleano) Se TRUE, o provedor de serviços implementará o estilo Berkeley Software Distribution (BSD) (padrão) para lidar com dados expressos. Essa opção é o inverso da opção TCP_EXPEDITED_1122. Esta opção pode ser definida na conexão apenas uma vez. Uma vez que esta opção é ativada, esta opção não pode ser desativada. Essa opção não precisa ser implementada pelos provedores de serviços. A opção está habilitada (definida como TRUE) por padrão.
TCP_EXPEDITED_1122 sim sim DWORD (booleano) Se TRUE, o provedor de serviços implementará os dados expressos conforme especificado no RFC-1222. Caso contrário, o estilo Berkeley Software Distribution (BSD) (padrão) será usado. Esta opção pode ser definida na conexão apenas uma vez. Uma vez que esta opção é ativada, esta opção não pode ser desativada. Essa opção não precisa ser implementada pelos provedores de serviços.
TCP_FAIL_CONNECT_ON_ICMP_ERROR sim sim DWORD (booleano) Se TRUE, uma chamada de API de conexão retornará após a recepção de um erro ICMP com o valor WSAEHOSTUNREACH. O endereço de origem do erro estará disponível por meio da opção de soquete TCP_ICMP_ERROR_INFO. Se FALSE, o soquete se comportará normalmente. O padrão é desabilitado (definido como FALSE). Para segurança de tipo, você deve usar as funções WSAGetFailConnectOnIcmpError e WSASetFailConnectOnIcmpError em vez de usar a opção de soquete diretamente.
TCP_ICMP_ERROR_INFO sim não ICMP_ERROR_INFO Recupera as informações de um erro ICMP recebido pelo soquete TCP durante uma chamada de conexão com falha. Válido apenas em um soquete TCP em que TCP_FAIL_CONNECT_ON_ICMP_ERROR foi habilitado anteriormente e a conexão retornou WSAEHOSTUNREACH. A consulta não está bloqueando. Se consultado com êxito e o valor optlen retornado for 0, nenhum erro ICMP foi recebido desde a última chamada de conexão. Se um erro ICMP foi recebido, suas informações estarão disponíveis até que a conexão seja chamada novamente. As informações são retornadas como uma estrutura ICMP_ERROR_INFO . Para segurança de tipo, você deve usar a função WSAGetIcmpErrorInfo em vez de usar a opção de soquete diretamente.
TCP_KEEPCNT sim sim DWORD Obtém ou define o número de testes TCP keep alive que serão enviados antes que a conexão seja encerrada. É ilegal definir TCP_KEEPCNT para um valor superior a 255.
TCP_MAXRT sim sim DWORD Se esse valor não for negativo, ele representará o tempo limite de conexão desejado em segundos. Se for -1, representa uma solicitação para desabilitar o tempo limite da conexão (ou seja, a conexão será retransmitida para sempre). Se o tempo limite de conexão estiver desabilitado, o tempo limite de retransmissão aumenta exponencialmente para cada retransmissão até seu valor máximo de 60 segundos e permanece lá.
TCP_NODELAY sim sim DWORD (booleano) Habilita ou desabilita o algoritmo Nagle para soquetes TCP. Esta opção está desativada (definida como FALSE) por padrão.
TCP_TIMESTAMPS sim sim DWORD (booleano) Habilita ou desabilita carimbos de data/hora RFC 1323. Observe que também há uma configuração global para carimbos de data/hora (o padrão é desativado), "Timestamps" em (set/get)-nettcpsetting. A configuração dessa opção de soquete substitui essa definição de configuração global.
TCP_FASTOPEN sim sim DWORD (booleano) Habilita ou desabilita o RFC 7413 TCP Fast Open, que permite que você comece a enviar dados durante a fase de handshake de três vias da abertura de uma conexão. Observe que, para usar aberturas rápidas, você deve usar o ConnectEx para fazer a conexão inicial e especificar os dados no parâmetro lpSendBuffer dessa função a serem transferidos durante o processo de handshake. Alguns dos dados em lpSendBuffer serão transferidos sob o protocolo Fast Open.
TCP_KEEPIDLE sim sim DWORD Obtém ou define o número de segundos que uma conexão TCP permanecerá ociosa antes que as sondas keepalive sejam enviadas para o remoto.

Observação:
Essa opção está disponível a partir do Windows 10, versão 1709.


TCP_KEEPINTVL sim sim DWORD Obtém ou define o número de segundos que uma conexão TCP aguardará por uma resposta keepalive antes de enviar outra sonda keepalive.

Observação:
Essa opção está disponível a partir do Windows 10, versão 1709.


Suporte do Windows para opções de IPPROTO_TCP

Opção Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT sim sim sim sim
TCP_EXPEDITED_1122 sim sim sim sim
TCP_KEEPCNT A partir do Windows 10, versão 1703
TCP_MAXRT sim sim sim sim
TCP_NODELAY sim sim sim sim
TCP_TIMESTAMPS sim sim sim sim
TCP_FASTOPEN A partir do Windows 10, versão 1607

  Opção Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/Me
TCP_BSDURGENT sim sim sim sim
TCP_EXPEDITED_1122 sim sim sim
TCP_KEEPCNT
TCP_MAXRT
TCP_NODELAY sim sim sim sim
TCP_TIMESTAMPS
TCP_FASTOPEN

Comentários

No Microsoft Windows Software Development Kit (SDK) lançado para Windows Vista e posterior, a organização dos arquivos de cabeçalho foi alterada e IPPROTO_TCP nível é definido no arquivo de cabeçalho Ws2def.h, que é incluído automaticamente no arquivo de cabeçalho Winsock2.h. As opções de soquete IPPROTO_TCP, com exceção de TCP_BSDURGENT, são definidas no arquivo de cabeçalho Ws2ipdef.h que é incluído automaticamente no arquivo de cabeçalho Ws2tcpip.h. A opção TCP_BSDURGENT por motivos históricos é definida no arquivo de cabeçalho Mswsock.h . Os arquivos de cabeçalho Ws2def.h e Ws2ipdef.h nunca devem ser usados diretamente.

Requisitos

Requisito Valor
Cabeçalho
Ws2def.h (incluir Winsock2.h);
Winsock2.h no Windows Server 2003, Windows XP e Windows 2000