TCP vs. UDP

Există două tipuri de trafic prin Internet Protocol (IP). Sunt TCP sau Protocol de control al transmisiei și UDP sau User Datagram Protocol. TCP este orientat spre conexiune - odată ce o conexiune este stabilită, datele pot fi trimise bidirecțional. UDP este un protocol Internet mai simplu și fără conexiune. Multe mesaje sunt trimise ca pachete în bucăți utilizând UDP.

Diagramă de comparație

TCP comparativ cu graficul de comparare UDP
TCPUDP
Acronim pentru Protocol de control al transmisiei User Datagram Protocol sau Universal Datagram Protocol
Conexiune TCP este un protocol orientat spre conexiune. UDP este un protocol fără conexiune.
Funcţie Ca un mesaj face drumul pe Internet de la un computer la altul. Aceasta este bazată pe conexiune. UDP este, de asemenea, un protocol utilizat în transportul sau transferul de mesaje. Aceasta nu este bazată pe conexiune, ceea ce înseamnă că un program poate trimite o încărcătură de pachete către altul și acesta ar fi sfârșitul relației.
folosire TCP este potrivit pentru aplicații care necesită fiabilitate ridicată, iar timpul de transmisie este relativ mai puțin critic. UDP este potrivit pentru aplicații care necesită transmisie rapidă și eficientă, cum ar fi jocuri. Natura apatridă a UDP este, de asemenea, utilă pentru serverele care răspund la întrebări mici de la un număr mare de clienți.
Utilizare prin alte protocoale HTTP, HTTP, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP.
Comandarea pachetelor de date TCP rearanjează pachetele de date în ordinea specificată. UDP nu are nici o ordine inerentă deoarece toate pachetele sunt independente unele de altele. Dacă este necesară comanda, aceasta trebuie gestionată de stratul de aplicație.
Viteza transferului Viteza pentru TCP este mai mică decât UDP. UDP este mai rapid, deoarece recuperarea erorilor nu este încercată. Este un protocol "cel mai bun efort".
Fiabilitate Există o garanție absolută că datele transferate rămân intacte și ajung în aceeași ordine în care au fost trimise. Nu există nicio garanție că mesajele sau pachetele trimise ar ajunge deloc.
Dimensiunea antetului Dimensiunea antetului TCP este de 20 de octeți Dimensiunea antetului UDP este de 8 octeți.
Câmpuri antet comune Portul sursă, Portul de destinație, Verificați Suma Portul sursă, Portul de destinație, Verificați Suma
Streaming de date Datele sunt citite ca un flux de octeți, nu sunt transmise indicații distinctive la limitele mesajului semnal (segment). Pachetele sunt trimise individual și sunt verificate pentru integritate numai dacă sosesc. Pachetele au granițe definite care sunt onorate la primire, ceea ce înseamnă că o operație de citire de la priza receptorului va da un mesaj întreg așa cum a fost inițial trimis.
Greutate TCP este greu. TCP necesită trei pachete pentru a configura o conexiune socket, înainte ca orice date de utilizator să poată fi trimise. TCP se ocupă de fiabilitatea și controlul congestiei. UDP este ușor. Nu există o comandă a mesajelor, nu există conexiuni de urmărire etc. Este un strat mic de transport conceput pe partea de sus a IP-ului.
Controlul fluxului datelor TCP nu controlează fluxul. TCP necesită trei pachete pentru a configura o conexiune socket, înainte ca orice date de utilizator să poată fi trimise. TCP se ocupă de fiabilitatea și controlul congestiei. UDP nu are opțiune pentru controlul fluxului
Eroare de verificare TCP efectuează verificarea erorilor și recuperarea erorilor. Pachetele eronate sunt retransmise de la sursă la destinație. UDP efectuează verificarea erorilor, dar elimină pur și simplu pachetele eronate. Recuperarea erorii nu este încercată.
Câmpuri 1. Număr de secvență, 2. Număr AcK, 3. Offset de date, 4. Rezervat, 5. Bit de control, 6. Fereastră, 7. Urgent Pointer 8. Opțiuni, 9. Padding, 10. Check Sum, 11. Port sursă, 12. Portul de destinație 1. Lungime, 2. Port sursă, 3. Port destinație, 4. Verificare sumă
Confirmare Segmente de recunoaștere Nici o confirmare
Strângere de mână SYN, SYN-ACK, ACK Nicio strângere de mână (protocol fără conexiune)

Cuprins: TCP vs UDP

  • 1 Diferențe în caracteristicile transferului de date
    • 1.1 Fiabilitatea
    • 1.2 Ordonarea
    • 1.3 Conexiune
    • 1.4 Metodă de transfer
    • 1.5 Detectarea erorilor
  • 2 Cum funcționează TCP și UDP
  • 3 Aplicații diferite de TCP și UDP
    • 3.1 TCP vs. UDP pentru serverele de jocuri
  • 4 Referințe

Diferențe în caracteristicile transferului de date

TCP asigură o livrare fiabilă și ordonată a unui flux de octeți de la utilizator la server sau invers. UDP nu este dedicat conexiunilor la capăt și comunicarea nu verifică disponibilitatea receptorului.

Fiabilitate

TCP este mai fiabilă deoarece gestionează confirmarea mesajului și retransmiterea în cazul pieselor pierdute. Astfel, nu există absolut nici un fel de date lipsă. UDP nu asigură că comunicarea a ajuns la receptor, din moment ce conceptele de recunoaștere, expirare și retransmisie nu sunt prezente.

