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.
TCP | UDP | |
---|---|---|
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) |
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.
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.
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.
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.
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.
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).
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).
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.
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: