Date création : 30-03-2008 14:17:03
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section7 - Divers]
UDP
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- FORMAT D'ADRESSE
- GESTION D'ERREUR
- OPTIONS DES SOCKETS
- IOCTLS
- ERREURS
- VERSIONS
- AUTEUR
- VOIR AUSSI
- TRADUCTION
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-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
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 un
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 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 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. Le comportement
de Linux correspond à la RFC 1122.
Pour assurer la compatibilité 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 é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 ; voir
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.
OPTIONS DES SOCKETS
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.
- 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
conçus pour ê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.
- 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
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.
AUTEUR
Cette page de manuel a été écrite par Andi Kleen.
VOIR AUSSI
ip(7), raw(7), socket(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 du chemin.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|