Opzioni socket IPPROTO_TCP

Nella tabella seguente vengono descritte IPPROTO_TCP opzioni socket applicabili ai socket creati per le famiglie di indirizzi IPv4 e IPv6 (AF_INET e AF_INET6) con il parametro del protocollo alla funzione socket specificata come TCP (IPPROTO_TCP). Per altre informazioni su come ottenere e impostare le opzioni socket, vedere le pagine di riferimento della funzione getsockopt e setsockopt.

Per enumerare i protocolli e individuare le proprietà supportate per ogni protocollo installato, usare la funzione WSAEnumProtocols, WSCEnumProtocols o WSCEnumProtocols32.

Opzioni

Opzione Recupero Set Tipo Optval Descrizione
TCP_BSDURGENT yes yes DWORD (booleano) Se TRUE, il provider di servizi implementa lo stile Berkeley Software Distribution (BSD) (impostazione predefinita) per la gestione dei dati accelerati. Questa opzione è l'inversa dell'opzione TCP_EXPEDITED_1122. Questa opzione può essere impostata sulla connessione una sola volta. Dopo aver impostato questa opzione, questa opzione non può essere disattivata. Questa opzione non è necessaria per essere implementata dai provider di servizi. L'opzione è abilitata (impostata su TRUE) per impostazione predefinita.
TCP_EXPEDITED_1122 yes yes DWORD (booleano) Se TRUE, il provider di servizi implementa i dati accelerati come specificato in RFC-1222. In caso contrario, viene usato lo stile Berkeley Software Distribution (BSD) (impostazione predefinita). Questa opzione può essere impostata sulla connessione una sola volta. Dopo aver impostato questa opzione, questa opzione non può essere disattivata. Questa opzione non è necessaria per essere implementata dai provider di servizi.
TCP_FAIL_CONNECT_ON_ICMP_ERROR yes yes DWORD (booleano) Se TRUE, viene restituita una chiamata API di connessione al ricevimento di un errore ICMP con valore WSAEHOSTUNREACH. L'indirizzo di origine dell'errore sarà quindi disponibile tramite l'opzione socket TCP_ICMP_ERROR_INFO. Se FALSE, il socket si comporta normalmente. Il valore predefinito è disabilitato (impostato su FALSE). Per la sicurezza dei tipi, è consigliabile usare le funzioni WSAGetFailConnectOnIcmpError e WSASetFailConnectOnIcmpError anziché usare direttamente l'opzione socket.
TCP_ICMP_ERROR_INFO yes no ICMP_ERROR_INFO Recupera le informazioni di un errore ICMP ricevuto dal socket TCP durante una chiamata di connessione non riuscita. Valido solo in un socket TCP in cui TCP_FAIL_CONNECT_ON_ICMP_ERROR è stato abilitato in precedenza e la connessione ha restituito WSAEHOSTUNREACH. La query non è bloccata. Se viene eseguita una query correttamente e il valore optlen restituito è 0, non viene ricevuto alcun errore ICMP dall'ultima chiamata di connessione. Se è stato ricevuto un errore ICMP, le informazioni saranno disponibili fino a quando non viene chiamato di nuovo la connessione . Le informazioni vengono restituite come struttura ICMP_ERROR_INFO . Per la sicurezza dei tipi, è consigliabile usare la funzione WSAGetIcmpErrorInfo anziché usare direttamente l'opzione socket.
TCP_KEEPCNT yes yes DWORD Ottiene o imposta il numero di probe keep-alive TCP che verranno inviati prima che la connessione venga terminata. Non è consentito impostare TCP_KEEPCNT su un valore maggiore di 255.
TCP_MAXRT yes yes DWORD Se questo valore non è negativo, rappresenta il timeout di connessione desiderato in secondi. Se è -1, rappresenta una richiesta per disabilitare il timeout della connessione( ad esempio, la connessione verrà ritrasmetti per sempre). Se il timeout della connessione è disabilitato, il timeout di ritrasmissione aumenta in modo esponenziale per ogni ritrasmissione fino al valore massimo di 60sec e rimane lì.
TCP_NODELAY yes yes DWORD (booleano) Abilita o disabilita l'algoritmo Nagle per i socket TCP. Questa opzione è disabilitata (impostata su FALSE) per impostazione predefinita.
TCP_TIMESTAMPS yes yes DWORD (booleano) Abilita o disabilita i timestamp RFC 1323. Si noti che è disponibile anche una configurazione globale per i timestamp (impostazione predefinita disattivata), "Timestamp" in (set/get)-nettcpsetting. L'impostazione di questa opzione socket esegue l'override dell'impostazione di configurazione globale.
TCP_FASTOPEN yes yes DWORD (booleano) Abilita o disabilita RFC 7413 TCP Fast Open, che consente di iniziare a inviare dati durante la fase di handshake a tre vie di apertura di una connessione. Si noti che per usare le operazioni di apertura rapida, è necessario usare ConnectEx per stabilire la connessione iniziale e specificare i dati nel parametro lpSendBuffer di tale funzione da trasferire durante il processo di handshake. Alcuni dati in lpSendBuffer verranno trasferiti nel protocollo Fast Open.
TCP_KEEPIDLE yes yes DWORD Ottiene o imposta il numero di secondi in cui una connessione TCP rimarrà inattiva prima che i probe keepalive vengano inviati al remoto.

Nota:
Questa opzione è disponibile a partire da Windows 10 versione 1709.


TCP_KEEPINTVL yes yes DWORD Ottiene o imposta il numero di secondi di attesa di una connessione TCP per una risposta keepalive prima di inviare un altro probe keepalive.

Nota:
Questa opzione è disponibile a partire da Windows 10 versione 1709.


Supporto di Windows per le opzioni di IPPROTO_TCP

Opzione Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT yes yes
TCP_EXPEDITED_1122 yes yes
TCP_KEEPCNT A partire da Windows 10, versione 1703
TCP_MAXRT yes yes
TCP_NODELAY yes yes
TCP_TIMESTAMPS yes yes
TCP_FASTOPEN A partire da Windows 10, versione 1607

  Opzione Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/Me
TCP_BSDURGENT yes yes
TCP_EXPEDITED_1122 yes yes
TCP_KEEPCNT
TCP_MAXRT
TCP_NODELAY yes yes
TCP_TIMESTAMPS
TCP_FASTOPEN

Osservazioni:

In Microsoft Windows Software Development Kit (SDK) rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e IPPROTO_TCP livello è definito nel file di intestazione Ws2def.h , incluso automaticamente nel file di intestazione Winsock2.h . Le opzioni socket IPPROTO_TCP , ad eccezione di TCP_BSDURGENT, vengono definite nel file di intestazione Ws2ipdef.h che viene incluso automaticamente nel file di intestazione Ws2tcpip.h . L'opzione TCP_BSDURGENT per motivi cronologici è definita nel file di intestazione Mswsock.h . I file di intestazione Ws2def.h e Ws2ipdef.h non devono mai essere usati direttamente.

Requisiti

Requisito Valore
Intestazione
Ws2def.h (include Winsock2.h);
Winsock2.h in Windows Server 2003, Windows XP e Windows 2000