ipv6(7) | Miscellaneous Information Manual | ipv6(7) |
ipv6 - Implémentation Linux du protocole IPv6
#include <sys/socket.h> #include <netinet/in.h>
tcp6_socket = socket(AF_INET6, SOCK_STREAM, 0); raw6_socket = socket(AF_INET6, SOCK_RAW, protocol); udp6_socket = socket(AF_INET6, SOCK_DGRAM, protocol);
Linux 2.2 implémente en option le protocole internet version 6 (IPv6). Cette page de manuel contient la description de l'API IPv6 de base, telle qu'implémentée dans le noyau Linux et la glibc 2.1 L'interface est basée sur l'interface des sockets BSD. Consultez socket(7).
L'API IPv6 est conçue pour être essentiellement compatible avec l'API IPv4 (consultez ip(7)). Seules les différences sont décrites dans cette page de manuel.
Pour attacher une socket AF_INET6, l'adresse locale doit être copiée dans une variable in6addr_any qui a le type in6_addr. Dans les initialisations statiques, IN6ADDR_ANY_INIT peut servir aussi et se développe en une expression constante. Toutes les valeurs sont dans l'ordre des octets du réseau.
L'adresse de boucle IPv6 (::1) est disponible dans la variable globale in6addr_loopback. Pour les initialisations, on doit utiliser IN6ADDR_LOOPBACK_INIT.
IPv4 connections can be handled with the v6 API by using the v4-mapped-on-v6 address type; thus a program needs to support only this API type to support both protocols. This is handled transparently by the address handling functions in the C library.
IPv4 and IPv6 share the local port space. When you get an IPv4 connection or packet to an IPv6 socket, its source address will be mapped to v6.
struct sockaddr_in6 { sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* port number */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* Scope ID (new in Linux 2.4) */ }; struct in6_addr { unsigned char s6_addr[16]; /* adresse IPv6 */ };
sin6_family est toujours rempli avec AF_INET6 ; sin6_port est le port du protocole (consultez sin_port dans ip(7)) ; sin6_flowinfo est l'identificateur de flux IPv6, sin6_addr est l'adresse IPv6 sur 128 bits. sin6_scope_id est un identificateur qui dépend de la portée de l'adresse. C'est une nouveauté Linux 2.4. Linux ne le prend en charge que pour les adresses locales lien, dans ce cas sin6_scope_id contient le numéro d'interface (consultez netdevice(7)).
IPv6 supports several address types: unicast to address a single host, multicast to address a group of hosts, anycast to address the nearest member of a group of hosts (not implemented in Linux), IPv4-on-IPv6 to address an IPv4 host, and other reserved address types.
The address notation for IPv6 is a group of 8 4-digit hexadecimal numbers, separated with a ':'. "::" stands for a string of 0 bits. Special addresses are ::1 for loopback and ::FFFF:<IPv4 address> for IPv4-mapped-on-IPv6.
L'espace des ports de l'IPv6 est partagé avec l'IPv4.
IPv6 accepte quelques options des sockets spécifiques du protocole, qui peuvent être définies avec setsockopt(2) et consultées avec getsockopt(2). Le niveau d'option de socket pour l'IPv6 est IPPROTO_IPV6. Un entier booléen est faux quand il est nul et vrai sinon.
Linux 2.4 rompt la compatibilité binaire pour la structure sockaddr_in6 des hôtes sur 64 bits, en modifiant l'alignement de in6_addr et en ajoutant un champ sin6_scope_id supplémentaire. Les interfaces du noyau restent compatible, mais un programme contenant des sockaddr_in6 ou des in6_addr dans d'autres structures ne l'est peut être pas. Ce n'est pas un problème pour les hôtes sur 32 bits comme les i386.
Le champ sin6_flowinfo est une nouveauté Linux 2.4. Il est écrit/lu de manière transparente par le noyau quand la longueur de l'adresse passée le contient. Certains programmes qui passent un tampon d'adresse plus long et vérifient ensuite la longueur de l'adresse renvoyée peuvent échouer.
La structure sockaddr_in6 est plus grande que la structure sockaddr générique. Les programmes qui supposent que tous les types d'adresses peuvent être stockés dans une struct sockaddr doivent être modifiés pour utiliser struct sockaddr_storage à la place.
SOL_IP, SOL_IPV6, SOL_ICMPV6, and other SOL_* socket options are nonportable variants of IPPROTO_*. See also ip(7).
L'API IPv6 étendue, telle que dans la RFC 2292, n'est encore que partiellement implémentée. Bien que les noyaux 2.2 ont une prise en charge pratiquement complète des options de réception, les macros déclarant les options IPv6 manquent dans la glibc 2.1.
La prise en charge IPSec pour les en-têtes EH et AH manque.
La gestion des étiquettes de flux n'est pas complète, ni documentée ici.
Cette page de manuel n'est pas complète.
cmsg(3), ip(7)
RFC 2553 : API IPv6 de base, avec laquelle Linux essaye d'être compatible. RFC 2460 : spécifications d'IPv6.
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
5 février 2023 | Pages du manuel de Linux 6.03 |