Provided by:
manpages-fr_1.67.0-1_all 
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 Dâ€â€™ADRESSE
UDP utilise le format d’adresse IPv4 sockaddr_in comme indiqué dans
ip(7).
GESTION Dâ€â€™ERREUR
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.