Opzioni socket IPPROTO_IP

Le tabelle seguenti descrivono IPPROTO_IP opzioni socket che si applicano ai socket creati per la famiglia di indirizzi IPv4 (AF_INET). Per altre informazioni su come ottenere e impostare le opzioni di socket, vedere le pagine di riferimento per le funzioni getsockopt e setockopt .

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

Alcune opzioni socket richiedono più spiegazioni rispetto a queste tabelle possono trasmettere; tali opzioni contengono collegamenti a pagine aggiuntive.

Opzioni

Opzione Recupero Set Tipo Optval Descrizione
IP_ADD_IFLIST DWORD (IF_INDEX) Aggiunge un indice di interfaccia all'opzione IFLIST associata all'opzione IP_IFLIST .
IP_ADD_MEMBERSHIP ip_mreq Aggiungere il socket al gruppo multicast fornito nell'interfaccia specificata.
IP_ADD_SOURCE_MEMBERSHIP ip_mreq_source Aggiungere il gruppo multicast fornito nell'interfaccia specificata e accettare l'origine dati dall'indirizzo di origine fornito.
IP_BLOCK_SOURCE ip_mreq_source Rimuove l'origine specificata come mittente al gruppo e all'interfaccia multicast forniti.
IP_DEL_IFLIST DWORD (IF_INDEX) Rimuove un indice di interfaccia dall'opzione IFLIST associata all'opzione IP_IFLIST . Le voci possono essere rimosse solo dall'applicazione, quindi tenere presente che le voci potrebbero andare non aggiornate dopo la rimozione di un'interfaccia.
IP_DONTFRAGMENT DWORD (booleano) Indica che i dati non devono essere frammentati indipendentemente dall'MTU locale. Valido solo per i protocolli orientati ai messaggi. I provider TCP/IP Microsoft rispettano questa opzione per UDP e ICMP.
IP_DROP_MEMBERSHIP ip_mreq Lascia il gruppo multicast specificato dall'interfaccia specificata. I provider di servizi devono supportare questa opzione quando è supportato il multicast. Il supporto è indicato nella struttura WSAPROTOCOL_INFO restituita da una chiamata di funzione WSAEnumProtocols con la seguente: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0.
IP_DROP_SOURCE_MEMBERSHIP ip_mreq_source Elimina l'appartenenza al gruppo, all'interfaccia e all'indirizzo di origine specificati.
IP_GET_IFLIST DWORD[] (IF_INDEX[]) Ottiene l'opzione IFLIST corrente associata all'opzione IP_IFLIST . Restituisce l'errore se IP_IFLIST non è abilitato.
IP_HDRINCL DWORD (booleano) Se impostato su TRUE, indica che l'applicazione fornisce l'intestazione IP. Si applica solo ai socket SOCK_RAW. Il provider di servizi TCP/IP può impostare il campo ID, se il valore fornito dall'applicazione è zero. L'opzione IP_HDRINCL viene applicata solo al tipo di protocollo SOCK_RAW. Un provider di servizi TCP/IP che supporta SOCK_RAW deve supportare anche IP_HDRINCL.
IP_IFLIST DWORD (booleano) Ottiene o imposta lo stato IP_IFLIST del socket. Quando questa opzione è impostata su true, la ricezione di Datagram è limitata alle interfacce presenti nell'IFLIST. I datagrammi ricevuti in qualsiasi altra interfaccia vengono ignorati. IFLIST avvia vuoto. Usare IP_ADD_IFLIST e IP_DEL_IFLIST per modificare IFLIST.
IP_MTU DWORD Ottiene la stima del percorso MTU del sistema. Il socket deve essere connesso.
IP_MTU_DISCOVER DWORD (PMTUD_STATE) Ottiene o imposta lo stato di individuazione MTU del percorso per il socket. Il valore predefinito è IP_PMTUDISC_NOT_SET. Per i socket di flusso, IP_PMTUDISC_NOT_SET e IP_PMTUDISC_DO eseguiranno l'individuazione MTU del percorso. IP_PMTUDISC_DONT e IP_PMTUDISC_PROBE disattivano l'individuazione MTU del percorso. Per i socket di datagram , IP_PMTUDISC_DO forza tutti i pacchetti in uscita a avere il set di bit DF e un tentativo di invio di pacchetti più grandi del percorso MTU genererà un errore. IP_PMTUDISC_DONT forza tutti i pacchetti in uscita ad avere il bit DF non impostato e i pacchetti verranno frammentati in base all'interfaccia MTU. IP_PMTUDISC_PROBE forzarà che tutti i pacchetti in uscita abbiano il set di bit DF e un tentativo di invio di pacchetti più grandi dell'interfaccia MTU genererà un errore.
IP_MULTICAST_IF DWORD Ottiene o imposta l'interfaccia in uscita per l'invio del traffico multicast IPv4. Questa opzione non modifica l'interfaccia predefinita per la ricezione del traffico multicast IPv4. Il valore di input per l'impostazione di questa opzione è un indirizzo IPv4 a 4 byte nell'ordine di byte di rete. Questo parametro DWORD può anche essere un indice di interfaccia nell'ordine di byte di rete. Qualsiasi indirizzo IP nel blocco 0.x.x.x (primo ottetto di 0) tranne l'indirizzo IPv4 0.0.0.0.0 viene considerato come indice di interfaccia. Un indice di interfaccia è un numero a 24 bit e il blocco di indirizzi IPv4 0.0.0.0/8 non viene usato (questo intervallo è riservato). L'indice di interfaccia può essere usato per specificare l'interfaccia predefinita per il traffico multicast per IPv4. Se optval è zero , per l'invio di traffico multicast viene specificata l'interfaccia predefinita per la ricezione del multicast. Quando si ottiene questa opzione, optval restituisce l'indice di interfaccia predefinito corrente per l'invio del traffico IPv4 multicast nell'ordine dei byte host.
IP_MULTICAST_LOOP DWORD (booleano) Per un socket aggiunto a uno o più gruppi multicast, questo controlla se riceverà una copia dei pacchetti in uscita inviati a tali gruppi multicast tramite l'interfaccia multicast selezionata. Per impostazione predefinita, IP_MULTICAST_LOOP è abilitata (valore 1/TRUE), quindi i socket riceveranno pacchetti multicast corrispondenti inviati dal computer corrente. Se si disabilita questa opzione (impostandola su 0/FALSE), questo socket non riceverà i multicast inviati dal computer locale, anche se il socket è aperto nell'interfaccia di loopback.

