udp

UDP(7)                     Manuel du programmeur Linux                    UDP(7)



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'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 valable
       en argument. Lorsque connect(2) est appelé sur une 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, une socket doit être attachée à 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 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 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 une 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é.

   Format 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 la socket n'est pas connectée. Ça comprend
       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. 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 la socket a été connectée (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 de la socket et peuvent être lues avec recvmsg(2)
       en activant son option MSG_ERRQUEUE.

   Interfaces /proc
       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 toutes 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 toutes
                     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.

       Following is a list of UDP-specific socket options.  For details of some
       other socket options that are also applicable for UDP sockets, see
       socket(7).

       UDP_CORK (depuis Linux 2.5.44)
              Si cette option est active, toutes les données en sortie sur cette
              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.

   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)
              Returns the number of data bytes in the local send queue.
              Supported only with Linux 2.4 and above.

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

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

VERSIONS
       IP_RECVERR est une nouveauté de Linux 2.2.

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

       The kernel source file 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.

COLOPHON
       Cette page fait partie de la publication 5.10 du projet man-pages Linux.
       Une description du projet et des instructions pour signaler des anomalies
       et la dernière version de cette page peuvent être trouvées à l'adresse
       https://www.kernel.org/doc/man-pages/.


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 ⟨⟩.




Linux                             11 avril 2020                           UDP(7)