ordonare

TCP transmisiile sunt trimise într-o secvență și sunt primite în aceeași ordine. În cazul în care segmentele de date sosesc în ordine greșită, TCP rearanjează și furnizează aplicații. În cazul în care UDP, secvența de mesaje trimisă nu poate fi menținută atunci când ajunge la primirea aplicației. Nu există absolut nici o modalitate de a prevedea ordinea în care mesajul va fi recepționat.

Conexiune

TCP este o conexiune greu de greutate care necesită trei pachete pentru o conexiune soclu și se ocupă de controlul congestiei și fiabilitatea. UDP este un strat ușor de transport conceput pe o bază IP. Nu există conexiuni de urmărire sau ordine de mesaje.

Metodă de transfer

TCP citește datele ca un flux de octeți și mesajul este transmis la limitele segmentului. UDP mesajele sunt pachete care sunt trimise individual și la sosire sunt verificate pentru integritatea lor. Pachetele au definit limite în timp ce fluxul de date nu are niciun element.

Eroare detectata

UDP funcționează pe baza unui "cel mai bun efort". Protocolul acceptă detectarea erorilor prin suma de control, dar când se detectează o eroare, pachetul este eliminat. Retransmiterea pachetului pentru recuperare de la această eroare nu este încercată. Acest lucru se datorează faptului că UDP este, de obicei, pentru aplicații sensibile la timp, cum ar fi jocuri sau transmisiuni vocale. Recuperarea de la eroare ar fi inutilă, deoarece în momentul primirii pachetului retransmis, nu va fi deloc util.

TCP utilizează atât detectarea erorilor, cât și recuperarea erorilor. Erori sunt detectate prin suma de control și dacă un pachet este eronat, acesta nu este recunoscut de către receptor, care declanșează o retransmisie de către expeditor. Acest mecanism de operare se numește confirmare pozitivă cu retransmisie (PAR).

Cum funcționează TCP și UDP

O conexiune TCP este stabilită printr-o strângere de mână în trei direcții, care este un proces de inițiere și recunoaștere a unei conexiuni. Odată ce conexiunea este stabilită, transferul de date poate începe. După transmitere, conexiunea este terminată prin închiderea tuturor circuitelor virtuale stabilite.

UDP utilizează un model simplu de transmisie fără dialoguri implicite de agitare a mâinilor pentru a garanta fiabilitatea, comanda sau integritatea datelor. Astfel, UDP furnizează un serviciu fiabil, iar datagramurile pot ieși din ordine, apar duplicate sau lipsesc fără notificare. UDP presupune că verificarea și corectarea erorilor fie nu sunt necesare, fie sunt efectuate în aplicație, evitându-se astfel cheltuielile aferente unei astfel de procesări la nivelul interfeței de rețea. Spre deosebire de TCP, UDP este compatibil cu transmisiile de pachete (trimiterea către toate rețelele locale) și multicasting (trimiteți tuturor abonaților).

Diferite aplicații de TCP și UDP

Navigarea pe Internet, e-mailul și transferul de fișiere sunt aplicații comune care utilizează TCP. TCP este utilizat pentru a controla dimensiunea segmentului, rata schimbului de date, controlul fluxului și congestia rețelei. TCP este preferat în cazul în care sunt necesare facilități de corectare a erorilor la nivelul interfeței de rețea. UDP este utilizat în mare măsură de aplicațiile sensibile la timp, precum și de serverele care răspund unor interogări mici de la un număr mare de clienți. UDP este compatibil cu difuzarea de pachete - trimiterea către toți a unei rețele și transmiterea multicastului - trimiterea către toți abonații. UDP este frecvent utilizat în Domain Name System, Voice over IP, Trivial File Transfer Protocol și jocuri online.

TCP vs. UDP pentru serverele de jocuri

Pentru jocurile masive multiplayer online (MMO), dezvoltatorii trebuie adesea să facă o alegere arhitecturală între utilizarea conexiunilor persistente UDP sau TCP. Avantajele TCP sunt conexiuni persistente, fiabilitate și posibilitatea de a utiliza pachete de dimensiuni arbitrare. Cea mai mare problemă cu TCP în acest scenariu este algoritmul său de control al congestiei, care tratează pierderea de pachete ca semn de limitare a lățimii de bandă și dăunează automat trimiterea de pachete. Pe rețelele 3G sau Wi-Fi, aceasta poate cauza o latență semnificativă.

Dezvoltatorul experimentat Christoffer Lernö a cântărit argumentele pro și contra și recomandă următoarele criterii pentru a alege dacă să folosești TCP sau UDP pentru jocul tău:

  • Utilizați HTTP peste TCP pentru a face interogări apatride ocazionale, inițiate de client, atunci când este OK să aveți o întârziere ocazională.
  • Utilizați socketuri TCP persistente simple dacă clientul și serverul trimit în mod independent pachete, dar o întârziere ocazională este OK (de exemplu, Online Poker, multe MMO-uri).
  • Utilizați UDP dacă atât clientul, cât și serverul pot trimite în mod independent pachete, iar decalajul ocazional nu este OK (de exemplu, majoritatea jocurilor de acțiune multiplayer, unele MMO-uri).

Referințe

  • Wikipedia: Protocolul de control al transmisiei
  • Wikipedia: Protocolul de utilizator Datagram
  • UDP vs TCP pentru serverele de jocuri
  • Protocolul de control al transmisiei