UDP
Section: Manuel de l'administrateur Linux (7) Updated: 25 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
FORMAT D'ADRESSE
GESTION D'ERREUR
IOCTLS
ERREURS
VERSIONS
CREDITS
VOIR AUSSI
TRADUCTION
NOM
udp - Protocole UDP pour IPv4
SYNOPSIS
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ées 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 renvoie 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_PMTU_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é.
Les comportement de Linux correspond à 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é 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é de l'hôte.
RFC 1191 pour une description de la recherche du MTU par chemin.
TRADUCTION
Christophe Blaess, 2001-2003.
|