IPPROTO_IP socket, options
Les tableaux suivants décrivent IPPROTO_IP options de socket qui s’appliquent aux sockets créés pour la famille d’adresses IPv4 (AF_INET). Pour plus d’informations sur l’obtention et la définition des options de socket, consultez les pages de référence des fonctions getsockopt et setsockopt .
Pour énumérer les protocoles et découvrir les propriétés prises en charge pour chaque protocole installé, utilisez la fonction WSAEnumProtocols, WSCEnumProtocols ou WSCEnumProtocols32 .
Certaines options de socket nécessitent plus d’explications que ce que ces tables peuvent transmettre ; ces options contiennent des liens vers des pages supplémentaires.
Options
Option | Obtenir | Définissez | Type Optval | Description |
---|---|---|---|---|
IP_ADD_IFLIST | Oui | DWORD (IF_INDEX) | Ajoute un index d’interface à l’IFLIST associé à l’option IP_IFLIST . | |
IP_ADD_MEMBERSHIP | Oui | ip_mreq | Joignez le socket au groupe de multidiffusion fourni sur l’interface spécifiée. | |
IP_ADD_SOURCE_MEMBERSHIP | Oui | ip_mreq_source | Rejoignez le groupe de multidiffusion fourni sur l’interface donnée et acceptez les données provenant de l’adresse source fournie. | |
IP_BLOCK_SOURCE | Oui | ip_mreq_source | Supprime la source donnée en tant qu’expéditeur du groupe et de l’interface de multidiffusion fournis. | |
IP_DEL_IFLIST | Oui | DWORD (IF_INDEX) | Supprime un index d’interface de l’IFLIST associé à l’option IP_IFLIST . Les entrées ne pouvant être supprimées que par l’application, sachez donc que les entrées peuvent être obsolètes une fois qu’une interface est supprimée. | |
IP_DONTFRAGMENT | Oui | Oui | DWORD (booléen) | Indique que les données ne doivent pas être fragmentées, quel que soit le MTU local. Valide uniquement pour les protocoles orientés message. Les fournisseurs TCP/IP Microsoft respectent cette option pour UDP et ICMP. |
IP_DROP_MEMBERSHIP | Oui | ip_mreq | Quitte le groupe de multidiffusion spécifié de l’interface spécifiée. Les fournisseurs de services doivent prendre en charge cette option lorsque la multidiffusion est prise en charge. La prise en charge est indiquée dans la structure WSAPROTOCOL_INFO retournée par un appel de fonction WSAEnumProtocols avec les éléments suivants : XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0. | |
IP_DROP_SOURCE_MEMBERSHIP | Oui | ip_mreq_source | Supprime l’appartenance au groupe de multidiffusion, à l’interface et à l’adresse source donnés. | |
IP_GET_IFLIST | Oui | DWORD[] (IF_INDEX[]) | Obtient l’IFLIST actuel associé à l’option IP_IFLIST . Retourne l’erreur si IP_IFLIST n’est pas activé. | |
IP_HDRINCL | Oui | Oui | DWORD (booléen) | Lorsqu’elle est définie sur TRUE, indique que l’application fournit l’en-tête IP. S’applique uniquement aux sockets SOCK_RAW. Le fournisseur de services TCP/IP peut définir le champ ID si la valeur fournie par l’application est zéro. L’option IP_HDRINCL est appliquée uniquement au type de protocole SOCK_RAW. Un fournisseur de services TCP/IP qui prend en charge SOCK_RAW doit également prendre en charge IP_HDRINCL. |
IP_IFLIST | Oui | Oui | DWORD (booléen) | Obtient ou définit l’état IP_IFLIST du socket. Lorsque cette option a la valeur true, la réception du datagramme est limitée aux interfaces qui se trouvent dans l’IFLIST. Les datagrammes reçus sur d’autres interfaces sont ignorés. IFLIST démarre vide. Utilisez IP_ADD_IFLIST et IP_DEL_IFLIST pour modifier l’IFLIST. |
IP_MTU | Oui | DWORD | Obtient l’estimation du chemin MTU par le système. Le socket doit être connecté. | |
IP_MTU_DISCOVER | Oui | Oui | DWORD (PMTUD_STATE) | Obtient ou définit l’état de découverte MTU du chemin d’accès pour le socket. La valeur par défaut est IP_PMTUDISC_NOT_SET. Pour les sockets de flux, IP_PMTUDISC_NOT_SET et IP_PMTUDISC_DO effectuent la découverte du chemin MTU. IP_PMTUDISC_DONT et IP_PMTUDISC_PROBE désactivent la découverte MTU du chemin d’accès. Pour les sockets de datagrammes, IP_PMTUDISC_DO force tous les paquets sortants à avoir le bit DF défini et une tentative d’envoi de paquets plus grands que le chemin MTU entraîne une erreur. IP_PMTUDISC_DONT force tous les paquets sortants à avoir le bit DF non défini, et les paquets sont fragmentés en fonction de l’interface MTU. IP_PMTUDISC_PROBE force tous les paquets sortants à avoir le bit DF défini, et une tentative d’envoi de paquets supérieurs à l’interface MTU entraîne une erreur. |
IP_MULTICAST_IF | Oui | Oui | DWORD | Obtient ou définit l’interface sortante pour l’envoi du trafic multidiffusion IPv4. Cette option ne modifie pas l’interface par défaut pour la réception du trafic multidiffusion IPv4. La valeur d’entrée pour définir cette option est une adresse IPv4 de 4 octets dans l’ordre des octets réseau. Ce paramètre DWORD peut également être un index d’interface dans l’ordre d’octet réseau. Toute adresse IP dans le bloc 0.x.x.x (premier octet de 0) à l’exception de l’adresse IPv4 0.0.0.0 est traitée comme un index d’interface. Un index d’interface est un nombre 24 bits, et le bloc d’adresse IPv4 0.0.0/8 n’est pas utilisé (cette plage est réservée). L’index d’interface peut être utilisé pour spécifier l’interface par défaut pour le trafic de multidiffusion pour IPv4. Si optval est égal à zéro , l’interface par défaut pour la réception de la multidiffusion est spécifiée pour l’envoi du trafic de multidiffusion. Lors de l’obtention de cette option, optval retourne l’index d’interface par défaut actuel pour l’envoi du trafic IPv4 de multidiffusion dans l’ordre d’octet de l’hôte. |
IP_MULTICAST_LOOP | Oui | Oui | DWORD (booléen) | Pour un socket joint à un ou plusieurs groupes de multidiffusion, cela détermine s’il recevra une copie des paquets sortants envoyés à ces groupes de multidiffusion via l’interface de multidiffusion sélectionnée. Par défaut, IP_MULTICAST_LOOP est activé (valeur 1/TRUE), de sorte que les sockets reçoivent les paquets de multidiffusion correspondants envoyés par l’ordinateur actuel. La désactivation de cette option (en lui affectant la valeur 0/FALSE) signifie que ce socket ne recevra pas de multidiffusions envoyées à partir de l’ordinateur local, même si le socket est ouvert sur l’interface de bouclage. Cela n’est pas compatible avec la version POSIX de IP_MULTICAST_LOOP : l’option doit être définie sur le socket de réception ; tandis que l’option POSIX doit être définie sur le socket d’envoi. |
IP_MULTICAST_TTL | Oui | Oui | DWORD | Définit/obtient la valeur de durée de vie associée au trafic de multidiffusion IP sur le socket. |
IP_OPTIONS | Oui | Oui | char [] | Spécifie les options IP à insérer dans les paquets sortants. La définition de nouvelles options remplace toutes les options spécifiées précédemment. La définition d’optval sur zéro supprime toutes les options spécifiées précédemment. IP_OPTIONS support n’est pas nécessaire ; pour case activée si IP_OPTIONS est pris en charge, utilisez getsockopt pour obtenir les options actuelles. Si getsockopt échoue, IP_OPTIONS n’est pas pris en charge. |
IP_ORIGINAL_ARRIVAL_IF | Oui | Oui | DWORD (booléen) | Indique si la fonction LPFN_WSARECVMSG (WSARecvMsg) doit retourner des données de contrôle facultatives contenant l’interface d’arrivée où le paquet a été reçu pour les sockets de datagramme. Cette option permet à l’interface IPv4 où le paquet a été reçu d’être retourné dans la structure WSAMSG . Cette option n’est valide que sur les datagrammes et les sockets bruts (le type de socket doit être SOCK_DGRAM ou SOCK_RAW). |
IP_PKTINFO | Oui | Oui | DWORD | Indique que les informations de paquet doivent être retournées par la fonction WSARecvMsg . |
IP_RECEIVE_BROADCAST | Oui | Oui | DWORD (booléen) | Autorise ou bloque la réception de diffusion. |
IP_RECVIF | Oui | Oui | DWORD (booléen) | Indique si la pile IP doit remplir la mémoire tampon de contrôle avec des détails sur l’interface qui a reçu un paquet avec un socket de datagramme. Lorsque cette valeur est true, la fonction LPFN_WSARECVMSG (WSARecvMsg) retourne des données de contrôle facultatives contenant l’interface où le paquet a été reçu pour les sockets de datagramme. Cette option permet à l’interface IPv4 où le paquet a été reçu d’être retourné dans la structure WSAMSG . Cette option n’est valide que sur les datagrammes et les sockets bruts (le type de socket doit être SOCK_DGRAM ou SOCK_RAW). |
IP_RECVTOS | Oui | Oui | DWORD (booléen) | Indique si la pile IP doit remplir la mémoire tampon de contrôle avec un message contenant le champ d’en-tête Type de service (TOS) IPv4 sur un datagramme reçu. Lorsque cette valeur est true, la fonction LPFN_WSARECVMSG (WSARecvMsg) retourne des données de contrôle facultatives contenant la valeur de champ d’en-tête TOS IPv4 du datagramme reçu. Cette option permet au champ d’en-tête TOS IPv4 du datagramme reçu d’être retourné dans la structure WSAMSG . Le type de message retourné sera IP_TOS. Tous les bits DSCP et ECN du champ TOS seront retournés. Cette option est valide uniquement sur les sockets de datagramme (le type de socket doit être SOCK_DGRAM). |
IP_RECVTTL | Oui | Oui | DWORD (booléen) | Indique que les informations de tronçon (TTL) doivent être retournées dans la fonction LPFN_WSARECVMSG (WSARecvMsg). Si optval est défini sur 1 lors de l’appel à setsockopt, l’option est activée. Si la valeur est 0, l’option est désactivée. Cette option n’est valide que pour les datagrammes et les sockets bruts (le type de socket doit être SOCK_DGRAM ou SOCK_RAW). |
IP_TOS | Oui | Oui | DWORD (booléen) | Ne pas utiliser. Les paramètres de type de service (TOS) doivent uniquement être définis à l’aide de l’API Qualité de service. Pour plus d’informations, consultez Services différenciés dans la section Qualité de service du Kit de développement logiciel (SDK) de plateforme. |
IP_TTL | Oui | Oui | DWORD (booléen) | Modifie la valeur par défaut définie par le fournisseur de services TCP/IP dans le champ TTL de l’en-tête IP dans les datagrammes sortants. IP_TTL support n’est pas nécessaire ; pour case activée si IP_TTL est pris en charge, utilisez getsockopt pour obtenir les options actuelles. Si getsockopt échoue, IP_TTL n’est pas pris en charge. |
IP_UNBLOCK_SOURCE | Oui | ip_mreq_source | Ajoute la source donnée en tant qu’expéditeur au groupe de multidiffusion et à l’interface fournis. | |
IP_UNICAST_IF | Oui | Oui | DWORD (IF_INDEX) | Obtient ou définit l’interface sortante pour l’envoi du trafic IPv4. Cette option ne modifie pas l’interface par défaut pour la réception du trafic IPv4. Cette option est importante pour les ordinateurs à plusieurs hébergements. La valeur d’entrée pour la définition de cette option est une adresse IPv4 de 4 octets dans l’ordre d’octets réseau. Ce paramètre DWORD doit être un index d’interface dans l’ordre d’octets réseau. Toute adresse IP dans le bloc 0.x.x.x (premier octet de 0) à l’exception de l’adresse IPv4 0.0.0.0 est traitée comme un index d’interface. Un index d’interface est un nombre 24 bits, et le bloc d’adresse IPv4 0.0.0/8 n’est pas utilisé (cette plage est réservée). L’index d’interface peut être utilisé pour spécifier l’interface par défaut pour l’envoi du trafic pour IPv4. La fonction GetAdaptersAddresses peut être utilisée pour obtenir les informations d’index d’interface. Si optval est égal à zéro , l’interface par défaut pour l’envoi du trafic est définie sur non spécifié. Lors de l’obtention de cette option, optval retourne l’index d’interface par défaut actuel pour l’envoi du trafic IPv4 dans l’ordre d’octet de l’hôte. |
IP_USER_MTU | Oui | Oui | DWORD | Obtient ou définit une limite supérieure sur la MTU de la couche IP (en octets) pour le socket donné. Si la valeur est supérieure à l’estimation par le système de la MTU du chemin d’accès (que vous pouvez récupérer sur un socket connecté en interrogeant l’option de socket IP_MTU ), l’option n’a aucun effet. Si la valeur est inférieure, les paquets sortants supérieurs à cette valeur sont fragmentés ou ne peuvent pas être envoyés, en fonction de la valeur de IP_DONTFRAGMENT. La valeur par défaut est IP_UNSPECIFIED_USER_MTU (MAXULONG). Pour la sécurité du type, vous devez utiliser les fonctions WSAGetIPUserMtu et WSASetIPUserMtu au lieu d’utiliser directement l’option socket. |
IP_WFP_REDIRECT_CONTEXT | Oui | Oui | WSACMSGHDR avec données de contrôle | Type de données auxiliaire de socket de datagramme (cmsg_type) pour indiquer le contexte de redirection d’un socket UDP utilisé par un service de redirection de plateforme de filtrage Windows (PAM) en mode utilisateur. |
IP_WFP_REDIRECT_RECORDS | Oui | Oui | WSACMSGHDR avec données de contrôle | Type de données auxiliaire de socket de datagramme (cmsg_type) pour indiquer l’enregistrement de redirection pour un socket UDP utilisé par un service de redirection de plateforme de filtrage Windows (PAM) en mode utilisateur. |
Prise en charge de Windows pour les options de IP_PROTO
Option | Windows 10 | Windows 8 | Windows Server 2012 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|---|---|
IP_ADD_IFLIST | À compter de 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 | À compter de 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 | À compter de Windows 10, version 1803 | |||||
IP_HDRINCL | x | x | x | x | x | x |
IP_IFLIST | À compter de 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 | À compter de 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 |
Notes
Dans le Kit de développement logiciel Microsoft Windows (SDK) publié pour Windows Vista et versions ultérieures, la organization des fichiers d’en-tête a changé et IPPROTO_IP niveau est défini dans le fichier d’en-tête Ws2def.h qui est automatiquement inclus dans le fichier d’en-tête Winsock2.h. Certaines options de socket IPPROTO_IP sont définies dans le fichier d’en-tête Ws2ipdef.h qui est automatiquement inclus par le fichier d’en-tête Ws2tcpip.h . Les options de socket IPPROTO_IP restantes sont définies dans le fichier d’en-tête Wsipv6ok.h qui est automatiquement inclus par le fichier d’en-tête Winsock2.h . Les fichiers d’en-tête Ws2def.h, Ws2ipdef.h et Wsipv6ok.h ne doivent jamais être utilisés directement.
Dans le Kit de développement logiciel (SDK) de plateforme publié pour Windows Server 2003 et Windows XP, le niveau IPPROTO_IP est défini dans le fichier d’en-tête Winsock2.h . Certaines options de socket IPPROTO_IP sont définies dans le fichier d’en-tête Ws2tcpip.h . Les options de socket IPPROTO_IP restantes sont définies dans le fichier d’en-tête Wsipv6ok.h qui est automatiquement inclus par le fichier d’en-tête Winsock2.h . Le fichier d’en-tête Wsipv6ok.h ne doit jamais être utilisé directement.
Spécifications
Condition requise | Valeur |
---|---|
En-tête |
|
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour