Provided by: manpages-fr_4.23.1-1_all bug

NOM

       udp - Protocole UDP pour IPv4

SYNOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/udp.h>

       udp_socket = socket(AF_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  fiable,  sans  connexion.  Les  paquets
       peuvent être réordonnés ou dupliqués avant leur arrivée. UDP crée et vérifie des sommes de
       contrôle pour détecter les erreurs de transmission.

       Lorsqu'un socket UDP est créé, 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 valable en argument.  Lorsque  connect(2)  est  appelé  sur  un
       socket,  l'adresse de destination par défaut est définie, et les datagrammes pourront être
       envoyés avec send(2) ou write(2)  sans  indiquer  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, un socket doit être attaché à une adresse locale
       en  utilisant  bind(2).  Sinon,  la  couche socket affectera automatiquement un port local
       libre, hors de l'intervalle défini par /proc/sys/net/ipv4/ip_local_port_range et  attacher
       le 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 tampon 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 pris en charge.

       Les options IP peuvent être envoyé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 paramètre /proc approprié
       est activé (mais sont quand même fournies à l'utilisateur quant il est inhibé).  Consultez
       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.

       Par  défaut,  l'UDP sous Linux utilise la détection de MTU (« Maximum Transmission Unit »)
       par chemin. Cela signifie que le noyau garde  en  mémoire  le  MTU  vers  une  adresse  IP
       particulière,  et  renvoie  EMSGSIZE  lorsqu'une  écriture sur un socket UDP dépasse cette
       taille. Dans ce cas, l'application doit réduire la taille du paquet. La détection  de  MTU
       par  chemin  peut  être  désactivée  avec l'option de socket IP_MTU_DISCOVER ou le fichier
       /proc/sys/net/ipv4/ip_no_pmtu_disc ; consultez ip(7) pour plus de détails.  Lorsque  cette
       option est désactivée, UDP fragmente les paquets sortants dont la taille dépasse le MTU de
       l'interface. C’est cependant découragé, pour des raisons de performance et de fiabilité.

   Formats d'adresse
       UDP utilise le format d'adresse IPv4 sockaddr_in comme indiqué dans ip(7).

   Traitement des erreurs
       Toutes les erreurs fatales seront transmises à l'utilisateur comme un retour d'erreur même
       lorsque  le  socket  n'est  pas  connecté.  Ça  comprend les erreurs asynchrones reçues du
       réseau. Vous pouvez ainsi recevoir une erreur due à un paquet précédemment envoyé  sur  le
       même  socket.  Ce  comportement  diffère de celui de nombreuses autres implémentations des
       sockets BSD, qui ne transmettent  pas  d'erreur  si  le  socket  n'est  pas  connecté.  Le
       comportement de Linux correspond à la RFC 1122.

       Pour  assurer  la  compatibilité  avec  du  code  ancien,  sous Linux 2.0 et 2.2, l'option
       SOL_SOCKET SO_BSDCOMPAT pouvait être définie pour ne recevoir les erreurs distantes que si
       le socket a été connecté (sauf pour EPROTO et EMSGSIZE). Les erreurs locales sont toujours
       transmises. La gestion de cette option a été supprimée  dans  les  noyaux  plus  récents ;
       consultez socket(7) pour plus d'informations.

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

   /proc interfaces
       La  configuration  des  paramètres  système  pour  UDP  est accessible par les fichiers du
       répertoire /proc/sys/net/ipv4/.

       udp_mem (depuis Linux 2.6.25)
              C'est un vecteur de trois entiers qui contrôle le nombre de pages permises pour  la
              file d’attente de tous les sockets UDP.

              min    En  dessous  de  ce  nombre de pages, UDP ne se soucie pas de son appétit en
                     mémoire. Quand la quantité de mémoire allouée par UDP dépasse cette  valeur,
                     UDP commence à limiter son utilisation mémoire.

              pressure
                     Cette  valeur  a  été  introduite  pour  suivre  le  format de tcp_mem (voir
                     tcp(7)).

              max    Nombre de pages permises pour la file d’attente de tous les sockets UDP.

              Les valeurs par défaut pour ces trois éléments sont calculées au démarrage à partir
              de la quantité de mémoire disponible.

       udp_rmem_min (entier ; PAGE_SIZE par défaut ; depuis Linux 2.6.25)
              Taille  minimale,  en octets, des tampons de réception utilisés par les sockets UDP
              dans le mode de modération. Chaque socket  UDP  peut  utiliser  cette  taille  pour
              recevoir des données, même si le nombre total de pages pour les sockets UDP dépasse
              le seuil udp_mem.

       udp_wmem_min (entier ; PAGE_SIZE par défaut ; depuis Linux 2.6.25)
              Taille minimale, en octets, du tampon d'émission utilisé par les sockets  UDP  dans
              le  mode  de  modération. Chaque socket UDP peut utiliser cette taille pour envoyer
              des données, même si le nombre total de pages pour les sockets UDP dépasse le seuil
              udp_mem.

   Options de socket
       Pour  lire  ou  écrire  une option de socket UDP, appeler getsockopt(2) pour la lecture ou
       setsockopt(2) pour l'écriture, avec l'argument de niveau d'option valant IPPROTO_UDP. Sauf
       mention contraire, optval est un pointeur vers un int.

       Voilà  une  liste  des  options  spécifiques  à UDP. Pour des détails sur certaines autres
       options de socket qui sont aussi applicables sur les sockets UDP, voir socket(7).

       UDP_CORK (depuis Linux 2.5.44)
              Si cette option est active, toutes  les  données  en  sortie  sur  ce  socket  sont
              accumulées  dans un unique datagramme qui est émis dès que l'option est désactivée.
              Cette option ne doit  pas  être  utilisée  dans  des  programmes  destinés  à  être
              portables.

       UDP_SEGMENT (depuis Linux 4.18)
              Enables  UDP  segmentation  offload.  Segmentation  offload reduces send(2) cost by
              transferring multiple datagrams worth of data as a single large packet through  the
              kernel  transmit  path,  even when that exceeds MTU. As late as possible, the large
              packet is split by segment size into  a  series  of  datagrams.  This  segmentation
              offload step is deferred to hardware if supported, else performed in software. This
              option takes a value in the range [0, USHRT_MAX] that sets the  segment  size:  the
              size of datagram payload, excluding the UDP header. The segment size must be chosen
              such that at most 64 datagrams are sent in a single call  and  that  the  datagrams
              after  segmentation  meet  the  same MTU rules that apply to datagrams sent without
              this  option.  Segmentation  offload  depends  on  checksum  offload,  as  datagram
              checksums  are  computed  after  segmentation.  The  option  may  also  be  set for
              individual sendmsg(2)  calls by passing it as a cmsg(3). A value of  zero  disables
              the feature. This option should not be used in code intended to be portable.

       UDP_GRO (depuis Linux 5.0)
              Enables  UDP receive offload. If enabled, the socket may receive multiple datagrams
              worth of data as a single large buffer, together with  a  cmsg(3)  that  holds  the
              segment  size.  This  option  is  the  inverse  of segmentation offload. It reduces
              receive cost by handling multiple datagrams worth of data as a single large  packet
              in  the  kernel receive path, even when that exceeds MTU. This option should not be
              used in code intended to be portable.

   Ioctls
       Ces ioctls sont accessibles à travers l'appel système ioctl(2). La syntaxe correcte est :

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

       FIONREAD (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.
              Attention : en utilisant FIONREAD, il est impossible de distinguer le cas où  aucun
              datagramme  n'est  en  attente du cas où le prochain datagramme en attente contient
              0 octet de données. Il est préférable d'utiliser select(2),  poll(2),  ou  epoll(7)
              pour différencier ces cas.

       TIOCOUTQ (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 pris en charge.

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 un socket UDP.

       ECONNREFUSED
              Aucun  correspondant  sur  l'adresse  destination  associée au socket. Ça peut être
              causé par l'émission antérieure d'un paquet sur le socket.

VERSIONS

       IP_RECVERR est une nouveauté de Linux 2.2.

VOIR AUSSI

       ip(7), raw(7), socket(7), udplite(7)

       Le fichier source du noyau Documentation/networking/ip-sysctl.txt.

       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 du chemin.

TRADUCTION

       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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.