Opzioni socket IPPROTO_IP
Le tabelle seguenti descrivono IPPROTO_IP opzioni socket applicabili ai socket creati per la famiglia di indirizzi IPv4 (AF_INET). 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.
Alcune opzioni socket richiedono più spiegazioni di quanto queste tabelle possano trasmettere; tali opzioni contengono collegamenti a pagine aggiuntive.
Opzioni
Opzione | Recupero | Set | Tipo Optval | Descrizione |
---|---|---|---|---|
IP_ADD_IFLIST | yes | DWORD (IF_INDEX) | Aggiunge un indice di interfaccia all'opzione IFLIST associata all'opzione IP_IFLIST . | |
IP_ADD_MEMBERSHIP | yes | ip_mreq | Unire il socket al gruppo multicast fornito nell'interfaccia specificata. | |
IP_ADD_SOURCE_MEMBERSHIP | yes | ip_mreq_source | Unire il gruppo multicast fornito nell'interfaccia specificata e accettare l'origine dati dall'indirizzo di origine fornito. | |
IP_BLOCK_SOURCE | yes | ip_mreq_source | Rimuove l'origine specificata come mittente per il gruppo e l'interfaccia multicast forniti. | |
IP_DEL_IFLIST | yes | 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 non essere aggiornate dopo la rimozione di un'interfaccia. | |
IP_DONTFRAGMENT | yes | yes | 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 | yes | 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 il codice seguente: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0. | |
IP_DROP_SOURCE_MEMBERSHIP | yes | ip_mreq_source | Elimina l'appartenenza al gruppo multicast, all'interfaccia e all'indirizzo di origine specificati. | |
IP_GET_IFLIST | yes | DWORD[] (IF_INDEX[]) | Ottiene l'ifLIST corrente associato all'opzione IP_IFLIST . Restituisce un errore se IP_IFLIST non è abilitato. | |
IP_HDRINCL | yes | yes | 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 | yes | yes | DWORD (booleano) | Ottiene o imposta lo stato IP_IFLIST del socket. Quando questa opzione è impostata su true, la ricezione di Datagram è limitata alle interfacce che si trovano in 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 | yes | DWORD | Ottiene la stima del percorso MTU del sistema. Il socket deve essere connesso. | |
IP_MTU_DISCOVER | yes | yes | 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 datagrammi, IP_PMTUDISC_DO forza il set di bit DF di tutti i pacchetti in uscita e un tentativo di inviare pacchetti di dimensioni superiori al percorso MTU genererà un errore. IP_PMTUDISC_DONT forzare l'impostazione del bit DF per tutti i pacchetti in uscita e i pacchetti verranno frammentati in base all'interfaccia MTU. IP_PMTUDISC_PROBE forza tutti i pacchetti in uscita a impostare il bit DF e un tentativo di inviare pacchetti di dimensioni superiori a MTU dell'interfaccia genererà un errore. |
IP_MULTICAST_IF | yes | yes | 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 dei byte di rete. Questo parametro DWORD può anche 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 dell'interfaccia può essere usato per specificare l'interfaccia predefinita per il traffico multicast per IPv4. Se optval è zero , viene specificata l'interfaccia predefinita per la ricezione del multicast per l'invio di traffico 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 | yes | yes | 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 è abilitato (valore 1/TRUE), quindi i socket riceveranno pacchetti multicast corrispondenti inviati dal computer corrente. La disabilitazione di questa opzione (impostandola su 0/FALSE) significa che 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 | yes | yes | DWORD | Imposta/ottiene il valore TTL associato al traffico multicast IP nel socket. |
IP_OPTIONS | yes | yes | 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 non è necessario il supporto; 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 | yes | yes | 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 del datagram. Questa opzione consente la restituzione del pacchetto nell'interfaccia IPv4 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 | yes | yes | DWORD | Indica che le informazioni sui pacchetti devono essere restituite dalla funzione WSARecvMsg . |
IP_RECEIVE_BROADCAST | yes | yes | DWORD (booleano) | Consente o blocca la ricezione della trasmissione. |
IP_RECVIF | yes | yes | 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 datagrammi. 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 la restituzione del pacchetto nell'interfaccia IPv4 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 | yes | yes | 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 verrà IP_TOS. Verranno restituiti tutti i bit DSCP e ECN del campo TOS. Questa opzione è valida solo nei socket del datagramma (il tipo di socket deve essere SOCK_DGRAM). |
IP_RECVECN | yes | yes | DWORD (booleano) | Indica se lo stack IP deve popolare il buffer di controllo con un messaggio contenente i bit ECN del campo di intestazione IPv4 Type of Service (TOS) in un datagram ricevuto. Quando questo valore è true, la funzione LPFN_WSARECVMSG (WSARecvMsg) restituirà i dati di controllo facoltativi contenenti i bit ECN del valore del campo di intestazione TOS IPv4 del datagram ricevuto. Questa opzione consente di restituire i bit ECN del campo di intestazione TOS IPv4 del datagramma ricevuto nella struttura WSAMSG. Il tipo di messaggio restituito verrà IP_ECN. Verranno restituiti tutti i 2 bit ECN del campo TOS. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW). Per la sicurezza dei tipi, è consigliabile usare le funzioni WSAGetRecvIPEcn e WSASetRecvIPEcn anziché usare direttamente l'opzione socket. |
IP_RECVTTL | yes | yes | 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 | yes | yes | DWORD (booleano) | Non utilizzare. Le impostazioni del tipo di servizio (TOS) devono essere impostate solo usando l'API Qualità del servizio. Per altre informazioni, vedere Servizi differenziati nella sezione Qualità del servizio di Platform SDK. |
IP_TTL | yes | yes | 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 non è necessario il supporto; 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 | yes | ip_mreq_source | Aggiunge l'origine specificata come mittente al gruppo e all'interfaccia multicast forniti. | |
IP_UNICAST_IF | yes | yes | 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 dell'interfaccia può essere usato per specificare l'interfaccia predefinita per l'invio del traffico per IPv4. La funzione GetAdaptersAddresses può essere usata per ottenere le informazioni sull'indice dell'interfaccia. Se optval è zero , l'interfaccia predefinita per l'invio del traffico viene impostata su non specificato. Quando si ottiene questa opzione, optval restituisce l'indice di interfaccia predefinito corrente per l'invio del traffico IPv4 nell'ordine dei byte host. |
IP_USER_MTU | yes | yes | DWORD | Ottiene o imposta un limite superiore sul MTU del livello IP (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 maggiori 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 | yes | yes | WSACMSGHDR con dati di controllo | Tipo di dati ausiliario del socket datagram (cmsg_type) per indicare il contesto di reindirizzamento per un socket UDP usato da un servizio di reindirizzamento di Windows Filtering Platform (WFP) in modalità utente. |
IP_WFP_REDIRECT_RECORDS | yes | yes | WSACMSGHDR con dati di controllo | Tipo di dati ausiliario 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) in modalità utente. |
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 | yes | sì | sì | sì | sì | yes |
IP_ADD_SOURCE_MEMBERSHIP | yes | sì | sì | sì | sì | yes |
IP_BLOCK_SOURCE | yes | sì | sì | sì | sì | yes |
IP_DEL_IFLIST | A partire da Windows 10, versione 1803 | |||||
IP_DONTFRAGMENT | yes | sì | sì | sì | sì | yes |
IP_DROP_MEMBERSHIP | yes | sì | sì | sì | sì | yes |
IP_DROP_SOURCE_MEMBERSHIP | yes | sì | sì | sì | sì | yes |
IP_GET_IFLIST | A partire da Windows 10, versione 1803 | |||||
IP_HDRINCL | yes | sì | sì | sì | sì | yes |
IP_IFLIST | A partire da Windows 10, versione 1803 | |||||
IP_MULTICAST_IF | yes | sì | sì | sì | sì | yes |
IP_MULTICAST_LOOP | yes | sì | sì | sì | sì | yes |
IP_MULTICAST_TTL | yes | sì | sì | sì | sì | yes |
IP_OPTIONS | yes | sì | sì | sì | sì | yes |
IP_ORIGINAL_ARRIVAL_IF | yes | sì | sì | yes | ||
IP_PKTINFO | yes | sì | sì | sì | sì | yes |
IP_RECEIVE_BROADCAST | yes | sì | sì | sì | sì | yes |
IP_RECVIF | A partire da Windows 10, versione 1703 | yes | sì | sì | sì | yes |
IP_RECVTTL | yes | |||||
IP_TOS | yes | sì | yes | |||
IP_TTL | yes | sì | sì | sì | sì | yes |
IP_UNBLOCK_SOURCE | yes | sì | sì | sì | sì | yes |
IP_UNICAST_IF | yes | sì | sì | sì | sì | yes |
IP_WFP_REDIRECT_CONTEXT | yes | sì | yes | |||
IP_WFP_REDIRECT_RECORDS | yes | sì | yes |
Opzione | Windows Server 2003 | Windows XP |
---|---|---|
IP_ADD_IFLIST | ||
IP_ADD_MEMBERSHIP | yes | yes |
IP_ADD_SOURCE_MEMBERSHIP | yes | yes |
IP_BLOCK_SOURCE | yes | yes |
IP_DEL_IFLIST | ||
IP_DONTFRAGMENT | yes | yes |
IP_DROP_MEMBERSHIP | yes | yes |
IP_DROP_SOURCE_MEMBERSHIP | yes | yes |
IP_GET_IFLIST | ||
IP_HDRINCL | yes | yes |
IP_IFLIST | ||
IP_MULTICAST_IF | yes | yes |
IP_MULTICAST_LOOP | yes | yes |
IP_MULTICAST_TTL | yes | yes |
IP_OPTIONS | yes | yes |
IP_ORIGINAL_ARRIVAL_IF | ||
IP_PKTINFO | yes | yes |
IP_RECEIVE_BROADCAST | yes | yes |
IP_RECVIF | ||
IP_RECVTTL | ||
IP_TOS | ||
IP_TTL | yes | yes |
IP_UNBLOCK_SOURCE | yes | yes |
IP_UNICAST_IF | ||
IP_WFP_REDIRECT_CONTEXT | ||
IP_WFP_REDIRECT_RECORDS |
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_IP livello è definito nel file di intestazione Ws2def.h , incluso automaticamente nel file di intestazione Winsock2.h . Alcune delle opzioni socket IPPROTO_IP sono definite nel file di intestazione Ws2ipdef.h , incluso automaticamente dal file di intestazione Ws2tcpip.h . Le opzioni socket rimanenti IPPROTO_IP sono definite nel file di intestazione Wsipv6ok.h , incluso automaticamente 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 socket IPPROTO_IP sono definite nel file di intestazione Ws2tcpip.h . Le opzioni socket rimanenti IPPROTO_IP sono definite nel file di intestazione Wsipv6ok.h , incluso automaticamente dal file di intestazione Winsock2.h . Il file di intestazione Wsipv6ok.h non deve mai essere usato direttamente.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|