Man page - udp(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr es pl ja ru ro zh_TW zh_CNManual
udp
NOMSYNOPSIS
DESCRIPTION
Formats dâadresse
Traitement des erreurs
/proc interfaces
Options de socket
Ioctls
ERREURS
VERSIONS
VOIR AUSSI
TRADUCTION
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âun socket UDP est créé, 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 un 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, un socket doit ĂȘtre attachĂ© Ă 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 le 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 un 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Ă©.
Formats 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 le socket nâest pas connectĂ©. Ăa comprend les erreurs asynchrones reçues du rĂ©seau. Vous pouvez ainsi recevoir une erreur due Ă un paquet prĂ©cĂ©demment envoyĂ© sur le mĂȘme socket. Ce comportement diffĂšre de celui de nombreuses autres implĂ©mentations des sockets BSD, qui ne transmettent pas dâerreur si le socket nâest pas connectĂ©. 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 le socket a Ă©tĂ© connectĂ© (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 du socket et peuvent ĂȘtre lues avec recvmsg (2) en activant son option MSG_ERRQUEUE .
/proc interfaces
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 tous 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 tous 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 .
VoilĂ une
liste des options spécifiques à UDP. Pour des
détails sur certaines autres options de socket qui
sont aussi applicables sur les sockets UDP, voir
socket
(7).
UDP_CORK
(depuis Linux 2.5.44)
Si cette option est active, toutes les donnĂ©es en sortie sur ce 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.
UDP_SEGMENT (depuis Linux 4.18)
Enables UDP segmentation offload. Segmentation offload reduces send (2) cost by transferring multiple datagrams worth of data as a single large packet through the kernel transmit path, even when that exceeds MTU. As late as possible, the large packet is split by segment size into a series of datagrams. This segmentation offload step is deferred to hardware if supported, else performed in software. This option takes a value in the range [ 0 , USHRT_MAX ] that sets the segment size: the size of datagram payload, excluding the UDP header. The segment size must be chosen such that at most 64 datagrams are sent in a single call and that the datagrams after segmentation meet the same MTU rules that apply to datagrams sent without this option. Segmentation offload depends on checksum offload, as datagram checksums are computed after segmentation. The option may also be set for individual sendmsg (2) calls by passing it as a cmsg (3). A value of zero disables the feature. This option should not be used in code intended to be portable.
UDP_GRO (depuis Linux 5.0)
Enables UDP receive offload. If enabled, the socket may receive multiple datagrams worth of data as a single large buffer, together with a cmsg (3) that holds the segment size. This option is the inverse of segmentation offload. It reduces receive cost by handling multiple datagrams worth of data as a single large packet in the kernel receive path, even when that exceeds MTU. This option should not be used in code intended to be portable.
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 )
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 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 un socket UDP.
ECONNREFUSED
Aucun correspondant sur lâadresse destination associĂ©e au socket. Ăa peut ĂȘtre causĂ© par lâĂ©mission antĂ©rieure dâun paquet sur le socket.
VERSIONS
IP_RECVERR est une nouveauté de Linux 2.2.
VOIR AUSSI
ip (7), raw (7), socket (7), udplite (7)
Le fichier source du noyau 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.
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 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 .