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 |
|