Freigeben über


IPPROTO_IP-Socketoptionen

In den folgenden Tabellen werden IPPROTO_IP Socketoptionen beschrieben, die für Sockets gelten, die für die IPv4-Adressfamilie (AF_INET) erstellt wurden. Weitere Informationen zum Abrufen und Festlegen von Socketoptionen finden Sie auf den Referenzseiten der getsockopt- und setsockopt-Funktion.

Verwenden Sie die Funktion WSAEnumProtocols, WSCEnumProtocols oder WSCEnumProtocols32, um Protokolle auflisten und unterstützte Eigenschaften für jedes installierte Protokoll zu ermitteln.

Einige Socketoptionen erfordern mehr Erläuterungen, als diese Tabellen vermitteln können; solche Optionen enthalten Links zu weiteren Seiten.

Optionen

Option Abrufen Festlegen Optval-Typ Beschreibung
IP_ADD_IFLIST ja DWORD (IF_INDEX) Fügt der IFLIST, die der Option IP_IFLIST zugeordnet ist, einen Schnittstellenindex hinzu.
IP_ADD_MEMBERSHIP ja ip_mreq Verbinden Sie den Socket mit der bereitgestellten Multicastgruppe auf der angegebenen Schnittstelle.
IP_ADD_SOURCE_MEMBERSHIP ja ip_mreq_source Verknüpfen Sie die bereitgestellte Multicastgruppe auf der angegebenen Schnittstelle, und akzeptieren Sie Datenquellen aus der angegebenen Quelladresse.
IP_BLOCK_SOURCE ja ip_mreq_source Entfernt die angegebene Quelle als Absender zur bereitgestellten Multicastgruppe und -schnittstelle.
IP_DEL_IFLIST ja DWORD (IF_INDEX) Entfernt der IFLIST einen Schnittstellenindex, die der Option IP_IFLIST zugeordnet ist. Einträge können nur von der Anwendung entfernt werden. Beachten Sie daher, dass Einträge möglicherweise veraltet sind, sobald eine Schnittstelle entfernt wird.
IP_DONTFRAGMENT ja ja DWORD (boolean) Gibt an, dass Daten unabhängig von der lokalen MTU nicht fragmentiert werden sollten. Nur für nachrichtenorientierte Protokolle gültig. Microsoft TCP/IP-Anbieter respektieren diese Option für UDP und ICMP.
IP_DROP_MEMBERSHIP ja ip_mreq Verlässt die angegebene Multicastgruppe von der angegebenen Schnittstelle. Dienstanbieter müssen diese Option unterstützen, wenn Multicast unterstützt wird. Die Unterstützung wird in der WSAPROTOCOL_INFO-Struktur angegeben, die von einem WSAEnumProtocols-Funktionsaufruf mit folgendem Aufruf zurückgegeben wird: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0.
IP_DROP_SOURCE_MEMBERSHIP ja ip_mreq_source Legt die Mitgliedschaft an die angegebene Multicastgruppe, Schnittstelle und Quelladresse ab.
IP_GET_IFLIST ja DWORD[] (IF_INDEX[]) Ruft die aktuelle IFLIST ab, die der Option IP_IFLIST zugeordnet ist. Gibt einen Fehler zurück, wenn IP_IFLIST nicht aktiviert ist.
IP_HDRINCL ja ja DWORD (boolean) Wenn dieser Wert auf TRUE festgelegt ist, gibt die Anwendung den IP-Header an. Gilt nur für SOCK_RAW Sockets. Der TCP/IP-Dienstanbieter kann das ID-Feld festlegen, wenn der von der Anwendung angegebene Wert null ist. Die Option IP_HDRINCL wird nur auf den SOCK_RAW-Protokolltyp angewendet. Ein TCP/IP-Dienstanbieter, der SOCK_RAW unterstützt, sollte auch IP_HDRINCL unterstützen.
IP_IFLIST ja ja DWORD (boolean) Dient zum Abrufen oder Festlegen des IP_IFLIST Zustands des Sockets. Wenn diese Option auf „true” festgelegt ist, ist der Datagram-Empfang auf Schnittstellen beschränkt, die sich in der IFLIST befinden. In allen anderen Schnittstellen empfangene Datagramme werden ignoriert. IFLIST beginnt leer. Verwenden Sie IP_ADD_IFLIST und IP_DEL_IFLIST, um die IFLIST zu bearbeiten.
IP_MTU ja DWORD Ruft die Schätzung der Pfad-MTU des Systems ab. Socket muss verbunden sein.
IP_MTU_DISCOVER ja ja DWORD (PMTUD_STATE) Dient zum Abrufen oder Festlegen des Pfad-MTU-Ermittlungszustands für den Socket. Der Standardwert ist IP_PMTUDISC_NOT_SET. Für Datenstromsockets führen IP_PMTUDISC_NOT_SET und IP_PMTUDISC_DO Pfad-MTU-Ermittlung durch. IP_PMTUDISC_DONT und IP_PMTUDISC_PROBE deaktivieren die Pfad-MTU-Ermittlung. Bei Datagrammsockets erzwingt IP_PMTUDISC_DO, dass alle ausgehenden Pakete den DF-Bitsatz festgelegt haben, und ein Versuch, Pakete zu senden, die größer als der Pfad-MTU sind, führt zu einem Fehler. IP_PMTUDISC_DONT erzwingt, dass alle ausgehenden Pakete das DF-Bit nicht festgelegt haben, und Pakete werden entsprechend der Schnittstellen-MTU fragmentiert. IP_PMTUDISC_PROBE erzwingt, dass alle ausgehenden Pakete den DF-Bitsatz aufweisen, und ein Versuch, Pakete zu senden, die größer als die Schnittstellen-MTU sind, führt zu einem Fehler.
IP_MULTICAST_IF ja ja DWORD Dient zum Abrufen oder Festlegen der ausgehenden Schnittstelle zum Senden von IPv4-Multicastdatenverkehr. Diese Option ändert nicht die Standardschnittstelle für den Empfang von IPv4-Multicastdatenverkehr. Der Eingabewert zum Festlegen dieser Option ist eine 4-Byte-IPv4-Adresse in der Netzwerkbytereihenfolge. Dieser DWORD-Parameter kann auch ein Schnittstellenindex in der Netzwerkbytereihenfolge sein. Jede IP-Adresse im 0.x.x.x-Block (erstes Oktett von 0) mit Ausnahme der IPv4-Adresse 0.0.0.0 wird als Schnittstellenindex behandelt. Ein Schnittstellenindex ist eine 24-Bit-Zahl, und der Adressblock 0.0.0.0/8 IPv4 wird nicht verwendet (dieser Bereich ist reserviert). Der Schnittstellenindex kann verwendet werden, um die Standardschnittstelle für Multicastdatenverkehr für IPv4 anzugeben. Wenn optval null ist, wird die Standardschnittstelle für den Empfang von Multicast für das Senden von Multicastdatenverkehr angegeben. Beim Abrufen dieser Option gibt die optval den aktuellen Standardschnittstellenindex für das Senden von Multicast-IPv4-Datenverkehr in Hostbytereihenfolge zurück.
IP_MULTICAST_LOOP ja ja DWORD (boolean) Bei einem Socket, der einer oder mehreren Multicastgruppen beigetreten ist, steuert dies, ob eine Kopie ausgehender Pakete empfangen wird, die über die ausgewählte Multicastschnittstelle an diese Multicastgruppen gesendet werden. Standardmäßig ist IP_MULTICAST_LOOP aktiviert (Wert 1/TRUE), sodass Sockets übereinstimmende Multicastpakete empfangen, die vom aktuellen Computer gesendet werden. Das Deaktivieren dieser Option (durch Festlegen auf 0/FALSE) bedeutet, dass dieser Socket keine Multicasts empfängt, die vom lokalen Computer gesendet werden, auch wenn der Socket auf der Loopbackschnittstelle geöffnet ist.

Dies ist nicht mit der POSIX-Version von IP_MULTICAST_LOOP kompatibel – die Option muss auf dem empfangenden Socket festgelegt werden; während die POSIX-Option für den Sendesocket festgelegt werden muss.
IP_MULTICAST_TTL ja ja DWORD Legt fest/ruft den TTL-Wert ab, der dem IP-Multicastdatenverkehr im Socket zugeordnet ist.
IP_OPTIONS ja ja char [] Gibt die IP-Optionen an, die in ausgehende Paketen eingefügt werden sollen. Durch das Festlegen neuer Optionen werden alle zuvor angegebenen Optionen überschrieben. Durch Festlegen der Optval auf Null werden alle zuvor angegebenen Optionen entfernt. IP_OPTIONS-Unterstützung ist nicht erforderlich; um zu überprüfen, ob IP_OPTIONS unterstützt wird, verwenden Sie getsockopt, um aktuelle Optionen abzurufen. Wenn getsockopt fehlschlägt, wird IP_OPTIONS nicht unterstützt.
IP_ORIGINAL_ARRIVAL_IF ja ja DWORD (boolean) Gibt an, ob die Funktion LPFN_WSARECVMSG (WSARecvMsg) optionale Steuerelementdaten zurückgeben soll, die die Ankunftsschnittstelle enthalten, an der das Paket für Datagrammsockets empfangen wurde. Diese Option ermöglicht die IPv4-Schnittstelle, an der das Paket in der WSAMSG-Struktur zurückgegeben wurde. Diese Option ist nur für Datagramme und unformatierte Sockets gültig (der Sockettyp muss SOCK_DGRAM oder SOCK_RAW sein).
IP_PKTINFO ja ja DWORD Gibt an, dass Paketinformationen von der WSARecvMsg-Funktion zurückgegeben werden sollen.
IP_RECEIVE_BROADCAST ja ja DWORD (boolean) Ermöglicht oder blockiert den Übertragungsempfang.
IP_RECVIF ja ja DWORD (boolean) Gibt an, ob der IP-Stapel den Steuerpuffer mit Details dazu auffüllen soll, welche Schnittstelle ein Paket mit einem Datagrammsocket empfangen hat. Wenn dieser Wert wahr ist, gibt die Funktion LPFN_WSARECVMSG (WSARecvMsg) optionale Steuerelementdaten zurück, die die Schnittstelle enthalten, an der das Paket für Datagrammsockets empfangen wurde. Diese Option ermöglicht die IPv4-Schnittstelle, an der das Paket in der WSAMSG-Struktur zurückgegeben wurde. Diese Option ist nur für Datagramme und unformatierte Sockets gültig (der Sockettyp muss SOCK_DGRAM oder SOCK_RAW sein).
IP_RECVTOS ja ja DWORD (boolean) Gibt an, ob der IP-Stapel den Steuerpuffer mit einer Nachricht füllen soll, die das IPv4-Kopfzeilenfeld „Type of Service” (TOS) in einem empfangenen Datagramm enthält. Wenn dieser Wert wahr ist, gibt die Funktion LPFN_WSARECVMSG (WSARecvMsg) optionale Steuerelementdaten zurück, die den TOS IPv4-Kopfzeilenfeldwert des empfangenen Datagramms enthalten. Mit dieser Option kann das TOS IPv4-Kopfzeilenfeld des empfangenen Datagramms in der WSAMSG-Struktur zurückgegeben werden. Der zurückgegebene Nachrichtentyp wird IP_TOS sein. Alle DSCP- und ECN-Bits des TOS-Felds werden zurückgegeben. Diese Option ist nur für Datagrammsockets gültig (der Sockettyp muss SOCK_DGRAM sein).
IP_RECVECN ja ja DWORD (boolean) Gibt an, ob der IP-Stapel den Steuerpuffer mit einer Nachricht füllen soll, die die ECN-Bits des „Type of Service” (TOS) IPv4-Kopfzeilenfeldes in einem empfangenen Datagramm enthält. Wenn dieser Wert wahr ist, gibt die Funktion LPFN_WSARECVMSG (WSARecvMsg) optionale Steuerelementdaten zurück, die die ECN-Bits des TOS IPv4-Kopfzeilenfeldwertes des empfangenen Datagramms enthalten. Mit dieser Option können die ECN-Bits des TOS IPv4-Kopfzeilenfelds des empfangenen Datagramms in der WSAMSG-Struktur zurückgegeben werden. Der zurückgegebene Nachrichtentyp wird IP_ECN sein. Alle 2 ECN-Bits des TOS-Felds werden zurückgegeben. Diese Option ist nur für Datagramme und unformatierte Sockets gültig (der Sockettyp muss SOCK_DGRAM oder SOCK_RAW sein). Für die Typsicherheit sollten Sie die Funktionen WSAGetRecvIPEcn und WSASetRecvIPEcn verwenden, anstatt die Socketoption direkt zu verwenden.
IP_RECVTTL ja ja DWORD (boolean) Gibt an, dass die Informationen zum Hop (TTL) in der Funktion LPFN_WSARECVMSG (WSARecvMsg) zurückgegeben werden sollen. Wenn optval auf 1 für den Anruf auf setsockopt festgelegt ist, ist die Option aktiviert. Wenn die Option auf 0 festgelegt ist, ist die Option deaktiviert. Diese Option ist nur für Datagramme und unformatierte Sockets gültig (der Sockettyp muss SOCK_DGRAM oder SOCK_RAW sein).
IP_TOS ja ja DWORD (boolean) Nicht verwenden.. Der Typ der Diensteinstellungen (TOS) sollte nur mithilfe der Quality of Service-API festgelegt werden. Weitere Informationen finden Sie im Abschnitt „Quality of Service” der Platform SDK unter „Differenzierte Dienste”.
IP_TTL ja ja DWORD (boolean) Ändert den Standardwert, der vom TCP/IP-Dienstanbieter im TTL-Feld des IP-Headers in ausgehenden Datagrammen festgelegt wurde. IP_TTL-Unterstützung ist nicht erforderlich; um zu überprüfen, ob IP_TTL unterstützt wird, verwenden Sie getsockopt, um aktuelle Optionen abzurufen. Wenn getsockopt fehlschlägt, wird IP_TTL nicht unterstützt.
IP_UNBLOCK_SOURCE ja ip_mreq_source Fügt die angegebene Quelle als Absender zur bereitgestellten Multicastgruppe und -schnittstelle hinzu.
IP_UNICAST_IF ja ja DWORD (IF_INDEX) Dient zum Abrufen oder Festlegen der ausgehenden Schnittstelle zum Senden von IPv4-Datenverkehr. Diese Option ändert nicht die Standardschnittstelle für den Empfang von IPv4-Datenverkehr. Diese Option ist für Multihomed-Computer wichtig. Der Eingabewert zum Festlegen dieser Option ist eine 4-Byte-IPv4-Adresse in der Netzwerkbytereihenfolge. Dieser DWORD-Parameter muss ein Schnittstellenindex in der Netzwerkbytereihenfolge sein. Jede IP-Adresse im 0.x.x.x-Block (erstes Oktett von 0) mit Ausnahme der IPv4-Adresse 0.0.0.0 wird als Schnittstellenindex behandelt. Ein Schnittstellenindex ist eine 24-Bit-Zahl, und der Adressblock 0.0.0.0/8 IPv4 wird nicht verwendet (dieser Bereich ist reserviert). Der Schnittstellenindex kann verwendet werden, um die Standardschnittstelle für Datenverkehr für IPv4 zu senden. Die GetAdaptersAddresses-Funktion kann verwendet werden, um die Schnittstellenindexinformationen abzurufen. Wenn optval null ist, wird die Standardschnittstelle für das Senden von Datenverkehr auf nicht angegeben festgelegt. Beim Abrufen dieser Option gibt die optval den aktuellen Standardschnittstellenindex für das Senden von IPv4-Datenverkehr in Hostbytereihenfolge zurück.
IP_USER_MTU ja ja DWORD Ruft eine obere Grenze für die IP-Layer-MTU (in Byte) für den angegebenen Socket ab oder legt diese fest. Wenn der Wert höher ist als die Schätzung des Pfad-MTU des Systems (den Sie in einem verbundenen Socket abrufen können, indem Sie die Option IP_MTU Sockets abfragen), hat die Option keine Auswirkung. Wenn der Wert niedriger ist, werden ausgehende Pakete, die größer als diese sind, fragmentiert oder nicht gesendet, abhängig vom Wert von IP_DONTFRAGMENT. Der Standardwert ist IP_UNSPECIFIED_USER_MTU (MAXULONG). Für die Typsicherheit sollten Sie die Funktionen WSAGetIPUserMtu und WSASetIPUserMtu verwenden, anstatt die Socketoption direkt zu verwenden.
IP_WFP_REDIRECT_CONTEXT ja ja WSACMSGHDR mit Steuerdaten Ein zusätzlicher Datentyp für Datagrammsocket (cmsg_type), der den Umleitungskontext für einen UDP-Socket angibt, der von einem Windows-Filterplattform-Umleitungsdienst (Windows Filtering Platform, WFP) verwendet wird.
IP_WFP_REDIRECT_RECORDS ja ja WSACMSGHDR mit Steuerdaten Ein zusätzlicher Datentyp für Datagrammsocket (cmsg_type), der den Umleitungsdatensatz für einen UDP-Socket angibt, der von einem Windows-Filterplattform-Umleitungsdienst (Windows Filtering Platform, WFP) verwendet wird.

