IPPROTO_IP socketopties

In de volgende tabellen worden IPPROTO_IP socketopties beschreven die van toepassing zijn op sockets die zijn gemaakt voor de IPv4-adresfamilie (AF_INET). Zie de referentiepagina's voor de getsockopt - en setsockopt-functie voor meer informatie over het ophalen en instellen van socketopties.

Als u protocollen wilt inventariseren en ondersteunde eigenschappen voor elk geïnstalleerd protocol wilt detecteren, gebruikt u de functie WSAEnumProtocols, WSCEnumProtocols of WSCEnumProtocols32 .

Voor sommige socketopties is meer uitleg vereist dan deze tabellen kunnen overbrengen; dergelijke opties bevatten koppelingen naar extra pagina's.

Options

Option Get Set Type optval Description
IP_ADD_IFLIST ja DWORD (IF_INDEX) Voegt een interfaceindex toe aan de IFLIST die is gekoppeld aan de optie IP_IFLIST .
IP_ADD_MEMBERSHIP ja ip_mreq Koppel de socket aan de opgegeven multicastgroep op de opgegeven interface.
IP_ADD_SOURCE_MEMBERSHIP ja ip_mreq_source Neem deel aan de opgegeven multicastgroep op de opgegeven interface en accepteer gegevens die afkomstig zijn van het opgegeven bronadres.
IP_BLOCK_SOURCE ja ip_mreq_source Hiermee verwijdert u de opgegeven bron als afzender naar de opgegeven multicastgroep en interface.
IP_DEL_IFLIST ja DWORD (IF_INDEX) Hiermee verwijdert u een interface-index uit de IFLIST die is gekoppeld aan de optie IP_IFLIST . Vermeldingen kunnen alleen door de toepassing worden verwijderd. Houd er dus rekening mee dat vermeldingen verlopen zodra een interface is verwijderd.
IP_DONTFRAGMENT ja ja DWORD (Booleaanse waarde) Geeft aan dat gegevens niet moeten worden gefragmenteerd, ongeacht de lokale MTU. Alleen geldig voor berichtengeoriënteerde protocollen. Microsoft TCP/IP-providers respecteren deze optie voor UDP en ICMP.
IP_DROP_MEMBERSHIP ja ip_mreq Laat de opgegeven multicastgroep uit de opgegeven interface. Serviceproviders moeten deze optie ondersteunen wanneer multicast wordt ondersteund. Ondersteuning wordt aangegeven in de WSAPROTOCOL_INFO structuur die wordt geretourneerd door een functie-aanroep WSAEnumProtocols met het volgende: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0.
IP_DROP_SOURCE_MEMBERSHIP ja ip_mreq_source Vermindert het lidmaatschap van de opgegeven multicastgroep, interface en bronadres.
IP_GET_IFLIST ja DWORD[] (IF_INDEX[]) Hiermee haalt u de huidige IFLIST op die is gekoppeld aan de optie IP_IFLIST . Retourneert een fout als IP_IFLIST niet is ingeschakeld.
IP_HDRINCL ja ja DWORD (Booleaanse waarde) Als deze waarde is ingesteld op TRUE, geeft u aan dat de toepassing de IP-header levert. Is alleen van toepassing op SOCK_RAW sockets. De TCP/IP-serviceprovider kan het id-veld instellen als de waarde die is opgegeven door de toepassing nul is. De optie IP_HDRINCL wordt alleen toegepast op het SOCK_RAW type protocol. Een TCP/IP-serviceprovider die ondersteuning biedt voor SOCK_RAW moet ook IP_HDRINCL ondersteunen.
IP_IFLIST ja ja DWORD (Booleaanse waarde) Hiermee haalt u de IP_IFLIST status van de socket op of stelt u deze in. Wanneer deze optie is ingesteld op true, is datagram-ontvangst beperkt tot interfaces die zich in de IFLIST bevinden. Datagrammen die op andere interfaces worden ontvangen, worden genegeerd. IFLIST begint leeg. Gebruik IP_ADD_IFLIST en IP_DEL_IFLIST om de IFLIST te bewerken.
IP_MTU ja DWORD Haalt de schatting van het systeem op van het pad MTU. De socket moet zijn aangesloten.
IP_MTU_DISCOVER ja ja DWORD (PMTUD_STATE) Hiermee haalt u de MTU-detectiestatus van het pad voor de socket op of stelt u deze in. De standaardwaarde is IP_PMTUDISC_NOT_SET. Voor stroomsockets voert IP_PMTUDISC_NOT_SET en IP_PMTUDISC_DO pad MTU-detectie uit. IP_PMTUDISC_DONT en IP_PMTUDISC_PROBE schakelt pad MTU-detectie uit. Voor datagramsockets dwingt IP_PMTUDISC_DO alle uitgaande pakketten af dat de DF-bit is ingesteld en een poging om pakketten te verzenden die groter zijn dan het pad MTU, resulteert in een fout. IP_PMTUDISC_DONT dwingt alle uitgaande pakketten om de DF-bit niet in te stellen en pakketten worden gefragmenteerd volgens interface-MTU. IP_PMTUDISC_PROBE dwingt alle uitgaande pakketten om de DF-bit in te stellen en een poging om pakketten te verzenden die groter zijn dan interface-MTU, resulteert in een fout.
IP_MULTICAST_IF ja ja DWORD Hiermee haalt u de uitgaande interface op voor het verzenden van IPv4 multicast-verkeer. Met deze optie wordt de standaardinterface voor het ontvangen van IPv4 multicast-verkeer niet gewijzigd. De invoerwaarde voor het instellen van deze optie is een IPv4-adres van 4 bytes in netwerk bytevolgorde. Deze DWORD-parameter kan ook een interface-index in netwerk bytevolgorde zijn. Elk IP-adres in het blok 0.x.x.x (eerste octet van 0), met uitzondering van IPv4-adres 0.0.0.0 wordt behandeld als een interface-index. Een interface-index is een 24-bits getal en het IPv4-adresblok 0.0.0.0/8 wordt niet gebruikt (dit bereik is gereserveerd). De interface-index kan worden gebruikt om de standaardinterface voor multicast-verkeer voor IPv4 op te geven. Als optval nul is, wordt de standaardinterface voor het ontvangen van multicast opgegeven voor het verzenden van multicast-verkeer. Wanneer u deze optie krijgt, retourneert de optval de huidige standaardinterface-index voor het verzenden van multicast IPv4-verkeer in host bytevolgorde.
IP_MULTICAST_LOOP ja ja DWORD (Booleaanse waarde) Voor een socket die is gekoppeld aan een of meer multicast-groepen, bepaalt deze of deze een kopie ontvangt van uitgaande pakketten die via de geselecteerde multicast-interface naar deze multicast-groepen worden verzonden. Standaard is IP_MULTICAST_LOOP ingeschakeld (waarde 1/TRUE), zodat sockets overeenkomende multicastpakketten ontvangen die door de huidige machine worden verzonden. Als u deze optie uitschakelt (door deze in te stellen op 0/ONWAAR), betekent dit dat deze socket geen multicasts ontvangt die vanaf de lokale computer worden verzonden, zelfs niet als de socket is geopend op de loopback-interface.

Dit is niet compatibel met de POSIX-versie van IP_MULTICAST_LOOP: de optie moet worden ingesteld op de ontvangende socket; terwijl de POSIX-optie moet worden ingesteld op de verzendsocket.
IP_MULTICAST_TTL ja ja DWORD Hiermee stelt/haalt u de TTL-waarde op die is gekoppeld aan IP multicast-verkeer op de socket.
IP_OPTIONS ja ja char [] Hiermee geeft u IP-opties worden ingevoegd in uitgaande pakketten. Als u nieuwe opties instelt, worden alle eerder opgegeven opties overschreven. Als u optval instelt op nul, worden alle eerder opgegeven opties verwijderd. IP_OPTIONS ondersteuning is niet vereist; om te controleren of IP_OPTIONS wordt ondersteund, gebruikt u getsockopt om de huidige opties op te halen. Als getsockopt mislukt, wordt IP_OPTIONS niet ondersteund.
IP_ORIGINAL_ARRIVAL_IF ja ja DWORD (Booleaanse waarde) Geeft aan of de functie LPFN_WSARECVMSG (WSARecvMsg) optionele besturingsgegevens moet retourneren die de aankomstinterface bevatten waarin het pakket is ontvangen voor datagram sockets. Met deze optie kan de IPv4-interface waar het pakket is ontvangen, worden geretourneerd in de WSAMSG-structuur . Deze optie is alleen geldig voor datagram en onbewerkte sockets (het sockettype moet SOCK_DGRAM of SOCK_RAW zijn).
IP_PKTINFO ja ja DWORD Geeft aan dat pakketgegevens moeten worden geretourneerd door de functie WSARecvMsg .
IP_RECEIVE_BROADCAST ja ja DWORD (Booleaanse waarde) Hiermee staat u de ontvangst van de uitzending toe of blokkeert u deze.
IP_RECVIF ja ja DWORD (Booleaanse waarde) Geeft aan of de IP-stack de besturingsbuffer moet vullen met details over welke interface een pakket met een datagramsocket heeft ontvangen. Wanneer deze waarde waar is, retourneert de functie LPFN_WSARECVMSG (WSARecvMsg) optionele besturingsgegevens met de interface waar het pakket is ontvangen voor datagram sockets. Met deze optie kan de IPv4-interface waar het pakket is ontvangen, worden geretourneerd in de WSAMSG-structuur . Deze optie is alleen geldig voor datagram en onbewerkte sockets (het sockettype moet SOCK_DGRAM of SOCK_RAW zijn).
IP_RECVTOS ja ja DWORD (Booleaanse waarde) Geeft aan of de IP-stack de besturingsbuffer moet vullen met een bericht met het IPv4-headerveld Type of Service (TOS) op een ontvangen datagram. Wanneer deze waarde waar is, retourneert de functie LPFN_WSARECVMSG (WSARecvMsg) optionele besturingsgegevens met de veldwaarde voor de IPv4-header van het ontvangen datagram. Met deze optie kan het headerveld TOS IPv4 van het ontvangen datagram worden geretourneerd in de WSAMSG-structuur . Het geretourneerde berichttype wordt IP_TOS. Alle DSCP- en ECN-bits van het veld TOS worden geretourneerd. Deze optie is alleen geldig voor datagram sockets (het sockettype moet SOCK_DGRAM).
IP_RECVECN ja ja DWORD (Booleaanse waarde) Geeft aan of de IP-stack de besturingsbuffer moet vullen met een bericht met de ECN-bits van het IPv4-headerveld Type of Service (TOS) op een ontvangen datagram. Als deze waarde waar is, retourneert de functie LPFN_WSARECVMSG (WSARecvMsg) optionele besturingsgegevens met de ECN-bits van de veldwaarde van de TOS IPv4-header van het ontvangen datagram. Met deze optie kunnen de ECN-bits van het veld TOS IPv4-header van het ontvangen datagram worden geretourneerd in de WSAMSG-structuur . Het geretourneerde berichttype wordt IP_ECN. Alle 2 ECN-bits van het veld TOS worden geretourneerd. Deze optie is alleen geldig voor datagram en onbewerkte sockets (het sockettype moet SOCK_DGRAM of SOCK_RAW zijn). De functies WSAGetRecvIPEcn en WSASetRecvIPEcn zijn afgeschaft omdat ze geen ondersteuning bieden voor dubbele stack-sockets. Gebruik deze socketoptie rechtstreeks. Stel op een socket met dubbele stack die niet afhankelijk is van een jokerteken zowel IP_RECVECN (niveau IPPROTO_IP) als IPV6_RECVECN (niveau IPPROTO_IPV6) in. Als de socket is gebonden aan een specifiek IPv6-adres, is alleen IPV6_RECVECN van toepassing. Als de socket is gebonden aan een IPv4-adres dat is toegewezen aan IPv6, is alleen IP_RECVECN van toepassing.
IP_RECVTTL ja ja DWORD (Booleaanse waarde) Geeft aan dat TTL-gegevens (hop) moeten worden geretourneerd in de functie LPFN_WSARECVMSG (WSARecvMsg). Als optval is ingesteld op 1 in de aanroep naar setsockopt, is de optie ingeschakeld. Als deze optie is ingesteld op 0, is de optie uitgeschakeld. Deze optie is alleen geldig voor datagram- en onbewerkte sockets (het sockettype moet SOCK_DGRAM of SOCK_RAW zijn).
IP_TOS ja ja DWORD (Booleaanse waarde) Niet gebruiken. De instellingen voor het type service (TOS) mogen alleen worden ingesteld met behulp van de Quality of Service-API. Zie Differentd Services in de sectie Quality of Service van de Platform SDK voor meer informatie.
IP_TTL ja ja DWORD (Booleaanse waarde) Hiermee wijzigt u de standaardwaarde die is ingesteld door de TCP/IP-serviceprovider in het TTL-veld van de IP-header in uitgaande datagrammen. IP_TTL ondersteuning is niet vereist; om te controleren of IP_TTL wordt ondersteund, gebruikt u getsockopt om de huidige opties op te halen. Als getsockopt mislukt, wordt IP_TTL niet ondersteund.
IP_UNBLOCK_SOURCE ja ip_mreq_source Hiermee voegt u de opgegeven bron toe als afzender aan de opgegeven multicast-groep en interface.
IP_UNICAST_IF ja ja DWORD (IF_INDEX) Hiermee haalt u de uitgaande interface op voor het verzenden van IPv4-verkeer. Met deze optie wordt de standaardinterface voor het ontvangen van IPv4-verkeer niet gewijzigd. Deze optie is belangrijk voor multihomed computers. De invoerwaarde voor het instellen van deze optie is een IPv4-adres van 4 bytes in netwerk bytevolgorde. Deze DWORD-parameter moet een interface-index in netwerk bytevolgorde zijn. Elk IP-adres in het blok 0.x.x.x (eerste octet van 0), met uitzondering van IPv4-adres 0.0.0.0 wordt behandeld als een interface-index. Een interface-index is een 24-bits getal en het IPv4-adresblok 0.0.0.0/8 wordt niet gebruikt (dit bereik is gereserveerd). De interface-index kan worden gebruikt om de standaardinterface voor het verzenden van verkeer voor IPv4 op te geven. De functie GetAdaptersAddresses kan worden gebruikt om de interface-indexinformatie te verkrijgen. Als optval nul is, wordt de standaardinterface voor het verzenden van verkeer ingesteld op niet-opgegeven. Wanneer u deze optie krijgt, retourneert de optval de huidige standaardinterface-index voor het verzenden van IPv4-verkeer in host bytevolgorde.
IP_USER_MTU ja ja DWORD Hiermee haalt u een bovengrens op voor de MTU van de IP-laag (in bytes) voor de opgegeven socket. Als de waarde hoger is dan de schatting van het pad MTU (die u op een verbonden socket kunt ophalen door een query uit te voeren op de IP_MTU socketoptie), heeft de optie geen effect. Als de waarde lager is, worden uitgaande pakketten groter dan dit gefragmenteerd of niet verzonden, afhankelijk van de waarde van IP_DONTFRAGMENT. De standaardwaarde is IP_UNSPECIFIED_USER_MTU (MAXULONG). De functies WSAGetIPUserMtu en WSASetIPUserMtu zijn afgeschaft omdat ze geen ondersteuning bieden voor dual-stack sockets. Gebruik deze socketoptie rechtstreeks. Stel op een dubbele stack-socket die niet-afhankelijk is of is gebonden aan een jokertekens zowel IP_USER_MTU (niveau IPPROTO_IP) als IPV6_USER_MTU (niveau IPPROTO_IPV6) in. Als de socket is gebonden aan een specifiek IPv6-adres, is alleen IPV6_USER_MTU van toepassing. Als de socket is gebonden aan een IPv4-adres dat is toegewezen aan een IPv6-adres, is alleen IP_USER_MTU van toepassing.
IP_WFP_REDIRECT_CONTEXT ja ja WSACMSGHDR met controlegegevens Een aanvullend gegevenstype van een datagramsocket (cmsg_type) om de omleidingscontext aan te geven voor een UDP-socket die wordt gebruikt door een gebruikersmodus Windows WFP-omleidingsservice (Filtering Platform).
IP_WFP_REDIRECT_RECORDS ja ja WSACMSGHDR met controlegegevens Een aanvullend gegevenstype van een datagram socket (cmsg_type) om de omleidingsrecord aan te geven voor een UDP-socket die wordt gebruikt door een gebruikersmodus Windows WFP-omleidingsservice (Filtering Platform).