Non è compatibile con la versione POSIX di IP_MULTICAST_LOOP, l'opzione deve essere impostata sul socket ricevente; mentre l'opzione POSIX deve essere impostata sul socket di invio.
IP_MULTICAST_TTL DWORD Imposta/ottiene il valore TTL associato al traffico multicast IP nel socket.
IP_OPTIONS char [] Specifica le opzioni IP da inserire nei pacchetti in uscita. L'impostazione di nuove opzioni sovrascrive tutte le opzioni specificate in precedenza. L'impostazione di optval su zero rimuove tutte le opzioni specificate in precedenza. IP_OPTIONS supporto non è necessario; per verificare se IP_OPTIONS è supportato, usare getsockopt per ottenere le opzioni correnti. Se getsockopt ha esito negativo, IP_OPTIONS non è supportato.
IP_ORIGINAL_ARRIVAL_IF DWORD (booleano) Indica se la funzione LPFN_WSARECVMSG (WSARecvMsg) deve restituire dati di controllo facoltativi contenenti l'interfaccia di arrivo in cui è stato ricevuto il pacchetto per i socket di datagrammi. Questa opzione consente all'interfaccia IPv4 in cui è stato ricevuto il pacchetto di essere restituito nella struttura WSAMSG . Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IP_PKTINFO DWORD Indica che le informazioni sui pacchetti devono essere restituite dalla funzione WSARecvMsg .
IP_RECEIVE_BROADCAST DWORD (booleano) Consente o blocca la ricezione della trasmissione.
IP_RECVIF DWORD (booleano) Indica se lo stack IP deve popolare il buffer di controllo con informazioni dettagliate sull'interfaccia che ha ricevuto un pacchetto con un socket di datagram. Quando questo valore è true, la funzione LPFN_WSARECVMSG (WSARecvMsg) restituirà dati di controllo facoltativi contenenti l'interfaccia in cui è stato ricevuto il pacchetto per i socket del datagram. Questa opzione consente all'interfaccia IPv4 in cui è stato ricevuto il pacchetto di essere restituito nella struttura WSAMSG . Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IP_RECVTOS DWORD (booleano) Indica se lo stack IP deve popolare il buffer di controllo con un messaggio contenente il campo di intestazione IPv4 Type of Service (TOS) in un datagram ricevuto. Quando questo valore è true, la funzione LPFN_WSARECVMSG (WSARecvMsg) restituirà dati di controllo facoltativi contenenti il valore del campo di intestazione TOS IPv4 del datagram ricevuto. Questa opzione consente di restituire il campo di intestazione TOS IPv4 del datagramma ricevuto nella struttura WSAMSG . Il tipo di messaggio restituito sarà IP_TOS. Verranno restituiti tutti i bit DSCP e ECN del campo TOS. Questa opzione è valida solo per i socket di datagrammi (il tipo di socket deve essere SOCK_DGRAM).
IP_RECVTTL DWORD (booleano) Indica che le informazioni sull'hop (TTL) devono essere restituite nella funzione LPFN_WSARECVMSG (WSARecvMsg). Se optval è impostato su 1 nella chiamata a setsockopt, l'opzione è abilitata. Se impostato su 0, l'opzione è disabilitata. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IP_TOS DWORD (booleano) Non usare. Il tipo di impostazioni del servizio (TOS) deve essere impostato solo usando l'API Qualità del servizio. Per altre informazioni, vedere Servizi differenziati nella sezione Qualità del servizio di Platform SDK.
IP_TTL DWORD (booleano) Modifica il valore predefinito impostato dal provider di servizi TCP/IP nel campo TTL dell'intestazione IP nei datagrammi in uscita. IP_TTL supporto non è necessario; per verificare se IP_TTL è supportato, usare getsockopt per ottenere le opzioni correnti. Se getsockopt ha esito negativo, IP_TTL non è supportato.
IP_UNBLOCK_SOURCE ip_mreq_source Aggiunge l'origine specificata come mittente al gruppo e all'interfaccia multicast forniti.
IP_UNICAST_IF DWORD (IF_INDEX) Ottiene o imposta l'interfaccia in uscita per l'invio del traffico IPv4. Questa opzione non modifica l'interfaccia predefinita per la ricezione del traffico IPv4. Questa opzione è importante per i computer multihomed. Il valore di input per l'impostazione di questa opzione è un indirizzo IPv4 a 4 byte nell'ordine dei byte di rete. Questo parametro DWORD deve essere un indice di interfaccia nell'ordine dei byte di rete. Qualsiasi indirizzo IP nel blocco 0.x.x.x (primo ottetto di 0) ad eccezione dell'indirizzo IPv4 0.0.0.0 viene considerato come indice di interfaccia. Un indice di interfaccia è un numero a 24 bit e il blocco di indirizzi IPv4 0.0.0.0/8 non viene usato (questo intervallo è riservato). L'indice di interfaccia può essere usato per specificare l'interfaccia predefinita per l'invio del traffico per IPv4. La funzione GetAdaptersAddresses può essere utilizzata per ottenere le informazioni sull'indice dell'interfaccia. Se optval è zero , l'interfaccia predefinita per l'invio del traffico è impostata su non specificato. Quando si ottiene questa opzione, il valore optval restituisce l'indice dell'interfaccia predefinito corrente per l'invio del traffico IPv4 nell'ordine di byte host.
IP_USER_MTU DWORD Ottiene o imposta un limite superiore sul livello IP MTU (in byte) per il socket specificato. Se il valore è superiore alla stima del percorso MTU (che è possibile recuperare su un socket connesso eseguendo una query sull'opzione socket IP_MTU ), l'opzione non ha alcun effetto. Se il valore è inferiore, i pacchetti in uscita più grandi di questo verranno frammentati o non verranno inviati, a seconda del valore di IP_DONTFRAGMENT. Il valore predefinito è IP_UNSPECIFIED_USER_MTU (MAXULONG). Per la sicurezza dei tipi, è consigliabile usare le funzioni WSAGetIPUserMtu e WSASetIPUserMtu anziché usare direttamente l'opzione socket.
IP_WFP_REDIRECT_CONTEXT WSACMSGHDR con dati di controllo Tipo di dati ausiliari del socket di datagram (cmsg_type) per indicare il contesto di reindirizzamento per un socket UDP usato da un servizio di reindirizzamento di Windows Filtering Platform (WFP).
IP_WFP_REDIRECT_RECORDS WSACMSGHDR con dati di controllo Tipo di dati ausiliari del socket datagram (cmsg_type) per indicare il record di reindirizzamento per un socket UDP usato da un servizio di reindirizzamento di Windows Filtering Platform (WFP).

Supporto di Windows per le opzioni di IP_PROTO

Opzione Windows 10 Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ADD_IFLIST A partire da Windows 10, versione 1803
IP_ADD_MEMBERSHIP x x x x x x
IP_ADD_SOURCE_MEMBERSHIP x x x x x x
IP_BLOCK_SOURCE x x x x x x
IP_DEL_IFLIST A partire da Windows 10, versione 1803
IP_DONTFRAGMENT x x x x x x
IP_DROP_MEMBERSHIP x x x x x x
IP_DROP_SOURCE_MEMBERSHIP x x x x x x
IP_GET_IFLIST A partire da Windows 10, versione 1803
IP_HDRINCL x x x x x x
IP_IFLIST A partire da Windows 10, versione 1803
IP_MULTICAST_IF x x x x x x
IP_MULTICAST_LOOP x x x x x x
IP_MULTICAST_TTL x x x x x x
IP_OPTIONS x x x x x x
IP_ORIGINAL_ARRIVAL_IF x x x x
IP_PKTINFO x x x x x x
IP_RECEIVE_BROADCAST x x x x x x
IP_RECVIF A partire da Windows 10 versione 1703 x x x x x
IP_RECVTTL x
IP_TOS x x x
IP_TTL x x x x x x
IP_UNBLOCK_SOURCE x x x x x x
IP_UNICAST_IF x x x x x x
IP_WFP_REDIRECT_CONTEXT x x x
IP_WFP_REDIRECT_RECORDS x x x

Opzione Windows Server 2003 Windows XP
IP_ADD_IFLIST
IP_ADD_MEMBERSHIP x x
IP_ADD_SOURCE_MEMBERSHIP x x
IP_BLOCK_SOURCE x x
IP_DEL_IFLIST
IP_DONTFRAGMENT x x
IP_DROP_MEMBERSHIP x x
IP_DROP_SOURCE_MEMBERSHIP x x
IP_GET_IFLIST
IP_HDRINCL x x
IP_IFLIST
IP_MULTICAST_IF x x
IP_MULTICAST_LOOP x x
IP_MULTICAST_TTL x x
IP_OPTIONS x x
IP_ORIGINAL_ARRIVAL_IF
IP_PKTINFO x x
IP_RECEIVE_BROADCAST x x
IP_RECVIF
IP_RECVTTL
IP_TOS
IP_TTL x x
IP_UNBLOCK_SOURCE x x
IP_UNICAST_IF
IP_WFP_REDIRECT_CONTEXT
IP_WFP_REDIRECT_RECORDS

Commenti

In Microsoft Windows Software Development Kit (SDK) rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e IPPROTO_IP livello viene definito nel file di intestazione Ws2def.h che viene automaticamente incluso nel file di intestazione Winsock2.h . Alcune delle opzioni di socket IPPROTO_IP sono definite nel file di intestazione Ws2ipdef.h che viene automaticamente incluso dal file di intestazione Ws2tcpip.h . Le opzioni rimanenti IPPROTO_IP socket sono definite nel file di intestazione Wsipv6ok.h che viene automaticamente incluso dal file di intestazione Winsock2.h . I file di intestazione Ws2def.h, Ws2ipdef.h e Wsipv6ok.h non devono mai essere usati direttamente.

In Platform SDK rilasciato per Windows Server 2003 e Windows XP, il livello di IPPROTO_IP viene definito nel file di intestazione Winsock2.h . Alcune delle opzioni di socket IPPROTO_IP sono definite nel file di intestazione Ws2tcpip.h . Le opzioni rimanenti IPPROTO_IP socket sono definite nel file di intestazione Wsipv6ok.h che viene automaticamente incluso dal file di intestazione Winsock2.h . Il file di intestazione Wsipv6ok.h non deve mai essere usato direttamente.

Requisiti

Requisito Valore
Intestazione
Ws2def.h (includono Winsock2.h);
Ws2ipdef.h (includono Ws2tcpip.h);
Wsipv6ok.h (include Winsock2.h)