Provided by: manpages-fr_2.80.1-1_all bug

NOM

       ip - Implémentation Linux du protocole IPv4

SYNOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip.h> /* surensemble des précédents */

       tcp_socket = socket(PF_INET, SOCK_STREAM, 0);
       udp_socket = socket(PF_INET, SOCK_DGRAM, 0);
       raw_socket = socket(PF_INET, SOCK_RAW, protocole);

DESCRIPTION

       Linux  implémente le protocole internet (IP) version 4, décrit dans les
       RFC 791 et RFC 1122. ip 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.

       L’interface de programmation est compatible avec les sockets BSD.  Pour
       plus d’informations sur les sockets, voyez socket(7).

       Une socket IP est créée en appelant la fonction socket(2) sous la forme
       socket(PF_INET, type_socket, protocole). Les types valables de  sockets
       sont  SOCK_STREAM pour ouvrir une socket tcp(7), SOCK_DGRAM pour ouvrir
       une socket udp(7), ou SOCK_RAW pour ouvrir une socket raw(7) permettant
       d’accéder  directement  au protocole IP. Le protocole indiqué est celui
       inscrit dans les en-têtes IP émis ou reçus. Les seules valeurs valables
       pour  le  protocole sont 0 et IPPROTO_TCP pour les sockets TCP, et 0 et
       IPPROTO_UDP pour les sockets UDP. Pour les sockets  SOCK_RAW,  on  peut
       indiquer  un  protocole  IP  IANA  valable dont la RFC 1700 précise les
       numéros assignés.

       Lorsqu’un processus veut recevoir de nouveaux paquets entrants  ou  des
       connexions,  il  doit  attacher  une  socket  à une adresse d’interface
       locale en utilisant bind(2). Une seule socket IP peut être  attachée  à
       une  paire  (adresse, port) locale donnée. Lorsqu’on indique INADDR_ANY
       lors de l’attachement, la socket sera affectée à toutes les  interfaces
       locales.  Si  listen(2)  ou connect(2) sont appelées sur une socket non
       affectée,  celle-ci  est  automatiquement  attachée  à  un  port  libre
       aléatoire, avec l’adresse locale définie à INADDR_ANY.

       L’adresse  locale  d’une socket TCP qui a été attachée est indisponible
       pendant quelques instants après sa fermeture, à  moins  que  l’attribut
       SO_REUSEADDR  ait  été  activé.  Il  faut être prudent en utilisant cet
       attribut, car il rend le protocole TCP moins fiable.

   Format dadresse
       Une adresse de socket IP est définie comme la combinaison d’une adresse
       IP  d’interface  et  d’un  numéro  de  port. Le protocole IP de base ne
       fournit pas de numéro de port, ils sont implémentés par les  protocoles
       de  plus  haut  niveau  comme udp(7) et tcp(7). Sur les sockets raw, le
       champ sin_port contient le protocole IP.

           struct sockaddr_in {
               sa_family_t    sin_family; /* famille d’adresses : AF_INET */
               uint16_t       sin_port;   /* port dans l’ordre des
                                             octets réseau */
               struct in_addr sin_addr;   /* adresse Internet */
           };

           /* Adresse Internet */
           struct in_addr {
               uint32_t       s_addr;     /* adresse dans l’ordre des
                                             octets réseau */
           };

       sin_family est toujours défini à AF_INET.  C’est  indispensable :  sous
       Linux 2.2,  la  plupart  des  fonctions réseau renvoient EINVAL lorsque
       cette configuration manque. sin_port contient le numéro de  port,  dans
       l’ordre  des  octets  du réseau. Les numéros de ports inférieurs à 1024
       sont dits rservs. Seuls les processus privilégiés (à savoir ceux  qui
       ont  la capacité CAP_NET_BIND_SERVICE) peuvent appeler bind(2) pour ces
       sockets. Le protocole IPv4 en tant que tel n’a pas le concept de ports,
       ceux-ci  étant  seulement  implémentés  par des protocoles de plus haut
       niveau comme tcp(7) et udp(7).

       sin_addr est l’adresse IP de l’hôte. Le membre s_addr de  la  structure
       in_addr  contient  l’adresse de l’interface de l’hôte, dans l’ordre des
       octets du réseau. in_addr doit  se  voir  assigner  l’une  des  valeurs
       INADDR_*  (par  exemple,  INADDR_ANY)  ou  être manipulé au travers des
       fonctions de bibliothèque inet_aton(3), inet_addr(3),  inet_makeaddr(3)
       ou   directement   par   le   système  de  résolution  des  noms  (voir
       gethostbyname(3)). Les adresses  IPv4  sont  divisées  en  adresses  de
       diffusions   individuelle,   générale  et  multiple.  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  SO_BROADCAST  est activé. Dans l’implémentation
       actuelle, les sockets orientées connexion ne sont  autorisées  que  sur
       des adresses de diffusion individuelle.

       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
       htons(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.

       Il    existe   plusieurs   adresses   particulières :   INADDR_LOOPBACK
       (127.0.0.1) correspond toujours à  l’hôte  local  via  le  périphérique
       loopback ;  INADDR_ANY  (0.0.0.0)  signifie  un attachement à n’importe
       quelle adresse ; INADDR_BROADCAST (255.255.255.255) signifie  n’importe
       quel hôte et a le même effet sur l’attachement que INADDR_ANY, pour des
       raisons historiques.

   Options de sockets
       IP gère quelques options  de  sockets  spécifiques  au  protocole,  qui
       peuvent   être   définies   avec   setsockopt(2)   et  consultées  avec
       getsockopt(2). Le niveau d’option de sockets pour IP est IPPROTO_IP. Un
       attribut entier booléen est faux quand il vaut zéro, et vrai sinon.

       IP_OPTIONS
              Définit  ou  lit les options IP à envoyer avec chaque paquet sur
              cette socket. Les arguments  sont  un  pointeur  sur  un  tampon
              mémoire  contenant  les  options  et  la  longueur  des options.
              L’appel à setsockopt(2) définit les options IP associées  à  une
              socket. La taille maximale des options pour IPv4 vaut 40 octets.
              Voyez la RFC 791 pour les options autorisées. Lorsque le  paquet
              de  connexion  initiale  d’une  socket  SOCK_STREAM contient des
              options IP, celles-ci seront  automatiquement  attribuées  à  la
              socket,  avec  les  en-têtes  de  routage  inversés. Les paquets
              entrants ne peuvent  pas  modifier  les  options  après  que  la
              connexion  a  été  établie. Le traitement des options de routage
              des paquets entrants est désactivé  par  défaut,  et  peut  être
              validé  en  utilisant la requête sysctl accept_source_route. Les
              autres options, comme les horodatages, sont  toujours  traitées.
              Pour  les  sockets  datagramme,  les  options IP ne peuvent être
              définies que par l’utilisateur local. L’appel  de  getsockopt(2)
              avec  IP_OPTIONS  remplit  le  tampon  fourni  avec  les options
              d’émission actuelles.

       IP_PKTINFO
              Fournit un message  IP_PKTINFO  de  service,  qui  contient  une
              structure  pktinfo  fournissant  quelques  informations  sur  le
              paquet  entrant.  Ceci  ne  fonctionne  que  pour  les   sockets
              orientées  datagramme. L’argument est un attribut indiquant à la
              socket si le message IP_PKTINFO  doit  être  passé  ou  non.  Le
              message  lui-même  ne peut être écrit ou lu que comme message de
              contrôle avec un paquet, en utilisant recvmsg(2) ou  sendmsg(2).

                  struct in_pktinfo {
                      unsigned int   ipi_ifindex;   /* Numéro d’interface     */
                      struct in_addr ipi_spec_dst;  /* Adresse locale         */
                      struct in_addr ipi_addr;      /* Adresse de destination */
                  };

              ipi_ifindex  est le numéro unique de l’interface sur laquelle le
              paquet a été reçu. ipi_spec_dst est l’adresse locale  du  paquet
              et  ipi_addr  est  l’adresse  de  destination  dans l’en-tête du
              paquet. Si IP_PKTINFO est passé à sendmsg(2) et ipi_spec_dst est
              différent  de  zéro,  alors il sera utilisé comme adresse source
              pour la recherche dans la table de routage et pour  définir  les
              options  de  routage  IP.  Si ipi_ifindex est différent de zéro,
              l’adresse locale principale  de  l’interface  indiquée  par  cet
              index remplace ipi_spec_dst pour la table de routage.

       IP_RECVTOS
              Le message de service IP_TOS est passé avec les paquets entrants
              si cette option est activée. Elle contient un octet  qui  décrit
              le  champ  Type-Of-Service/Precedence de l’en-tête du paquet. Il
              s’agit d’un attribut entier booléen.

       IP_RECVTTL
              Lorsque cet attribut est défini, passe un  message  de  contrôle
              IP_TTL  avec  le  champ  Time To Live du paquet reçu, sous forme
              d’octet. Ceci n’est pas géré pour les sockets SOCK_STREAM.

       IP_RECVOPTS
              Passe à l’utilisateur toutes les options IP  entrantes  dans  un
              message  de  contrôle  IP_OPTIONS.  L’en-tête  de routage et les
              autres options sont déjà remplies pour l’hôte local. Ceci  n’est
              pas géré pour les sockets SOCK_STREAM.

       IP_RETOPTS
              Identique  à  IP_RECVOPTS,  mais  renvoie les options brutes non
              traitées, avec les options d’enregistrement des  horodatages  et
              du routage non remplies pour ce saut.

       IP_TOS Définit  ou  récupère le champ Type-Of-Service (TOS) envoyé avec
              chaque paquet IP sortant de cette socket. Cela sert à gérer  sur
              le  réseau  les  priorités  entre  paquets.  TOS  est  un octet.
              Quelques attributs TOS standards sont  définis :  IPTOS_LOWDELAY
              pour   minimiser   les   délais   pour   le  trafic  interactif,
              IPTOS_THROUGHPUT pour optimiser le débit, IPTOS_RELIABILITY pour
              optimiser la fiabilité, IPTOS_MINCOST doit être utilisé pour les
              données de remplissage, quand la lenteur de transmission importe
              peu.  Une  de ces valeurs TOS au maximum peut être indiquée. Les
              autres bits ne sont pas valables et doivent être effacés.  Linux
              envoie  d’abord  des datagrammes IPTOS_LOWDELAY par défaut, mais
              le comportement exact dépend de la politique configurée pour  la
              file  d’attente.  Quelques  niveaux  de  haute  priorité peuvent
              réclamer  les  privilèges  du  superutilisateur   (la   capacité
              CAP_NET_ADMIN).  La  priorité  peut  aussi  être  définie  d’une
              manière indépendante du protocole avec  les  options  de  socket
              (SOL_SOCKET, SO_PRIORITY) (voyez socket(7)).

       IP_TTL Définit  ou  récupère  le  contenu  actuel du champ Time-To-Live
              utilisé avec chaque paquet envoyé depuis cette socket.

       IP_HDRINCL
              Si cette option est activée, l’utilisateur fournit un en-tête IP
              avant  les  données  utilisateur. Cette option n’est valable que
              pour les sockets SOCK_RAW. Voyez raw(7) pour  plus  de  détails.
              Lorsque  cet  attribut  est  activé,  les  valeurs définies pour
              IP_OPTIONS, IP_TTL et IP_TOS sont ignorées.

       IP_RECVERR (défini dans <linux/errqueue.h>)
              Active le passage amélioré des messages d’erreur. Lorsque  cette
              option  est  activée  pour  une  socket  datagramme,  toutes les
              erreurs  générées  seront  envoyées  dans  une  file   d’erreurs
              particulière à la socket. Quand l’utilisateur détecte une erreur
              d’opération sur  la  socket,  celle-ci  peut  être  examinée  en
              invoquant  recvmsg(2)  avec  l’attribut  MSG_ERRQUEUE défini. La
              structure sock_extended_err décrivant l’erreur sera passée comme
              message  de  service  ayant  le  type  IP_RECVERR  et  le niveau
              IPPROTO_IP. Ceci permet une  gestion  d’erreur  fiable  sur  les
              sockets  non connectées. La partie comprenant les données reçues
              de la file d’erreurs  contient  le  paquet  ayant  rencontré  un
              problème.

              Le   message  de  contrôle  IP_RECVERR  contient  une  structure
              sock_extended_err :

                  #define SO_EE_ORIGIN_NONE    0
                  #define SO_EE_ORIGIN_LOCAL   1
                  #define SO_EE_ORIGIN_ICMP    2
                  #define SO_EE_ORIGIN_ICMP6   3

                  struct sock_extended_err {
                      uint32_t ee_errno;   /* numéro d’erreur */
                      uint8_t  ee_origin;  /* origine de l’erreur */
                      uint8_t  ee_type;    /* type */
                      uint8_t  ee_code;    /* code */
                      uint8_t  ee_pad;
                      uint32_t ee_info;    /* données supplémentaires */
                      uint32_t ee_data;    /* autres données */
                      /* Des données supplémentaires peuvent suivre */
                  };

                  struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);

              ee_errno contient le numéro de  l’erreur  errno  mise  en  file.
              ee_origin  est  le  code  de  l’origine  de l’erreur. Les autres
              champs sont spécifiques au protocole.  La  macro  SO_EE_OFFENDER
              renvoie  un  pointeur  sur  l’adresse  d’un  objet  réseau  d’où
              l’erreur provient, en prenant en argument  un  pointeur  sur  le
              message  de  service.  Si cette adresse n’est pas disponible, le
              membre sa_family de la structure sockaddr contient AF_UNSPEC  et
              les autres champs de sockaddr ne sont pas définis.

              IP utilise la structure sock_extended_err comme suit : ee_origin
              contient SO_EE_ORIGIN_ICMP pour les erreurs reçues sous forme de
              paquet ICMP, ou SO_EE_ORIGIN_LOCAL pour les erreurs locales. Les
              valeurs inconnues doivent être ignorées. ee_type et ee_code sont
              définis  à  partir  des  champs  type et code de l’en-tête ICMP.
              ee_info contient la MTU déterminée pour les erreurs EMSGSIZE. Le
              message  contient  aussi  l’adresse  sockaddr_in  du noeud ayant
              causé  l’erreur,  qui   peut   être   obtenu   avec   la   macro
              SO_EE_OFFENDER.  Le  champ  sin_family  de l’adresse fournie par
              SO_EE_OFFENDER vaut  AF_UNSPEC  si  la  source  était  inconnue.
              Lorsque les erreurs proviennent du réseau, toutes les options IP
              (IP_OPTIONS, IP_TTL, etc.) valables pour la socket et  contenues
              dans  le  paquet  d’erreur  sont  transmises  comme  messages de
              contrôle. La charge du  paquet  causant  l’erreur  est  renvoyée
              comme   charge   normale.   TCP  n’a  pas  de  file  d’erreurs ;
              MSG_ERRQUEUE n’est  pas  permis  sur  les  sockets  SOCK_STREAM.
              IP_RECVERR  est  valable  pour TCP, mais toutes les erreurs sont
              renvoyées au retour des fonctions de socket ou par SO_ERROR.

              Pour les sockets raw, IP_RECVERR active le passage de toutes les
              erreurs  ICMP  reçues  à  l’application,  sinon les erreurs sont
              seulement renvoyées sur les sockets connectées.

              Il  s’agit  d’un  attribut  booléen   entier.   IP_RECVERR   est
              désactivée par défaut.

       IP_MTU_DISCOVER
              Définit  ou  récupère  la  définition  de  recherche des MTU des
              chemins  pour  une  socket.  Lorsqu’elle  est   activée,   Linux
              effectuera  la recherche de la MTU d’un chemin comme défini dans
              la RFC 1191. L’attribut interdisant la fragmentation  est  alors
              activé  sur  tous les datagrammes sortants. La valeur par défaut
              est commandée au niveau système par  le  sysctl  ip_no_pmtu_disc
              pour  les  sockets  SOCK_STREAM,  et  désactivée pour toutes les
              autres. Pour les sockets autres que  SOCK_STREAM,  l’utilisateur
              est  responsable  de  l’empaquetage  des  données dans des blocs
              inférieurs à la MTU et doit s’assurer de  la  retransmission  si
              besoin. Le noyau rejettera les paquets qui sont plus gros que la
              MTU du chemin  déterminée  si  cet  attribut  est  activé  (avec
              l’erreur EMSGSIZE).

              Attributs MTU des chemins   Signification
              IP_PMTUDISC_WANT            utiliser une configuration par route
              IP_PMTUDISC_DONT            ne pas rechercher la MTU des chemins
              IP_PMTUDISC_DO              toujours chercher la MTU des chemins
              IP_PMTUDISC_PROBE           Active DF (« Don’t Fragment », ne pas fragmenter), mais ignore les recherches de MTU des chemins

              Lorsque  la  recherche  de  la  PMTU est activée, le noyau garde
              automatiquement une trace  des  MTU  des  chemins  par  hôte  de
              destination.   Lorsqu’il   est   connecté   à  un  correspondant
              spécifique avec connect(2), la MTU du chemin  actuel  déterminée
              peut  être  consultée  en utilisant l’option IP_MTU de la socket
              (par exemple si une erreur EMSGSIZE se  produit).  Cette  valeur
              peut  changer au cours du temps. Pour les sockets sans connexion
              avec  plusieurs  destinations,  la   nouvelle   MTU   pour   une
              destination  donnée  peut également être obtenue en utilisant la
              file d’erreur (voyez IP_RECVERR). Une nouvelle erreur sera  mise
              en file pour chaque mise à jour de la MTU.

              Durant  la recherche de la MTU, les paquets initiaux des sockets
              datagramme peuvent être perdus. Les applications  utilisant  UDP
              devraient  le  savoir,  et  les  éviter  dans  leur stratégie de
              retransmission.

              Pour démarrer le processus de recherche de la MTU du chemin  sur
              les sockets non connectées, il est possible de démarrer avec une
              grande taille de datagramme  (jusqu’à  64 ko  d’en-tête)  et  la
              diminuer  au  fur  et  à  mesure  des mises à jours de la MTU du
              chemin.

              Afin d’obtenir une estimation initiale  de  la  MTU  du  chemin,
              connecte  une  socket  datagramme  à l’adresse de destination en
              utilisant  connect(2)  et   consultez   la   MTU   en   appelant
              getsockopt(2) avec l’option IP_MTU.

              Il est possible d’implémenter la RFC 4821 pour les recherches de
              MTU avec des sockets SOCK_DGRAM  ou  SOCK_RAW  en  utilisant  la
              valeur  IP_PMTUDISC_PROBE.  C’est  aussi  particulièrement utile
              pour les outils de diagnostic  comme  tracepath(8)  qui  veulent
              délibérément  envoyer  des  paquets sonde plus larges que le MTU
              observé du chemin.

       IP_MTU Récupère la  MTU  du  chemin  actuellement  déterminée  pour  la
              socket.  Valable  seulement  quand  la  socket  a été connectée.
              Renvoie un entier. Valable uniquement avec getsockopt(2).

       IP_ROUTER_ALERT
              Passe tous les paquets à  transférer  avec  l’option  IP  Router
              Alert  activée sur cette socket. Ceci n’est valable que pour les
              sockets raw, et  sert  par  exemple  pour  les  démons  RSVP  de
              l’espace  utilisateur.  Les  paquets  enregistrés  ne  sont  pas
              redirigés par le noyau, l’utilisateur est responsable  de  leurs
              envois. L’attachement des sockets est ignoré, et de tels paquets
              ne sont filtrés que par le protocole. Il  s’agit  d’un  attribut
              entier.

       IP_MULTICAST_TTL
              Définit  ou  lit  la valeur du champ Time-To-Live des paquets de
              diffusion multiple  sortants  sur  cette  socket.  Il  est  très
              important pour les paquets de diffusion multiple de fixer le TTL
              le plus petit possible. La valeur  par  défaut  est  1,  ce  qui
              signifie  que  les paquets de diffusion multiple ne quittent pas
              le réseau local à moins que le programme de l’utilisateur ne  le
              réclame explicitement. L’argument est un entier.

       IP_MULTICAST_LOOP
              Définit  ou  lit  un  entier booléen indiquant si les paquets de
              diffusion multiple doivent être renvoyés en boucle  aux  sockets
              locales.

       IP_ADD_MEMBERSHIP
              Rejoint  un  groupe  de  diffusion  multiple. L’argument est une
              structure ip_mreqn.

                  struct ip_mreqn {
                      struct in_addr imr_multiaddr; /* Adresse IP du groupe
                                                       de diffusion multiple */
                      struct in_addr imr_address;   /* Adresse IP de
                                                       l’interface locale */
                      int            imr_ifindex;   /* Numéro d’interface */
                  };

              imr_multiaddr contient l’adresse du groupe de diffusion multiple
              que  l’application  veut  rejoindre  ou  quitter. Il doit s’agir
              d’une adresse de diffusion  multiple  valable.  imr_address  est
              l’adresse  de  l’interface  locale avec laquelle le système doit
              joindre le groupe de diffusion multiple. Si  elle  est  égale  à
              INADDR_ANY, une interface appropriée est choisie par le système.
              imr_ifindex est le numéro de l’interface qui doit  rejoindre  ou
              quitter le groupe imr_multiaddr, ou zéro pour indiquer n’importe
              quelle interface.

              Pour la compatibilité, l’ancienne structure ip_mreq  est  encore
              gérée.  Elle  diffère  de  ip_mreqn  seulement  par l’absence du
              membre imr_ifindex. Uniquement valable avec setsockopt(2).

       IP_DROP_MEMBERSHIP
              Quitte un groupe  de  diffusion  multiple.  L’argument  est  une
              structure ip_mreqn ou ip_mreq comme pour IP_ADD_MEMBERSHIP.

       IP_MULTICAST_IF
              Définit  le  périphérique  local  pour  une  socket de diffusion
              multiple. L’argument est  une  structure  ip_mreqn  ou  ip_mreq,
              comme pour IP_ADD_MEMBERSHIP.

              Lorsqu’une option de socket non valable est fournie, ENOPROTOOPT
              est renvoyée.

   Sysctls
       Le protocole IP  gère  l’interface  sysctl  pour  configurer  certaines
       options  globales.  Les  sysctls  peuvent  être  accédés  en  lisant ou
       écrivant  dans  les  fichiers  /proc/sys/net/ipv4/*  ou  en   utilisant
       l’interface  sysctl(2).  Les  variables  décrites  comme  des  booléens
       prennent  une  valeur   entière.   Celle-ci   signifie   que   l’option
       correspondante  est  activée si elle est différente de zéro (« true »),
       et désactivée si elle vaut zéro (« false »).

       ip_always_defrag (booléen)
              [Nouveauté des noyaux 2.2.13, dans les noyaux précédents,  cette
              fonctionnalité  était  contrôlée  lors  de  la  compilation avec
              l’option  CONFIG_IP_ALWAYS_DEFRAG.  Cette  option   n’est   plus
              présente dans les versions 2.4.x et suivantes.]

              Lorsque cet attribut booléen est activé (différent de zéro), les
              fragments entrants (morceaux de paquets IP obtenus quand un hôte
              entre  l’origine  et  la  destination  a  décidé que les paquets
              étaient  trop  grands  et  les  a  coupés  en  morceaux)  seront
              réassemblés  (défragmentés)  avant  d’être  traités,  même s’ils
              doivent être transférés.

              Cette option n’est à utiliser que pour un pare-feu  qui  est  le
              seul   lien   d’entrée   de   votre  réseau,  ou  un  mandataire
              transparent. Il ne faut jamais l’utiliser pour un routeur ou  un
              hôte  normal. Sinon, les communications fragmentées peuvent être
              interrompues si les fragments circulent par différents liens. La
              défragmentation  a  également  un  coût  mémoire  et  processeur
              important.

              Ceci est automagiquement activé lorsque le  masquerading  ou  le
              mandataire transparent sont configurés.

       ip_autoconfig
              Non documenté.

       ip_default_ttl (entier, défaut : 64)
              Définit  la  valeur par défaut du champ Time-To-Live des paquets
              sortants. Ceci peut être modifié  individuellement  pour  chaque
              socket avec l’option IP_TTL.

       ip_dynaddr (booléen, désactivé par défaut)
              Active  la  réécriture  dynamique  des  adresses de socket et du
              masquerading lors des changements  d’adresse  d’interface.  Cela
              sert  pour  les  liaisons  téléphoniques,  avec  des adresses IP
              changeantes. 0 signifie aucune réécriture, 1 les autorise, et  2
              demande un mode bavard.

       ip_forward (booléen, désactivé par défaut)
              Active le transfert IP avec un attribut booléen. Le transfert IP
              peut aussi être configuré interface par interface.

       ip_local_port_range
              Contient deux entiers qui définissent  l’intervalle  par  défaut
              des  ports locaux alloués aux sockets. L’allocation démarre avec
              le premier numéro et se termine avec le second. Cela ne doit pas
              entrer  en  conflit avec les ports utilisés pour le masquerading
              (bien que cela soit traité).  De  même,  des  choix  arbitraires
              peuvent  poser  des problèmes avec certains pare-feu de filtrage
              par paquet qui  font  des  suppositions  sur  les  ports  locaux
              utilisés.  Le premier nombre doit être au moins supérieur à 1024
              et de préférence à 4096 pour  éviter  les  collisions  avec  les
              ports officiels et minimiser les problèmes de pare-feu.

       ip_no_pmtu_disc (booléen, désactivé par défaut)
              Si  activé, supprime la recherche par défaut des MTU des chemins
              pour les sockets TCP. La recherche de la MTU  d’un  chemin  peut
              échouer avec des pare-feu mal configurés (qui rejettent tous les
              paquets ICMP) ou des interfaces mal configurées (par exemple, un
              lien  point-à-point  où  les  deux  extrémités n’ont pas la même
              MTU). Il vaut  mieux  corriger  le  routeur  défectueux  que  de
              supprimer  globalement  la  recherche  des  MTU des chemins, car
              cette dernière option augmente les coûts du réseau.

       ip_nonlocal_bind (booléen, désactivé par défaut)
              Si défini, permet aux processus de s’attacher avec bind(2) à des
              adresses  IP non locales, ce qui peut être utile mais peut faire
              planter certaines applications.

       ip6frag_time (entier, défaut : 30)
              Définit le temps en secondes de conservation d’un fragment  IPv6
              en mémoire.

       ip6frag_secret_interval (entier, défaut : 600)
              Définit  l’intervalle de régénération (en secondes) du secret de
              hachage (ou sa durée de vie) pour les fragments IPv6.

       ipfrag_high_thresh (entier), ipfrag_low_thresh (entier)
              Si le nombre de fragments IP en file atteint ipfrag_high_thresh,
              la  file  est restreinte à ipfrag_low_thresh. Contient un entier
              avec le nombre d’octets.

       neigh/*
              Voyez arp(7).

   Ioctls
       Toutes les ioctls décrits dans socket(7) s’appliquent à la couche IP.

       Les ioctls pour configurer les paramètres génériques des  périphériques
       sont décrits dans netdevice(7).

ERREURS

       EACCES 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
              SO_BROADCAST, l’envoi d’un paquet par une  route  interdite,  la
              modification  du  paramétrage du pare-feu sans les privilèges du
              superutilisateur (la capacité CAP_NET_ADMIN) et l’attachement  à
              un  port  réservé  sans  les  privilèges du superutilisateur (la
              capacité CAP_NET_BIND_SERVICE).

       EADDRINUSE
              Tentative d’attachement à une adresse déjà utilisée.

       EADDRNOTAVAIL
              Une  interface  inexistante  a  été   demandée,   ou   l’adresse
              d’émission demandée n’était pas locale.

       EAGAIN L’opération sur une socket non bloquante devrait bloquer.

       EALREADY
              Une  opération de connexion est déjà en cours sur une socket non
              bloquante.

       ECONNABORTED
              Une connexion a été fermée durant un appel à accept(2).

       EHOSTUNREACH
              Aucune table de routage valable ne  correspond  à  l’adresse  de
              destination.  Cette  erreur peut être due à un message ICMP d’un
              routeur distant ou pour la table de routage interne.

       EINVAL Un argument non  valable  a  été  fourni.  Pour  les  opérations
              d’envoi,  cela  peut être causé par un envoi vers une route trou
              noir.

       EISCONN
              connect(2) a été appelée sur une socket déjà connectée.

       EMSGSIZE
              Un datagramme est plus grand que la MTU du chemin et ne peut pas
              être fragmenté.

       ENOBUFS, ENOMEM
              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.

       ENOENT SIOCGSTAMP a été appelé  sur  une  socket  qu’aucun  paquet  n’a
              atteint.

       ENOPKG Un sous-système du noyau n’est pas configuré.

       ENOPROTOOPT et EOPNOTSUPP
              Passage d’une option de socket non valable.

       ENOTCONN
              L’opération  n’est  définie  que  sur une socket connectée, mais
              cette socket n’était pas connectée.

       EPERM  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é.

       EPIPE  La connexion a été  fermée  prématurément  ou  volontairement  à
              l’autre extrémité.

       ESOCKTNOSUPPORT
              La  socket  n’est  pas configurée ou un type de socket inconnu a
              été demandé.

       D’autres  erreurs  peuvent  être   déclenchées   par   les   protocoles
       supérieurs. Voyez tcp(7), raw(7), udp(7) et socket(7).

VERSIONS

       IP_MTU, IP_MTU_DISCOVER, IP_PKTINFO, IP_RECVERR et IP_ROUTER_ALERT sont
       de nouvelles options de Linux 2.2. Elles sont aussi spécifiques à Linux
       et ne doivent pas servir dans des programmes destinés à être portables.

       IP_PMTUDISC_PROBE est une nouveauté de Linux 2.6.22.

       La structure ip_mreqn est nouvelle dans Linux 2.2. Linux 2.0 ne  gérait
       que ip_mreq.

       Les sysctls ont été introduits avec Linux 2.2.

NOTES

       Soyez   très  prudents  avec  l’option  SO_BROADCAST,  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. Ce dernier est déconseillé.

       Certaines  autres  implémentations  des  sockets  BSD  fournissent  les
       options de socket IP_RCVDSTADDR et IP_RECVIF pour obtenir l’adresse  de
       destination   et  l’interface  des  datagrammes  reçus.  Linux  propose
       l’option IP_PKTINFO plus générale pour effectuer ce travail.

       Certaines  implémentations  BSD  des  sockets   fournissent   également
       l’option   IP_RECVTTL,  mais  un  message  de  service  ayant  le  type
       IP_RECVTTL est fourni  avec  le  paquet  entrant.  C’est  différent  de
       l’option IP_TTL utilisée sous Linux.

       L’utilisation  du  niveau  des  options  de  socket  SOL_IP  n’est  pas
       portable, les empilages basés sur BSD utilisent le niveau IPPROTO_IP.

   Compatibilité
       Pour  la  compatibilité   avec   Linux   2.0,   la   syntaxe   obsolète
       socket(PF_INET,  SOCK_PACKET,  protocole)  est encore gérée pour ouvrir
       une socket packet(7). Ceci est déconseillé, et doit être  remplacé  par
       socket(PF_PACKET, SOCK_RAW, protocole). La principale différence est la
       nouvelle  structure  d’adresse  sockaddr_ll   pour   les   informations
       génériques   de   la  couche  de  liaison  à  la  place  de  l’ancienne
       sockaddr_pkt.

BOGUES

       Il y a trop de valeurs d’erreurs hétérogènes.

       Les ioctls pour configurer les options d’interface spécifiques à IP  et
       les tables ARP ne sont pas décrites.

       Certaines  versions  de  la  glibc  oublient de déclarer in_pktinfo. Le
       contournement consiste à la recopier depuis cette page de  manuel  dans
       le programme.

       La  réception  de  l’adresse de destination originale avec MSG_ERRQUEUE
       dans msg_name par recvmsg(2) ne fonctionne  pas  dans  certains  noyaux
       2.2.

VOIR AUSSI

       recvmsg(2),   sendmsg(2),   byteorder(3),   ipfw(4),   capabilities(7),
       netlink(7), raw(7), socket(7), tcp(7), udp(7)

       RFC 791 pour les spécifications IP d’origine.
       RFC 1122 pour les nécessités IPv4 des hôtes.
       RFC 1812 pour les nécessités IPv4 des routeurs.

COLOPHON

       Cette page fait partie de  la  publication  2.80  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».