.\" -*- coding: UTF-8 -*- .\" Copyright 1999, Andi Kleen .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ip 7 "8 février 2026" "Pages du manuel de Linux 6.17" .SH NOM ip – Implémentation Linux du protocole IPv4 .SH SYNOPSIS .nf .\" .B #include -- does not exist anymore .\" .B #include -- never include \fB#include \fP \fB#include \fP \fB#include \fP /* superset of previous */ .P \fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP \fIudp_socket\fP\fB = socket(AF_INET, SOCK_DGRAM, 0);\fP \fIraw_socket\fP\fB = socket(AF_INET, SOCK_RAW, \fP\fIprotocole\fP\fB);\fP .fi .SH DESCRIPTION Linux implémente le protocole Internet (IP) version 4 décrit dans les RFC\ 791 et RFC\ 1122. \fBip\fP contient une implémentation de la diffusion multiple niveau 2 conforme à la RFC 1112. Cette implémentation inclut un routeur IP comprenant un filtre de paquets. .P L'interface de programmation est compatible avec les sockets BSD. Pour plus d'informations sur les sockets, consultez \fBsocket\fP(7). .P Un socket IP est créé en utilisant \fBsocket\fP(2) : .P .in +4n .EX socket(AF_INET, type_socket, protocole); .EE .in .P Les sockets autorisés incluent \fBSOCK_STREAM\fP pour ouvrir un socket flux, \fBSOCK_DGRAM\fP pour ouvrir un socket datagramme et \fBSOCK_RAW\fP pour ouvrir un socket \fBraw\fP(7) pour accéder directement au protocole IP. .P \fIprotocole\fP est le protocole IP dans les en\-têtes IP reçus ou envoyés. Les valeurs autorisées pour \fIprotocole\fP incluent : .IP \- 3 0 et \fBIPPROTO_TCP\fP pour les sockets flux \fBtcp\fP(7) ; .IP \- 0 et \fBIPPROTO_UDP\fP pour les sockets datagramme \fBudp\fP(7) ; .IP \- \fBIPPROTO_SCTP\fP pour les sockets flux \fBsctp\fP(7) ; .IP \- \fBIPPROTO_UDPLITE\fP pour les sockets datagramme \fBudplite\fP(7). .P Pour \fBSOCK_RAW\fP un protocole IP IANA autorisé, défini dans les numéros assignés de la RFC\ 1700, peut être indiqué. .P Lorsqu'un processus veut recevoir de nouveaux paquets entrants ou des connexions, il doit attacher un socket à une adresse d'interface locale en utilisant \fBbind\fP(2). Un seul socket IP peut être attaché à une paire (adresse, port) locale donnée. Lorsque \fBINADDR_ANY\fP est indiqué au moment de l'attachement, le socket sera affecté à \fItoutes\fP les interfaces locales. Si \fBlisten\fP(2) est appelée sur un socket non affecté, celui\-ci est automatiquement attaché à un port libre aléatoire, avec l'adresse locale définie à \fBINADDR_ANY\fP. Si \fBconnect\fP(2) est appelée sur un socket non affecté, celui\-ci est automatiquement attaché à un port libre aléatoire ou un port partagé utilisable avec l'adresse locale définie à \fBINADDR_ANY\fP. .P L'adresse locale d'un socket TCP qui a été attaché est indisponible pendant quelques instants après sa fermeture, à moins que l'attribut \fBSO_REUSEADDR\fP ait été activé. Il faut être prudent en utilisant cet attribut, car il rend le protocole TCP moins fiable. .SS "Formats d'adresse" An IP socket address is defined as a combination of an IP interface address and a 16\-bit port number. The basic IP protocol does not supply port numbers, they are implemented by higher level protocols like \fBudp\fP(7) and \fBtcp\fP(7). On raw sockets \fI.sin_port\fP is set to the IP protocol. .P See \fBsockaddr_in\fP(3type). .P \&\fI.sin_family\fP is always set to \fBAF_INET\fP. This is required; in Linux 2.2 most networking functions return \fBEINVAL\fP when this setting is missing. \&\fI.sin_port\fP contains the port in network byte order. The port numbers below 1024 are called \fIprivileged ports\fP (or sometimes: \fIreserved ports\fP). Only a privileged process (on Linux: a process that has the \fBCAP_NET_BIND_SERVICE\fP capability in the user namespace governing its network namespace) may \fBbind\fP(2) to these sockets. Note that the raw IPv4 protocol as such has no concept of a port, they are implemented only by higher protocols like \fBtcp\fP(7) and \fBudp\fP(7). .P \&\fI.sin_addr\fP is the IP host address. The \fI.s_addr\fP member of the \fBin_addr\fP(3type) structure contains the host interface address in network byte order. \fBin_addr\fP(3type) should be assigned one of the \fBINADDR_*\fP values (e.g., \fBINADDR_LOOPBACK\fP) using \fBhtonl\fP(3) or set using the \fBinet_aton\fP(3), \fBinet_addr\fP(3), \fBinet_makeaddr\fP(3) library functions or directly with the name resolver (see \fBgethostbyname\fP(3)). .P .\" Leave a loophole for XTP @) Les adresses IPv4 sont divisées en adresses de diffusion individuelle (unicast), de diffusion générale (broadcast) et de diffusion multiple (multicast). Les adresses de diffusion individuelle décrivent une interface unique d'un hôte, les adresses de diffusion générale correspondent à tous les hôtes d'un réseau et les adresses de diffusion multiple représentent tous les hôtes d'un groupe de diffusion multiple. Les datagrammes vers des adresses de diffusion générale ne peuvent être émis et reçus que si l'attribut de socket \fBSO_BROADCAST\fP est activé. Dans l'implémentation actuelle, les sockets orientés connexion ne sont autorisés que sur des adresses de diffusion individuelle. .P Remarquez que l'adresse et le port sont toujours stockés dans l'ordre des octets du réseau. Cela signifie en particulier qu'il faut invoquer \fBhtons\fP(3) sur le numéro attribué à un port. Toutes les fonctions de manipulation d'adresses et de ports de la bibliothèque standard fonctionnent dans l'ordre des octets du réseau. .SS "Adresses spéciales et réservées" Il y a plusieurs adresses spéciales : .TP \fBINADDR_LOOPBACK\fP (127.0.0.1) fait toujours référence à l'hôte local à l’aide du périphérique de rebouclage (loopback) ; .TP \fBINADDR_ANY\fP (0.0.0.0) signifie n'importe quelle adresse pour l’attachement de socket ; .TP \fBINADDR_BROADCAST\fP (255.255.255.255) A packet addressed to \fBINADDR_BROADCAST\fP through a socket which has \fBSO_BROADCAST\fP set will be broadcast to all hosts on the local network segment, as long as the link is broadcast\-capable. .TP Numéro d'adresse le plus haut .TQ Numéro d'adresse le plus bas .\" commit 58fee5fc83658aaacf60246aeab738946a9ba516 Sur tout sous\-réseau IP non point\-à\-point localement attaché avec une liaison du type qui gère la diffusion générale (broadcast), l'adresse avec la numérotation la plus élevée (par exemple, l'adresse 255 sur un sous\-réseau avec un masque de réseau 255.255.255.0) est désignée comme adresse de broadcast. Elle ne peut pas être assignée de manière utile à une interface individuelle et ne peut être adressée qu'avec un socket avec l'option \fBSO_BROADCAST\fP définie. Les normes d’Internet ont aussi historiquement réservé l'adresse avec le numéro le plus bas (par exemple, l'adresse 0 d'un sous\-réseau avec un masque réseau 255.255.255.0) pour le broadcast, bien qu’elles la qualifient d’« obsolète » pour cette fonction (quelques sources l'appellent aussi « adresse réseau »). Depuis Linux 5.14, elle est considérée comme une adresse ordinaire de diffusion unique (unicast) et peut être assignée à une interface. .P Les normes d’Internet ont traditionnellement réservé aussi diverses adresses pour des usages particuliers, bien que Linux ne traite plus certaines d’entre elles spécialement. .TP [0.0.0.1, 0.255.255.255] .TQ [240.0.0.0, 255.255.255.254] .\" commit 96125bf9985a75db00496dd2bc9249b777d2b19b .\" commit 1e637c74b0f84eaca02b914c0b8c6f67276e9697 Les adresses dans ces plages (0/8 et 240/4) sont réservées globalement. Depuis Linux 5.3 et Linux 2.6.25, respectivement, les adresses 0/8 et 240/4, autres que \fBINADDR_ANY\fP et \fBINADDR_BROADCAST\fP sont traitées comme des adresses unicast ordinaires. Les systèmes qui suivent le comportement traditionnel n'interagiront pas avec ces adresses historiquement réservées. .TP [127.0.0.1, 127.255.255.254] Les adresses dans cette plage (127/8) sont traitées comme des adresses de rebouclage (loopback) semblables à l'adresse standardisée de rebouclage locale \fBINADDR_LOOPBACK\fP (127.0.0.1) ; .TP [224.0.0.0, 239.255.255.255] Les adresses dans cette plage (224/4) sont dédiées à un usage de diffusion multiple (multicast). .SS "Options de socket" See \fBIPPROTO_IP\fP(2const). .SS "/proc interfaces" See \fBproc_sys_net_ipv4\fP(5). .SS Ioctls Tous les ioctls décrits dans \fBsocket\fP(7) s'appliquent à \fBip\fP. .P .\" FIXME Add a discussion of multicasting Les ioctls pour configurer les paramètres génériques des périphériques sont décrits dans \fBnetdevice\fP(7). .SH ERREURS .\" FIXME document all errors. .\" We should really fix the kernels to give more uniform .\" error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.) .TP \fBEACCES\fP L'utilisateur a essayé de réaliser une opération sans avoir les permissions nécessaires. Cela inclut\ : l'envoi d'un paquet vers une adresse de diffusion générale sans avoir activé l'attribut \fBSO_BROADCAST\fP, l'envoi d'un paquet par une route \fIinterdite\fP, la modification du paramétrage du pare\-feu sans les privilèges du superutilisateur (la capacité \fBCAP_NET_ADMIN\fP) et l'attachement à un port privilégié sans les privilèges du superutilisateur (la capacité \fBCAP_NET_BIND_SERVICE\fP). .TP \fBEADDRINUSE\fP Tentative d'attachement à une adresse déjà utilisée. .TP \fBEADDRNOTAVAIL\fP Une interface inexistante a été demandée ou l'adresse d'émission demandée n'était pas locale. .TP \fBEAGAIN\fP L'opération sur un socket non bloquant devrait bloquer. .TP \fBEALREADY\fP Une connexion est déjà en cours sur un socket non bloquant. .TP \fBECONNABORTED\fP Une connexion a été fermée durant un appel à \fBaccept\fP(2). .TP \fBEHOSTUNREACH\fP Aucune table de routage valable ne correspond à l'adresse de destination. Cette erreur peut être due à un message ICMP d'un routeur distant ou dans la table de routage interne. .TP \fBEINVAL\fP Un argument non valable a été fourni. Pour les opérations d'envoi, cela peut être causé par un envoi vers une route \fItrou noir\fP. .TP \fBEISCONN\fP \fBconnect\fP(2) a été appelée sur un socket déjà connecté. .TP \fBEMSGSIZE\fP Un datagramme est plus grand qu’une MTU sur le chemin et ne peut pas être fragmenté. .TP \fBENOBUFS\fP .TQ \fBENOMEM\fP La mémoire libre est insuffisante. Cela signifie souvent que l'allocation mémoire est contrainte par les limites du tampon de socket, pas par la mémoire du système, mais ce n'est pas toujours le cas. .TP \fBENOENT\fP \fBSIOCGSTAMP\fP a été appelé sur un socket qu'aucun paquet n'a atteint. .TP \fBENOPKG\fP Un sous\-système du noyau n'est pas configuré. .TP \fBENOPROTOOPT\fP .TQ \fBEOPNOTSUPP\fP Passage d'une option de socket non valable. .TP \fBENOTCONN\fP L'opération n'est définie que pour un socket connecté, mais ce socket n'était pas connecté. .TP \fBEPERM\fP L'utilisateur n'a pas la permission de définir une priorité haute, de changer la configuration ou d'envoyer des signaux au groupe ou au processus demandé. .TP \fBEPIPE\fP La connexion a été fermée prématurément ou volontairement par l'autre extrémité. .TP \fBESOCKTNOSUPPORT\fP Le socket n'est pas configuré ou un type de socket inconnu a été demandé. .P D'autres erreurs peuvent être déclenchées par les protocoles des couches supérieures. Consultez \fBtcp\fP(7), \fBraw\fP(7), \fBudp\fP(7) et \fBsocket\fP(7). .SH NOTES Soyez très prudents avec l'option \fBSO_BROADCAST\fP, elle n'est pas privilégiée sous Linux. Il est facile de surcharger un réseau avec des diffusions générales sans précaution. Pour les nouveaux protocoles applicatifs, il vaut mieux utiliser un groupe de diffusion multiple plutôt que la diffusion générale. Cette dernière est déconseillée. Voir la RFC 6762 pour un exemple de protocole (mDNS) utilisant l'approche plus moderne de diffusion multiple pour communiquer avec un groupe illimité d'hôtes sur le réseau local. .P L'utilisation du niveau des options de socket \fBSOL_IP\fP n'est pas portable, les piles basées sur BSD utilisent le niveau \fBIPPROTO_IP\fP. .P \fBINADDR_ANY\fP(0.0.0.0) et \fBINADDR_BROADCAST\fP (255.255.255.255) sont indépendantes de l’ordre des octets. Cela signifie que \fBhtonl\fP(3) n’a aucun effet sur elles. .SS Compatibilité Pour la compatibilité avec Linux 2.0, la syntaxe obsolète \fBsocket(AF_INET, SOCK_PACKET, \fP\fIprotocole\fP\fB)\fP est encore gérée pour ouvrir un socket \fBpacket\fP(7). Cela est déconseillé et doit être remplacé par \fBsocket(AF_PACKET, SOCK_RAW, \fP\fIprotocole\fP\fB)\fP. La principale différence est la nouvelle structure d'adresse \fIsockaddr_ll\fP pour les informations génériques de la couche de liaison à la place de l'ancienne \fBsockaddr_pkt\fP. .SH BOGUES Il y a trop de valeurs d'erreurs hétérogènes. .P L’erreur utilisée pour diagnostiquer l’épuisement de l’intervalle de ports éphémères varie suivant les appels systèmes (\fBconnect\fP(2), \fBbind\fP(2), \fBlisten\fP(2), \fBsendto\fP(2)) qui peuvent assigner des ports éphémères. .P .\" .P .\" Some versions of glibc forget to declare .\" .IR in_pktinfo . .\" Workaround currently is to copy it into your program from this man page. Les ioctls pour configurer les options d'interface spécifiques à IP et les tables ARP ne sont pas décrites. .P .\" .SH AUTHORS .\" This man page was written by Andi Kleen. La réception de l'adresse de destination originale avec \fBMSG_ERRQUEUE\fP dans \fImsg_name\fP par \fBrecvmsg\fP(2) ne fonctionne pas dans certains noyaux Linux 2.2. .SH "VOIR AUSSI" \fBIPPROTO_IP\fP(2const), \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBbyteorder\fP(3), \fBcapabilities\fP(7), \fBicmp\fP(7), \fBipv6\fP(7), \fBnetdevice\fP(7), \fBnetlink\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBip\fP(8) .P Le fichier source du noyau \fIDocumentation/networking/ip\-sysctl.rst\fP. .P RFC\ 791 pour les spécifications IP d'origine. RFC\ 1122 pour les exigences IPv4 des hôtes. RFC\ 1812 pour les exigences IPv4 des routeurs. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Jean-Paul Guillonneau et bubu . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .