Provided by: manpages-fr_1.67.0-1_all bug

NOM

       udp - Protocole UDP pour IPv4

SYNOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>
       udp_socket = socket(PF_INET, SOCK_DGRAM, 0);

DESCRIPTION

       Il  s’agit d’une implémentation de l’User Datagram Protocol décrit dans
       la RFC 768. Elle implémente un  service  de  paquets  datagrammes  non-
       fiables,  sans  connexion.   Les  paquets  peuvent  être  réordonnés ou
       dupliqués avant leur arrivée.   UDP  créé  et  vérifie  des  sommes  de
       contrôle pour détecter les erreurs de transmission.

       Lorsqu’une socket UDP est créée, ses adresses locales et distantes sont
       indéterminées.  Les datagrammes peuvent être envoyés  immédiatement  en
       utilisant  sendto(2)  ou  sendmsg(2)  avec  une  adresse de destination
       valide en argument. Lorsque  connect(2)  est  appelé  sur  une  socket,
       l’adresse  de  destination  par  défaut  est  fixée, et les datagrammes
       pourront être envoyés avec send(2) ou write(2) sans spécifier d’adresse
       de  destination.   Il restera possible d’envoyer des données à d’autres
       destinations en passant l’adresse à sendto(2) ou sendmsg(2).   Afin  de
       recevoir  les  paquets,  une  socket  doit  être attachée à une adresse
       locale  en  utilisant  bind(2).   Sinon  la  couche  socket   affectera
       automatiquement  une  port local libre, hors de l’intervalle défini par
       net.ipv4.ip_local_port_range  et  attacher  la   socket   à   l’adresse
       INADDR_ANY.

       Les  opérations  de réception ne renvoient qu’un seul paquet à la fois.
       Si le paquet est plus petit que le buffer transmis,  il  n’y  aura  pas
       plus  de données renvoyées. S’il est plus grand, le paquet sera tronqué
       et le drapeau MSG_TRUNC sera activé.  MSG_WAITALL n’est pas supporté.

       Les options IP peuvent être fixées ou lues en utilisant les options des
       sockets  décrites  dans ip(7).  Elles ne sont traitées par le noyau que
       lorsque le sysctl approprié est activé (mais sont quand même fournies à
       l’utilisateur quant il est inhibé). Voir ip(7).

       Quand  l’attribut  MSG_DONTROUTE  est  actif à l’émission, l’adresse de
       destination doit représenter une  adresse  d’interface  locale,  et  le
       paquet n’est envoyé qu’à cette interface.

       UDP  fragmente  un  paquet  quand  sa  longueur totale excède le MTU de
       l’interface (Maximum Transmission Unit). Une alternative plus  efficace
       pour  le  réseau  est  d’utiliser  la recherche du MTU du chemin, comme
       indiqué dans la section IP_MTU_DISCOVER de ip(7).

FORMAT DADRESSE
       UDP utilise le format d’adresse IPv4  sockaddr_in  comme  indiqué  dans
       ip(7).

GESTION DERREUR
       Toutes  les  erreurs fatales seront transmises à l’utilisateur comme un
       retour d’erreur même lorsque la socket n’est pas connectée. Ceci inclut
       les  erreurs  asynchrones reçues du réseau.  Vous pouvez ainsi recevoir
       une erreur due à un paquet précédemment envoyé sur la même socket.   Ce
       comportement  diffère de celui de nombreuses autres implémentations des
       sockets BSD, qui ne transmettent pas d’erreur si la  socket  n’est  pas
       connectée.  Les comportements de Linux correspondent à la RFC 1122.

       Pour  assurer  la  compatibilité  avec  du  code  ancien, on peut fixer
       l’option SOL_SOCKET SO_BSDCOMPAT pour ne recevoir les erreurs distantes
       que  si  la  socket a été connectée (sauf pour EPROTO et EMSGSIZE).  Il
       vaut mieux corriger le code pour gérer les  erreurs  proprement  plutôt
       que   d’activer  cette  option.   Les  erreurs  locales  sont  toujours
       transmises.

       Lorsque  l’option  IP_RECVERR  est  active,  toutes  les  erreurs  sont
       stockées  dans  la file d’erreur de la socket et peuvent être lues avec
       recvmsg(2) en activant son option MSG_ERRQUEUE.

IOCTLS

       Les ioctls sont accessible avec l’appel-système ioctl(2).   La  syntaxe
       correcte est :

              int value;
              error = ioctl(tcp_socket, ioctl_type, &value);

       SIOCINQ
              Prend  en  argument un pointeur sur un entier. Y écrit la taille
              en octets du prochain datagramme  en  attente,  ou  0  si  aucun
              datagramme n’est disponible.

       SIOCOUTQ
              Renvoie  le  nombre  d’octets de données dans la file d’émission
              locale. Seulement sur Linux 2.4 et ultérieurs.

       De plus, les ioctls documentés dans ip(7) et socket(7) sont  supportés.

ERREURS

       Toutes  les  erreurs  documentées  pour socket(7) ou ip(7) peuvent être
       renvoyées lors d’une émission ou d’une réception sur une socket UDP.

       ECONNREFUSED Aucun correspondant sur l’adresse destination  associée  à
       la  socket.  Ceci peut être causé par l’émission antérieure d’un paquet
       sur la socket.

VERSIONS

       IP_RECVERR est une nouveauté de Linux 2.2.

CREDITS

       Cette page de manuel a été écrite par Andi Kleen.

VOIR AUSSI

       ip(7), socket(7), raw(7).

       RFC 768 pour le protocole UDP.
       RFC 1122 pour les nécessités de l’hôte.
       RFC 1191 pour une description de la recherche du MTU par chemin.

TRADUCTION

       Christophe Blaess, 2001-2003.