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 für die Funktionen getsockopt und setsockopt .

Um Protokolle aufzulisten und unterstützte Eigenschaften für jedes installierte Protokoll zu ermitteln, verwenden Sie die Funktion WSAEnumProtocols, WSCEnumProtocols oder WSCEnumProtocols32 .

Einige Socketoptionen erfordern mehr Erklärungen, als diese Tabellen vermitteln können. solche Optionen enthalten Links zu zusätzlichen Seiten.

Optionen

Option Herunterladen Set 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 Verknüpfen Sie den Socket mit der bereitgestellten Multicastgruppe auf der angegebenen Schnittstelle.
IP_ADD_SOURCE_MEMBERSHIP ja ip_mreq_source Fügen Sie die angegebene Multicastgruppe auf der angegebenen Schnittstelle hinzu, und akzeptieren Sie Daten, die von der angegebenen Quelladresse stammen.
IP_BLOCK_SOURCE ja ip_mreq_source Entfernt die angegebene Quelle als Absender für die bereitgestellte Multicastgruppe und -schnittstelle.
IP_DEL_IFLIST ja DWORD (IF_INDEX) Entfernt einen Schnittstellenindex aus der IFLIST, 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 werden, sobald eine Schnittstelle entfernt wurde.
IP_DONTFRAGMENT ja ja DWORD (boolesch) Gibt an, dass Daten unabhängig von der lokalen MTU nicht fragmentiert werden sollten. Gilt nur für nachrichtenorientierte Protokolle. 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. Unterstützung wird in der WSAPROTOCOL_INFO-Struktur angegeben, die von einem WSAEnumProtocols-Funktionsaufruf 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 Löscht die Mitgliedschaft auf die angegebene Multicastgruppe, -Schnittstelle und -Quelladresse.
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 (boolesch) Gibt bei Festlegung auf TRUE an, dass die Anwendung den IP-Header bereitstellt. Gilt nur für SOCK_RAW Sockets. Der TCP/IP-Dienstanbieter kann das ID-Feld festlegen, wenn der von der Anwendung bereitgestellte Wert 0 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 (boolesch) Ruft den IP_IFLIST Zustand des Sockets ab oder legt diese fest. Wenn diese Option auf true festgelegt ist, ist der Datagram-Empfang auf Schnittstellen beschränkt, die sich in der IFLIST befinden. Datagramme, die auf anderen Schnittstellen empfangen werden, 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) Ruft den MTU-Ermittlungsstatus des Pfads für den Socket ab oder legt diese fest. Der Standardwert ist IP_PMTUDISC_NOT_SET. Für Streamsockets führen IP_PMTUDISC_NOT_SET und IP_PMTUDISC_DO die MTU-Pfadermittlung durch. IP_PMTUDISC_DONT und IP_PMTUDISC_PROBE deaktivieren die MTU-Pfadermittlung. Für Datagrammsockets erzwingt IP_PMTUDISC_DO , dass für alle ausgehenden Pakete das DF-Bit festgelegt ist, und ein Versuch, Pakete zu senden, die größer als die Pfad-MTU sind, führt zu einem Fehler. IP_PMTUDISC_DONT erzwingt, dass für alle ausgehenden Pakete das DF-Bit nicht festgelegt wird, und pakete werden gemäß Schnittstellen-MTU fragmentiert. IP_PMTUDISC_PROBE erzwingt, dass für alle ausgehenden Pakete das DF-Bit festgelegt ist, 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 Ruft die ausgehende Schnittstelle zum Senden von IPv4-Multicastdatenverkehr ab oder legt diese fest. 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 Netzwerkbytereihenfolge. Dieser DWORD-Parameter kann auch ein Schnittstellenindex in Netzwerkbytereihenfolge sein. Jede IP-Adresse im Block 0.x.x.x (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 IPv4-Adressblock 0.0.0.0/8 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 Multicastdatenverkehr angegeben. Beim Abrufen dieser Option gibt optval den aktuellen Standardschnittstellenindex für das Senden von Multicast-IPv4-Datenverkehr in Hostbytereihenfolge zurück.
IP_MULTICAST_LOOP ja ja DWORD (boolesch) Bei einem Socket, der einer oder mehreren Multicastgruppen zugeordnet ist, steuert diese, ob er eine Kopie ausgehender Pakete empfängt, 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 für den empfangenden Socket festgelegt werden. während die OPTION POSIX für den sendenden Socket festgelegt werden muss.
IP_MULTICAST_TTL ja ja DWORD Legt den TTL-Wert fest, der dem IP-Multicastdatenverkehr auf dem Socket zugeordnet ist.
IP_OPTIONS ja ja char [] Gibt IP-Optionen an, die in ausgehende Pakete eingefügt werden sollen. Das Festlegen neuer Optionen überschreibt alle zuvor angegebenen Optionen. Durch Festlegen von optval auf 0 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 getockopt , um aktuelle Optionen abzurufen. Wenn getsockopt fehlschlägt , wird IP_OPTIONS nicht unterstützt.
IP_ORIGINAL_ARRIVAL_IF ja ja DWORD (boolesch) Gibt an, ob die LPFN_WSARECVMSG -Funktion (WSARecvMsg) optionale Steuerungsdaten zurückgeben soll, die die Ankunftsschnittstelle enthalten, an der das Paket für Datagrammsockets empfangen wurde. Mit dieser Option kann die IPv4-Schnittstelle, an der das Paket empfangen wurde, in der WSAMSG-Struktur zurückgegeben werden. 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 (boolesch) Erlaubt oder blockiert den Sendeempfang.
IP_RECVIF ja ja DWORD (boolesch) Gibt an, ob der IP-Stapel den Steuerelementpuffer mit Details darüber auffüllen soll, welche Schnittstelle ein Paket mit einem Datagrammsocket empfangen hat. Wenn dieser Wert true ist, gibt die LPFN_WSARECVMSG-Funktion (WSARecvMsg) optionale Steuerelementdaten zurück, die die Schnittstelle enthalten, an der das Paket für Datagrammsockets empfangen wurde. Mit dieser Option kann die IPv4-Schnittstelle, an der das Paket empfangen wurde, in der WSAMSG-Struktur zurückgegeben werden. 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 (boolesch) Gibt an, ob der IP-Stapel den Steuerelementpuffer mit einer Nachricht füllen soll, die das IPv4-Headerfeld "Type of Service (TOS)" in einem empfangenen Datagramm enthält. Wenn dieser Wert true ist, gibt die LPFN_WSARECVMSG -Funktion (WSARecvMsg) optionale Steuerelementdaten zurück, die den TOS-IPv4-Headerfeldwert des empfangenen Datagramms enthalten. Mit dieser Option kann das TOS-IPv4-Headerfeld des empfangenen Datagramms in der WSAMSG-Struktur zurückgegeben werden. Der zurückgegebene Nachrichtentyp wird IP_TOS. 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_RECVTTL ja ja DWORD (boolesch) Gibt an, dass Hopinformationen (TTL) in der funktion LPFN_WSARECVMSG (WSARecvMsg) zurückgegeben werden sollen. Wenn optval für den Aufruf von setsockopt auf 1 festgelegt ist, ist die Option aktiviert. Wenn sie 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 (boolesch) Darf nicht verwendet werden. Diensttypeinstellungen (TOS) sollten nur mithilfe der Dienstqualitäts-API festgelegt werden. Weitere Informationen finden Sie unter Differenzierte Dienste im Abschnitt Quality of Service des Platform SDK.
IP_TTL ja ja DWORD (boolesch) Ä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 getockopt , 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 der bereitgestellten Multicastgruppe und -schnittstelle hinzu.
IP_UNICAST_IF ja ja DWORD (IF_INDEX) Ruft die ausgehende Schnittstelle zum Senden von IPv4-Datenverkehr ab oder legt diese fest. Diese Option ändert nicht die Standardschnittstelle für den Empfang von IPv4-Datenverkehr. Diese Option ist für computer mit mehreren Computern wichtig. Der Eingabewert zum Festlegen dieser Option ist eine 4-Byte-IPv4-Adresse in Netzwerkbytereihenfolge. Dieser DWORD-Parameter muss ein Schnittstellenindex in Netzwerkbytereihenfolge sein. Jede IP-Adresse im Block 0.x.x.x (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 IPv4-Adressblock 0.0.0.0/8 wird nicht verwendet (dieser Bereich ist reserviert). Der Schnittstellenindex kann verwendet werden, um die Standardschnittstelle zum Senden von Datenverkehr für IPv4 anzugeben. Die GetAdaptersAddresses-Funktion kann verwendet werden, um die Schnittstellenindexinformationen abzurufen. Wenn optval null ist, ist die Standardschnittstelle für das Senden von Datenverkehr auf nicht angegeben festgelegt. Beim Abrufen dieser Option gibt optval den aktuellen Standardschnittstellenindex für das Senden von IPv4-Datenverkehr in Hostbytereihenfolge zurück.
IP_USER_MTU ja ja DWORD Ruft eine Obergrenze für die MTU der IP-Ebene (in Bytes) für den angegebenen Socket ab oder legt diese fest. Wenn der Wert höher ist als die Systemschätzung der Pfad-MTU (die Sie in einem verbundenen Socket abrufen können, indem Sie die Option IP_MTU Socket abfragen), hat die Option keine Auswirkungen. Wenn der Wert niedriger ist, werden ausgehende Pakete, die größer sind, fragmentiert oder können nicht gesendet werden, abhängig vom Wert von IP_DONTFRAGMENT. Der Standardwert ist IP_UNSPECIFIED_USER_MTU (MAXULONG). Aus Gründen der Typsicherheit sollten Sie die Funktionen WSAGetIPUserMtu und WSASetIPUserMtu verwenden, anstatt die Socketoption direkt zu verwenden.
IP_WFP_REDIRECT_CONTEXT ja ja WSACMSGHDR mit Steuerungsdaten Ein Datagram-Socket-Hilfsdatentyp (cmsg_type), der den Umleitungskontext für einen UDP-Socket angibt, der von einem WFP-Umleitungsdienst (Windows Filtering Platform) im Benutzermodus verwendet wird.
IP_WFP_REDIRECT_RECORDS ja ja WSACMSGHDR mit Steuerungsdaten Ein Datagram-Socket-Hilfsdatentyp (cmsg_type), der den Umleitungsdatensatz für einen UDP-Socket angibt, der von einem WFP-Umleitungsdienst (Windows Filtering Platform) im Benutzermodus 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 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 Ab Windows 10, Version 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 Ab Windows 10, Version 1803
IP_HDRINCL x x x x x x
IP_IFLIST Ab Windows 10, Version 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 Ab Windows 10, Version 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

Option 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

Bemerkungen

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

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

Anforderungen

Anforderung Wert
Header
Ws2def.h (Winsock2.h einschließen);
Ws2ipdef.h (include Ws2tcpip.h);
Wsipv6ok.h (Winsock2.h einschließen)