Provided by: manpages-ro_4.27.0-1_all bug

NUME

       udp - protocolul de datagramă-utilizator pentru IPv4

SINOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/udp.h>

       udp_socket = socket(AF_INET, SOCK_DGRAM, 0);

DESCRIERE

       Aceasta  este  o  implementare  a  protocolului  de  dategramă  de utilizator descris în RFC 768.  Acesta
       implementează un serviciu de pachete de date fără conexiune, nesigur. Pachetele  pot  fi  reordonate  sau
       duplicate înainte de a ajunge la destinație. UDP generează și verifică sumele de control pentru a detecta
       erorile de transmisie.

       Atunci când se creează un soclu UDP, adresele sale locale și la distanță nu sunt specificate. Datagramele
       pot  fi  trimise  imediat folosind sendto(2) sau sendmsg(2) cu o adresă de destinație validă ca argument.
       Atunci când connect(2)  este  apelat  pe  soclu,  adresa  de  destinație  implicită  este  definită,  iar
       datagramele  pot  fi acum trimise utilizând send(2) sau write(2) fără a specifica o adresă de destinație.
       Este în continuare posibilă  trimiterea  către  alte  destinații  prin  transmiterea  unei  adrese  către
       sendto(2)  sau  sendmsg(2).  Pentru  a  primi pachete, soclul poate fi legat mai întâi la o adresă locală
       utilizând bind(2).  În caz contrar, stratul  de  soclu  va  atribui  automat  un  port  local  liber  din
       intervalul definit de /proc/sys/net/ipv4/ip_local_port_range și va lega soclul la INADDR_ANY.

       Toate  operațiile  de  recepție  returnează  un  singur  pachet.  Atunci când pachetul este mai mic decât
       tamponul transmis, se returnează doar acea cantitate de date; atunci când este mai  mare,  pachetul  este
       trunchiat și se activează fanionul MSG_TRUNC. MSG_WAITALL nu este acceptat.

       Opțiunile  IP  pot  fi  trimise  sau primite utilizând opțiunile de soclu descrise în ip(7). Acestea sunt
       prelucrate de nucleu numai atunci când parametrul /proc corespunzător este activat  (dar  sunt  transmise
       utilizatorului chiar și atunci când acesta este dezactivat). A se vedea ip(7).

       Atunci  când  fanionul MSG_DONTROUTE este activat la trimitere, adresa de destinație trebuie să se refere
       la adresa unei interfețe locale, iar pachetul este trimis numai către acea interfață.

       În mod implicit, Linux UDP face descoperirea traseului MTU (Maximum Transmission Unit). Aceasta  înseamnă
       că  nucleul  va  ține  evidența  MTU  către  o anumită adresă IP țintă și va returna EMSGSIZE atunci când
       scrierea unui pachet UDP îl depășește. Atunci când se întâmplă acest lucru, aplicația ar trebui să reducă
       dimensiunea pachetului. Descoperirea MTU a rutei poate fi, de asemenea, dezactivată utilizând opțiunea de
       soclu IP_MTU_DISCOVER sau fișierul /proc/sys/net/ipv4/ip_no_pmtu_disc; consultați ip(7)  pentru  detalii.
       Atunci  când  este  dezactivat, UDP va fragmenta pachetele UDP ieșite care depășesc MTU-ul interfeței. Cu
       toate acestea, dezactivarea nu este recomandată din motive de performanță și fiabilitate.

   Formatul adreselor
       UDP utilizează formatul de adresă IPv4 sockaddr_in descris în ip(7).

   Gestionarea erorilor
       Toate erorile fatale vor fi transmise utilizatorului ca răspuns la eroare, chiar și atunci când soclul nu
       este conectat.  Aceasta include erorile asincrone primite din rețea. Puteți  primi  o  eroare  pentru  un
       pachet  anterior  care  a  fost  trimis  pe  același  soclu.   Acest  comportament  diferă  de multe alte
       implementări de soclu BSD care nu transmit nicio eroare decât dacă soclul este  conectat.  Comportamentul
       Linux este impus de RFC 1122.

       Pentru  compatibilitate  cu  codul  vechi,  în  Linux  2.0  și  2.2  a  fost  posibilă definirea opțiunii
       SO_BSDCOMPAT SOL_SOCKET pentru a primi erori la distanță numai atunci când soclul  a  fost  conectat  (cu
       excepția EPROTO și EMSGSIZE). Erorile generate la nivel local sunt întotdeauna transmise. Suportul pentru
       această  opțiune  de soclu a fost eliminat în nucleele ulterioare; consultați socket(7) pentru informații
       suplimentare.

       Atunci când opțiunea IP_RECVERR este activată, toate erorile sunt stocate în coada de erori a soclului și
       pot fi primite de recvmsg(2) cu fanionul MSG_ERRQUEUE activat.

   Interfețe /proc
       Reglajele parametrilor UDP la nivelul întregului sistem pot  fi  accesate  de  fișierele  din  directorul
       /proc/sys/net/ipv4/.

       udp_mem (începând cu Linux 2.6.25)
              Acesta  este  un  vector  format din trei numere întregi care guvernează numărul de pagini permise
              pentru coada de așteptare de către toate soclurile UDP.

              min    Sub acest număr de pagini, UDP nu este preocupat de apetitul  său  pentru  memorie.  Atunci
                     când  cantitatea  de  memorie  alocată de UDP depășește acest număr, UDP începe să modereze
                     utilizarea memoriei.

              pressure
                     Această valoare a fost introdusă pentru a respecta formatul tcp_mem (a se vedea tcp(7)).

              max    Numărul de pagini admise în coada de așteptare de către toate soclurile UDP.

              Valorile implicite pentru aceste trei elemente sunt calculate la pornire din cantitatea de memorie
              disponibilă.

       udp_rmem_min (număr întreg; valoare implicită: PAGE_SIZE; începând cu Linux 2.6.25)
              Dimensiunea minimă, în octeți, a tampoanelor  de  recepție  utilizate  de  soclurile  UDP  în  mod
              moderat.  Fiecare  soclu  UDP este capabil să utilizeze dimensiunea pentru primirea datelor, chiar
              dacă paginile totale ale soclurilor UDP depășesc pragul udp_mem.

       udp_wmem_min (număr întreg; valoare implicită: PAGE_SIZE; începând cu Linux 2.6.25)
              Dimensiunea minimă, în octeți, a tamponului de trimitere utilizat de soclurile UDP în mod moderat.
              Fiecare soclu UDP este capabil să utilizeze dimensiunea pentru  trimiterea  de  date,  chiar  dacă
              numărul total de pagini ale soclurilor UDP depășește pragul udp_mem.

   Opțiuni de soclu
       Pentru  a  defini  sau  a  obține  o  opțiune  de  soclu  UDP,  apelați  getsockopt(2)  pentru a citi sau
       setsockopt(2) pentru a scrie opțiunea cu argumentul de nivel al opțiunii stabilit la IPPROTO_UDP. Dacă nu
       se specifică altfel, optval este un indicator către un int.

       În continuare este prezentată o listă a opțiunilor de soclu specifice UDP.  Pentru  detalii  despre  alte
       opțiuni de soclu care sunt de asemenea aplicabile soclurilor UDP, consultați socket(7).

       UDP_CORK (începând cu Linux 2.5.44)
              Dacă  această  opțiune  este activată, atunci toate datele transmise pe acest soclu sunt acumulate
              într-o singură datagramă care este  transmisă  atunci  când  opțiunea  este  dezactivată.  Această
              opțiune nu ar trebui utilizată în codul destinat să fie portabil.

       UDP_SEGMENT (începând cu Linux 4.18)
              Activează  descărcarea  de  segmentare  UDP.  Descărcarea de segmentare reduce costul send(2) prin
              transferul mai multor datagrame de date sub forma unui singur pachet mare prin ruta de  transmisie
              a  nucleului,  chiar  și  atunci când aceasta depășește MTU. Cât mai târziu posibil, pachetul mare
              este împărțit în funcție de dimensiunea segmentului într-o serie de datagrame.  Această  etapă  de
              descărcare  a  segmentării  este  amânată  la  hardware  dacă este acceptată, în caz contrar fiind
              efectuată în software. Această opțiune ia o valoare în intervalul [0, USHRT_MAX]  care  stabilește
              dimensiunea  segmentului:  dimensiunea  sarcinii  utile  a  datagramelor,  excluzând  antetul UDP.
              Dimensiunea segmentului trebuie aleasă astfel încât cel  mult  64  de  datagrame  să  fie  trimise
              într-un  singur  apel  și  ca  datagramele după segmentare să respecte aceleași reguli MTU care se
              aplică datagramelor trimise fără această opțiune. Descărcarea segmentării depinde  de  descărcarea
              sumelor  de  control,  deoarece sumele de control ale datagramelor sunt calculate după segmentare.
              Opțiunea poate fi, de asemenea, definită pentru apelurile individuale sendmsg(2) prin transmiterea
              acesteia ca cmsg(3).  O valoare de zero dezactivează caracteristica. Această opțiune nu ar  trebui
              utilizată în codul destinat să fie portabil.

       UDP_GRO (începând cu Linux 5.0)
              Activează descărcarea recepției UDP. Dacă este activată, soclul poate primi mai multe datagrame de
              date  ca  un  singur  tampon  mare,  împreună  cu un cmsg(3) care conține dimensiunea segmentului.
              Această opțiune este inversă descărcării de segmentare. Aceasta reduce costurile de recepție  prin
              gestionarea mai multor datagrame de date ca un singur pachet mare în ruta de recepție a nucleului,
              chiar  și  atunci  când  aceasta  depășește  MTU.  Această opțiune nu ar trebui utilizată în codul
              destinat să fie portabil.

   Ioctl-uri
       Aceste ioctl-uri pot fi accesate folosind ioctl(2). Sintaxa corectă este:

              int value;
              error = ioctl(udp_socket, ioctl_type, &value);

       FIONREAD (SIOCINQ)
              Obține un indicator la un număr întreg ca argument. Returnează dimensiunea următoarei datagrame în
              așteptare în număr întreg, în octeți, sau 0 atunci când nu există nicio  datagramă  în  așteptare.
              Avertisment:  Utilizând  FIONREAD,  este  imposibil  să  se distingă cazul în care nu există nicio
              datagramă în așteptare de cazul în care următoarea datagramă în așteptare conține zero  octeți  de
              date. Este mai sigur să utilizați select(2), poll(2) sau epoll(7) pentru a distinge aceste cazuri.

       TIOCOUTQ (SIOCOUTQ)
              Returnează  numărul de octeți de date din coada de expediere locală. Compatibil numai cu Linux 2.4
              și versiunile ulterioare.

       În plus, sunt acceptate toate ioctl-urile documentate în ip(7) și socket(7).

ERORI-IEȘIRE

       Toate erorile documentate pentru socket(7) sau ip(7) pot fi returnate de o trimitere sau o primire pe  un
       soclu UDP.

       ECONNREFUSED
              Niciun  receptor  nu a fost asociat cu adresa de destinație.  Acest lucru ar putea fi cauzat de un
              pachet anterior trimis prin soclu.

VERSIUNI

       IP_RECVERR a apărut ca o caracteristică nouă în Linux 2.2.

CONSULTAȚI ȘI

       ip(7), raw(7), socket(7), udplite(7)

       Fișierul sursă al nucleului Documentation/networking/ip-sysctl.txt.

       RFC 768 pentru Protocolul Datagramă Utilizator- UDP.
       RFC 1122 pentru cerințele privind gazdele.
       RFC 1191 pentru o descriere a descoperirii MTU a rutei.

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                             udp(7)