Ce sunt TCP și UDP? O Explicație Simplă - TechRobot

Ce sunt TCP și UDP? O Explicație Simplă

Internetul se bazează pe două protocoale pentru schimbul de informații între computere. Aceste protocoale de comunicare definesc regulile care determină modul în care are loc transferul de date între oricare două entități implicate, fie că este vorba de o conexiune unu-la-unu sau unu-la-mai mulți. Protocolul de Control al Transmisiei (TCP) și Protocolul Datagramelor Utilizatorului (UDP) sunt două protocoale pe care le poți folosi pentru a muta datele prin rețele. Ambele funcționează la stratul de transport al modelului OSI.

Similare și totuși diferite, aceste două protocoale își fac treaba eficient. În timp ce unul este orientat spre conexiune și necesită stabilirea unei conexiuni înainte de a începe transferul de date, celălalt este fără conexiune și trimite date fără a informa mai întâi dispozitivul destinație. Există mai multe despre ceea ce fac aceste protocoale, după cum veți descoperi mai jos. Acest articol se concentrează pe TCP și UDP — cum funcționează, avantajele, dezavantajele și diferențele lor. 

Ce este TCP?

Transmission Control Protocol este un protocol de comunicare care se ocupă în principal cu transferul de pachete de date pe internet. Funcționează la nivelul de transport (stratul 4) al modelului de Interconectare a Sistemelor Deschise (OSI). Acest protocol ajută la transferul de pachete de date între un dispozitiv/aplicație client și un server (împreună cu UDP). 

TCP este orientat pe conexiune, ceea ce înseamnă că clientul și serverul trebuie să stabilească o conexiune înainte de a trimite date în orice direcție. În plus, este un protocol fiabil deoarece verifică erorile și asigură că pachetele de date ajung la destinație în ordinea în care dispozitivul sau aplicația emitentă a intenționat.

Cum Funcționează TCP?

Când se folosește TCP, un client și un server stabilesc o conexiune folosind ceea ce este cunoscut ca strângerea de mână în trei pași înainte ca transferul bidirecțional de pachete de date să înceapă. Înainte ca strângerea de mână în trei pași să înceapă, serverul trebuie să fie în ascultare la un port pentru a accepta conexiunea. Strângerea de mână începe cu schimbul a trei mesaje (sau steaguri) cunoscute ca SYN, SYN/ACK și ACK între client și server.

Să aruncăm o privire la procesul pas cu pas al schimbului de mai jos. 

Clientul trimite un pachet de date SYN către server. Pachetul SYN conține un număr de secvență aleatoriu (X) pe care clientul îl atribuie. Scopul acestui pachet este de a vedea dacă serverul este disponibil pentru o nouă conexiune. 

2. Serverul primește pachetul SYN și îl recunoaște trimițând un pachet SYN/ACK. Serverul setează numărul de recunoaștere la unu plus numărul de secvență (1+X) pe care clientul l-a atribuit pachetului SYN inițial și stabilește un alt număr de secvență aleatoriu (Y). Astfel, serverul trimite două numere de secvență împreună cu pachetul său SYN/ACK către client.

3. Clientul primește pachetul SYN/ACK de la server și îl recunoaște trimițând un pachet ACK. Clientul setează numărul de recunoaștere la unu plus numărul de secvență (1+Y) pe care l-a primit de la server.

Odată ce procesul de handshake în trei pași este complet, clientul și serverul pot trimite și primi date unul de la celălalt. 

Avantaje și Dezavantaje ale TCP

Ca și majoritatea protocoalelor, TCP nu este perfect; are avantajele și dezavantajele sale. Să aruncăm o privire la avantajele și dezavantajele utilizării TCP mai jos. 

Avantaje

1. De încredere

TCP este de încredere pentru că asigură că pachetele de date ajung la destinație în ordinea corectă. Când TCP transmite un segment de date, rulează un temporizator și așteaptă o confirmare de la destinație. Va retrimite segmentul dacă nu primește nicio confirmare. În plus, folosește secvențierea pentru a ști când pachetele de date ajung într-o ordine greșită.

2. Detectarea și recuperarea erorilor

TCP folosește un checksum de la un capăt la altul pentru a verifica dacă există modificări în pachete pe măsură ce acestea ajung la destinație. Acesta descartă pachetele cu erori și așteaptă ca expeditorul să le retransmită. În plus, descartă și duplicatele de date. 

3. Controlul Congestiei

TCP folosește buffering și windowing pentru a gestiona congestia. Congestia poate apărea când capătul receptor al conexiunii TCP primește mai multe pachete de date decât poate prelucra la un moment dat. TCP folosește buffere pentru a gestiona congestia, dar când bufferele devin pline, utilizează windowing pentru a reduce cantitatea de date pe care expeditorul le poate trimite la un moment dat.

Dezavantaje

1. Viteză Lentă

Comparativ cu UDP, TCP este lent. În primul rând, necesarul handshake de trei pași durează timp. Apoi, există reducerea vitezei pe care controlul fluxului, controlul congestiei și verificarea erorilor o provoacă în timpul transferului de date. În astfel de cazuri, TCP sacrifică viteza pentru fiabilitate. 

2. Vulnerabil la atacuri DoS

