Provided by:
manpages-fr_3.32d0.2p4-1_all 
NOM
udp - Protocole UDP pour IPv4
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
DESCRIPTION
Il s'agit d'une implementation de l'User Datagram Protocol decrit dans
la RFC 768. Elle implemente un service de paquets datagrammes
non-fiable, sans connexion. Les paquets peuvent etre reordonnes ou
dupliques avant leur arrivee. UDP cree et verifie des sommes de
controle pour detecter les erreurs de transmission.
Lorsqu'une socket UDP est creee, ses adresses locales et distantes sont
indeterminees. Les datagrammes peuvent etre envoyes immediatement en
utilisant sendto(2) ou sendmsg(2) avec une adresse de destination
valide en argument. Lorsque connect(2) est appele sur une socket,
l'adresse de destination par defaut est fixee, et les datagrammes
pourront etre envoyes avec send(2) ou write(2) sans specifier d'adresse
de destination. Il restera possible d'envoyer des donnees a d'autres
destinations en passant l'adresse a sendto(2) ou sendmsg(2). Afin de
recevoir les paquets, une socket doit etre attachee a une adresse
locale en utilisant bind(2). Sinon la couche socket affectera
automatiquement un port local libre, hors de l'intervalle defini par
/proc/sys/net/ipv4/ip_local_port_range et attacher la socket a
l'adresse INADDR_ANY.
Les operations de reception ne renvoient qu'un seul paquet a la fois.
Si le paquet est plus petit que le tampon transmis, il n'y aura pas
plus de donnees renvoyees. S'il est plus grand, le paquet sera tronque
et le drapeau MSG_TRUNC sera active. MSG_WAITALL n'est pas pris en
charge.
Les options IP peuvent etre fixees ou lues en utilisant les options des
sockets decrites dans ip(7). Elles ne sont traitees par le noyau que
lorsque le parametre /proc approprie est active (mais sont quand meme
fournies a l'utilisateur quant il est inhibe). Consultez ip(7).
Quand l'attribut MSG_DONTROUTE est actif a l'emission, l'adresse de
destination doit representer une adresse d'interface locale, et le
paquet n'est envoye qu'a cette interface.
Par defaut, l'UDP sous Linux utilise la detection de MTU (<< Maximum
Transmission Unit >>) par chemin. Cela signifie que le noyau garde en
memoire le MTU vers une adresse IP particuliere, et renvoie EMSGSIZE
lorsqu'une ecriture sur une socket UDP depasse cette taille. Dans ce
cas, l'application doit reduire la taille du paquet. La detection de
MTU par chemin peut etre desactivee 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 details. Lorsque cette option est
desactivee, UDP fragmente les paquets sortants dont la taille depasse
le MTU de l'interface. Ceci est cependant decourage, pour des raisons
de performance et de fiabilite.
Format d'adresse
UDP utilise le format d'adresse IPv4 sockaddr_in comme indique dans
ip(7).
Traitement des erreurs
Toutes les erreurs fatales seront transmises a l'utilisateur comme un
retour d'erreur meme lorsque la socket n'est pas connectee. Ceci inclut
les erreurs asynchrones recues du reseau. Vous pouvez ainsi recevoir
une erreur due a un paquet precedemment envoye sur la meme socket. Ce
comportement differe de celui de nombreuses autres implementations des
sockets BSD, qui ne transmettent pas d'erreur si la socket n'est pas
connectee. Le comportement de Linux correspond a la RFC 1122.
Pour assurer la compatibilite avec du code ancien, on pouvait sous
Linux 2.0 et 2.2 fixer l'option SOL_SOCKET SO_BSDCOMPAT pour ne
recevoir les erreurs distantes que si la socket a ete connectee (sauf
pour EPROTO et EMSGSIZE). Les erreurs locales sont toujours transmises.
La gestion de cette option a ete supprimee dans les noyaux plus
recents ; consultez socket(7) pour plus d'informations.
Lorsque l'option IP_RECVERR est active, toutes les erreurs sont
stockees dans la file d'erreur de la socket et peuvent etre lues avec
recvmsg(2) en activant son option MSG_ERRQUEUE.
Interfaces /proc
La configuration des parametres systeme pour UDP sont accessible par
les fichiers du repertoire /proc/sys/net/ipv4/.
udp_mem (depuis Linux 2.6.25)
C'est un vecteur de trois entiers qui controle le nombre de
pages permises pour la queue de toutes les sockets UDP.
min En dessous de ce nombre de pages, UDP ne se soucie pas
de son appetit en memoire. Quand la quantite de
memoire allouee par UDP depasse cette valeur, UDP
commence a limiter son utilisation memoire.
pressure Cette valeur a ete introduite pour suivre le format de
tcp_mem (voir tcp(7)).
max Nombre de pages permises pour la queue de toutes les
sockets UDP.
Les valeurs par defaut pour ces trois elements sont calculees au
demarrage a partir de la quantite de memoire disponible.
udp_rmem_min (entier ; PAGE_SIZE par defaut ; depuis Linux 2.6.25)
Taille minimale, en octets, des tampons de reception utilises
par les sockets UDP dans le mode de moderation. Chaque socket
UDP peut utiliser cette taille pour recevoir des donnees, meme
si le nombre total de pages pour les sockets UDP depasse le
seuil udp_mem.
udp_wmem_min (entier ; PAGE_SIZE par defaut ; depuis Linux 2.6.25)
Taille minimale, en octets, du tampon d'emission utilise par les
sockets UDP dans le mode de moderation. Chaque socket UDP peut
utiliser cette taille pour envoyer des donnees, meme si le
nombre total de pages pour les sockets UDP depasse le seuil
udp_mem.
Options de sockets
Pour lire ou ecrire une option de socket UDP, appeler getsockopt(2)
pour la lecture ou setsockopt(2) pour l'ecriture, avec l'argument de
niveau d'option valant IPPROTO_UDP.
UDP_CORK (depuis Linux 2.5.44)
Si cette option est active, toutes les donnees en sortie sur
cette socket sont accumulees dans un unique datagramme qui est
emis des que l'option est desactivee. Cette option ne doit pas
etre utilisee dans des programmes destines a etre portables.
Ioctls
Ces ioctls sont accessibles a travers l'appel systeme 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 ecrit 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 ou aucun datagramme n'est
en attente du cas ou le prochain datagramme en attente contient
0 octet de donnees. Il est preferable d'utiliser select(2),
poll(2), ou epoll(7) pour differencier ces cas.
TIOCOUTQ (SIOCOUTQ)
Renvoie le nombre d'octets de donnees dans la file d'emission
locale. Seulement sur Linux 2.4 et ulterieurs.
De plus, les ioctls documentes dans ip(7) et socket(7) sont pris en
charge.
ERREURS
Toutes les erreurs documentees pour socket(7) ou ip(7) peuvent etre
renvoyees lors d'une emission ou d'une reception sur une socket UDP.
ECONNREFUSED
Aucun correspondant sur l'adresse destination associee a la
socket. Ceci peut etre cause par l'emission anterieure d'un
paquet sur la socket.
VERSIONS
IP_RECVERR est une nouveaute de Linux 2.2.
VOIR AUSSI
ip(7), raw(7), socket(7), udplite(7)
RFC 768 pour le protocole UDP.
RFC 1122 pour les necessites de l'hote.
RFC 1191 pour une description de la recherche du MTU du chemin.
COLOPHON
Cette page fait partie de la publication 3.32 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.