Windows-Unterstützung für IP_PROTO-Optionen

Option Windows 10 Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ADD_IFLIST Ab Windows 10, Version 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 Ab Windows 10, Version 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 Ab Windows 10, Version 1803
IP_HDRINCL ja Ja Ja Ja Ja ja
IP_IFLIST Ab Windows 10, Version 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 Ab Windows 10, Version 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

Hinweise

Im für Windows Vista und höher veröffentlichten Microsoft Windows Software Development Kit (SDK) wurde die Organisation von Headerdateien geändert, und IPPROTO_IP-Ebene wird in der Headerdatei Ws2def.h definiert, die automatisch in der Winsock2.h-Headerdatei enthalten ist. Einige der IPPROTO_IP Socketoptionen sind in der Headerdatei Ws2ipdef.h definiert, die automatisch von der Ws2tcpip.h-Headerdatei enthalten ist. Die verbleibenden IPPROTO_IP-Socketoptionen sind in der Headerdatei Wsipv6ok.h definiert, die automatisch von der Winsock2.h-Headerdatei enthalten ist. Die Headerdateien Ws2def.h, Ws2ipdef.h und Wsipv6ok.h sollten nie direkt verwendet werden.

Im der Platform SDK, das für Windows Server 2003 und Windows XP veröffentlicht wurde, wird die IPPROTO_IP-Ebene in der Winsock2.h-Headerdatei definiert. Einige der IPPROTO_IP-Socketoptionen sind in der Headerdatei Ws2tcpip.h definiert. Die verbleibenden IPPROTO_IP-Socketoptionen sind in der Headerdatei Wsipv6ok.h definiert, die automatisch von der Winsock2.h-Headerdatei enthalten ist. Die Headerdatei Wsipv6ok.h sollte nie direkt verwendet werden.

Anforderungen

Anforderung Wert
Header
Ws2def.h (enthalten Winsock2.h);
Ws2ipdef.h (enthalten Ws2tcpip.h);
Wsipv6ok.h (enthalten Winsock2.h)