Cele trei etape ale handshake-ului TCP îl fac vulnerabil la atacuri de tip DoS sau atacuri DDoS. Un astfel de atac este SYN flood, unde o entitate rău intenționată face un server indisponibil prin inundarea acestuia cu pachete SYN. Scopul acestui atac este de a supraîncărca serverul, împiedicându-l să răspundă la cererile legitime. 

Ce este UDP?

User Datagram Protocol (UDP) este un protocol de comunicare asemănător cu TCP care operează la nivelul stratului de transport al modelului OSI. Spre deosebire de TCP, este un protocol fără conexiune, ceea ce înseamnă că un client nu trebuie să stabilească o conexiune cu serverul înainte de a transmite pachete de date. Ca rezultat, nu există handshake în trei pași, control al fluxului și secvențiere.

UDP nu își face griji dacă datagramele trimise ajung la destinație sau dacă acestea ajung în ordinea în care clientul le-a trimis. Acest lucru îl face mai puțin fiabil decât TCP, dar mai rapid, deoarece nu trebuie să aștepte confirmări sau să retransmită date. Totuși, UDP se preocupă de integritatea datelor și folosește un checksum pentru a confirma că o terță parte nu a alterat datagramele. 

Cum Funcționează UDP?

Cu UDP, mișcarea datagramelelor de la originea lor către destinație este un proces ușor. După ce își adaugă antetul la pachetele IP pe care le primește de la stratul de rețea, trimite datagramele direct către serverul destinație fără a fi nevoie să stabilească mai întâi o conexiune. Este natura simplă a acestui proces care face din UDP un protocol fără conexiune. 

În plus, UDP este ideal pentru comunicațiile sensibile la timp, unde pierderea datelor în tranzit este acceptabilă. De exemplu, comunicațiile vocale și video utilizează UDP.

Avantaje și Dezavantaje ale UDP

Lipsa controlului fluxului și a retransmisiei datelor în UDP reprezintă atât un avantaj, cât și un dezavantaj. Mai jos, examinăm avantajele și dezavantajele utilizării UDP. 

Avantaje

1. Transmisie rapidă a datelor

Deoarece UDP nu trebuie să confirme datagramele înainte ca computerul destinație să poată primi mai multe și nu retransmite date, este mai rapid decât TCP. În plus, absența unui handshake în trei pași duce la un overhead mai mic și la transmisii de date mai rapide. 

2. Detectarea Erorilor

La fel ca TCP, UDP folosește un checksum de la capăt la capăt pentru a detecta dacă datagramele au erori. Făcând acest lucru, menține integritatea datelor și renunță la datagramele cu erori. Deoarece nu există un mecanism de retransmisie, UDP nu recuperează sau retrimite datagramele pe care le renunță. 

Dezavantaje

1. Nefiabil

Caracteristicile care fac o conexiune de încredere lipsesc din conexiunile UDP. Spre deosebire de TCP, UDP nu garantează că datagramele trimise vor ajunge la destinație. Ca urmare, datagramele nu au un temporizator sau trebuie să fie recunoscute de dispozitivul care le primește. În plus, nu există nicio asigurare că datagramele vor ajunge la destinația lor în ordinea corectă. 

2. Fără control al congestiei

UDP nu are un mecanism pentru controlul congestiei. Deoarece nu recunoaște datagramele sau nu folosește fereastra pentru a controla transmiterea datelor, nu există o modalitate de a preveni congestia. Ca rezultat, exploziile mari de date pot duce la congestii. 

Diferențele dintre TCP și UDP

Mai jos, vom analiza diferențele dintre TCP orientat pe conexiune și UDP fără conexiune.

1. Fiabilitate

TCP este un protocol mai fiabil comparativ cu UDP. TCP va confirma că un segment de date a ajuns la destinație înainte de a trimite un altul. Mai mult, va asigura că segmentele sosesc în aceeași secvență în care au fost trimise și va retransmite datele care nu ajung la destinație. În plus, TCP utilizează controlul fluxului pentru a se asigura că clientul nu trimite pachete mai repede decât poate procesa serverul. Pe de altă parte, UDP nu face niciuna dintre cele de mai sus și îi pasă mai mult de transferul datelor cât se poate de rapid.  

2. Viteză

Caracteristicile TCP care îl fac fiabil îl fac mai lent decât TCP. Handshake-ul în trei pași, controlul fluxului, controlul congestiei și mecanismul de retransmisie nu fac parte din UDP. Ca urmare, cu mai puțin overhead, UDP este mai rapid decât TCP. 

3. Utilizare

Transferul de date orientat pe conexiune al TCP îl face potrivit pentru aplicații care necesită fiabilitate și nu pot accepta pierderea de date. De exemplu, acesta suportă protocoale precum HTTP, SSH, FTP, SMTP și IMAP. Pe de altă parte, viteza UDP îl face potrivit pentru aplicații sau protocoale sensibile la timp care pot accepta pierderea de date, cum ar fi chat-urile video sau audio live, Voice over IP, cererile DNS și jocurile online.

Concluzie

TCP și UDP sunt fundamentul comunicării pe internet. Fără aceste două protocoale, ar fi dificil pentru dispozitivele conectate la internet să comunice între ele. TCP este protocolul la care apelezi dacă ai nevoie de fiabilitate și precizie. Pe de altă parte, UDP este protocolul de care ai nevoie dacă nu ești atât de preocupat de pierderea pachetelor de date și ești mai preocupat de viteza cu care acestea ajung la destinație.