Partilhar 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 dede soqueteespecificada como TCP (IPPROTO_TCP). Consulte as páginas de referência getsockopt e função setsockopt para obter mais informações sobre como obter e definir opções de soquete.

Para enumerar protocolos e descobrir propriedades suportadas para cada protocolo instalado, use o WSAEnumProtocols, WSCEnumProtocolsou WSCEnumProtocols32 função.

Opções

Opção Obter Conjunto Tipo de optval Descrição
TCP_BSDURGENT Sim Sim DWORD (Booleano) Se TRUE, o provedor de serviços implementa o estilo Berkeley Software Distribution (BSD) (padrão) para lidar com dados acelerados. Esta 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. Esta opção não tem de ser implementada pelos prestadores de serviços. A opção está ativada (definida como TRUE) por padrão.
TCP_EXPEDITED_1122 Sim Sim DWORD (Booleano) Se TRUE, o provedor de serviços implementa os dados acelerados conforme especificado no RFC-1222. Caso contrário, o estilo Berkeley Software Distribution (BSD) (padrão) é 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. Esta opção não tem de ser implementada pelos prestadores 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 receção de um erro ICMP com o valor WSAEHOSTUNREACH. O endereço de origem do erro estará disponível através da opção de soquete TCP_ICMP_ERROR_INFO. Se FALSO, o soquete se comporta normalmente. O padrão está desativado (definido como FALSE). Para segurança de tipo, você deve usar o WSAGetFailConnectOnIcmpError e funções de 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 onde TCP_FAIL_CONNECT_ON_ICMP_ERROR foi habilitado anteriormente e conexão retornou WSAEHOSTUNREACH. A consulta não está bloqueada. 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 de conexão seja chamado novamente. As informações são retornadas como uma estrutura ICMP_ERROR_INFO. Para segurança de tipo, você deve usar a função de 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 fixar TCP_KEEPCNT num valor superior a 255.
TCP_MAXRT Sim Sim DWORD Se esse valor não for negativo, ele representa o tempo limite de conexão desejado em segundos. Se for -1, representa um pedido para desativar o tempo limite da ligação (ou seja, a ligação será retransmitida para sempre). Se o tempo limite de conexão estiver desativado, o tempo limite de retransmissão aumenta exponencialmente para cada retransmissão até seu valor máximo de 60 segundos e, em seguida, 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 está desativado), "Timestamps" em (set/get)-nettcpsetting. A definição dessa opção de soquete substitui essa definição de configuração global.
TCP_FASTOPEN Sim Sim DWORD (Booleano) Habilita ou desabilita RFC 7413 TCP Fast Open, que permite que você comece a enviar dados durante a fase de handshake de três vias para abrir uma conexão. Observe que, para fazer uso de aberturas rápidas, você deve usar ConnectEx para fazer a conexão inicial e especificar os dados no parâmetro lpSendBuffer 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 controle remoto.

Nota:
Esta 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.

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


Suporte do Windows para opções de IPPROTO_TCP

Opção Janelas 10 Janelas 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 Janelas XP Janelas 2000 Janelas 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 é automaticamente incluído no arquivo de cabeçalho Ws2tcpip.h. A opção TCP_BSDURGENT por razões históricas é definida no arquivo de cabeçalho Mswsock.h. O Ws2def.h e Ws2ipdef.h arquivos de cabeçalho nunca devem ser usados diretamente.

Requerimentos

Exigência Valor
Cabeçalho
Ws2def.h (inclui Winsock2.h);
Winsock2.h no Windows Server 2003, Windows XP e Windows 2000