Windows ondersteuning voor IP_PROTO opties

Option Windows 10 Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ADD_IFLIST Vanaf Windows 10 versie 1803
IP_ADD_MEMBERSHIP ja ja ja ja ja ja
IP_ADD_SOURCE_MEMBERSHIP ja ja ja ja ja ja
IP_BLOCK_SOURCE ja ja ja ja ja ja
IP_DEL_IFLIST Vanaf Windows 10 versie 1803
IP_DONTFRAGMENT ja ja ja ja ja ja
IP_DROP_MEMBERSHIP ja ja ja ja ja ja
IP_DROP_SOURCE_MEMBERSHIP ja ja ja ja ja ja
IP_GET_IFLIST Vanaf Windows 10 versie 1803
IP_HDRINCL ja ja ja ja ja ja
IP_IFLIST Vanaf Windows 10 versie 1803
IP_MULTICAST_IF ja ja ja ja ja ja
IP_MULTICAST_LOOP ja ja ja ja ja ja
IP_MULTICAST_TTL ja ja ja ja ja ja
IP_OPTIONS ja ja ja ja ja ja
IP_ORIGINAL_ARRIVAL_IF ja ja ja ja
IP_PKTINFO ja ja ja ja ja ja
IP_RECEIVE_BROADCAST ja ja ja ja ja ja
IP_RECVIF Vanaf Windows 10 versie 1703 ja ja ja ja ja
IP_RECVTTL ja
IP_TOS ja ja ja
IP_TTL ja ja ja ja ja ja
IP_UNBLOCK_SOURCE ja ja ja ja ja ja
IP_UNICAST_IF ja ja ja ja ja ja
IP_WFP_REDIRECT_CONTEXT ja ja ja
IP_WFP_REDIRECT_RECORDS ja ja ja

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

Remarks

In de Microsoft Windows Software Development Kit (SDK) uitgebracht voor Windows Vista en hoger, de organisatie van koptekstbestanden is gewijzigd en het niveau IPPROTO_IP is gedefinieerd in het headerbestand Ws2def.h dat automatisch wordt opgenomen in het Winsock2.h headerbestand. Sommige van de IPPROTO_IP socketopties worden gedefinieerd in het Ws2ipdef.h-headerbestand dat automatisch wordt opgenomen in het headerbestand Ws2tcpip.h . De resterende IPPROTO_IP socketopties worden gedefinieerd in het headerbestand Wsipv6ok.h dat automatisch wordt opgenomen in het headerbestand Winsock2.h . De headerbestanden Ws2def.h, Ws2ipdef.h en Wsipv6ok.h mogen nooit rechtstreeks worden gebruikt.

In de Platform SDK die is uitgebracht voor Windows Server 2003 en Windows XP, wordt het niveau IPPROTO_IP gedefinieerd in het headerbestand Winsock2.h. Sommige van de IPPROTO_IP socketopties worden gedefinieerd in het headerbestand Ws2tcpip.h . De resterende IPPROTO_IP socketopties worden gedefinieerd in het headerbestand Wsipv6ok.h dat automatisch wordt opgenomen in het headerbestand Winsock2.h . Het headerbestand Wsipv6ok.h mag nooit rechtstreeks worden gebruikt.

Requirements

Requirement Value
Header
Ws2def.h (inclusief Winsock2.h);
Ws2ipdef.h (inclusief Ws2tcpip.h);
Wsipv6ok.h (inclusief Winsock2.h)