TCP și UDP sunt două protocoale fundamentale pentru comunicațiile pe internet, deoarece
aceste două protocoale sunt localizate în stratul de transport al modelului TCP / IP , și este
primul strat în care originea și destinația comunică direct, deoarece straturile inferioare (strat de
rețea și strat de acces mijlociu) nu îndeplinesc această funcție. Astăzi vom explica principalele
caracteristici ale protocolului TCP si Protocol UDP , când se utilizează fiecare, diferențe și
utilizări principale.
Protocol TCP: ce este și cum funcționează?
Platforma TCP (Protocol de control al transmisiei) protocolul este unul dintre protocoalele
fundamentale de pe Internet, permite aplicațiilor să comunice cu garanții, indiferent de straturile
inferioare ale modelului TCP / IP. Acest lucru înseamnă că routerele (stratul de rețea din modelul
TCP / IP) trebuie să trimită doar segmentele (unitatea de măsură în TCP), fără să vă îngrijorați
dacă aceste date vor ajunge sau nu corect. TCP acceptă protocoale cu mai multe straturi de
aplicație , cum ar fi HTTP (web), HTTPS (web securizat), POP3 (poștă de intrare) și SMTP
(poștă de ieșire), precum și versiunile lor sigure folosind TLS. TCP este de asemenea utilizat în
protocoale importante precum FTP, FTPES și SFTP pentru a transfera fișiere de la o sursă la o
destinație și chiar protocolul SSH pentru a gestiona calculatoarele local și de la distanță în
siguranță folosește protocolul TCP.
Caracteristici principale.
Deoarece TCP servește un număr mare de protocoale de nivel de aplicație, acesta este esențial ca
datele (segmentele) să ajungă la destinatar corect , fără erori și, în ordine. Dacă în transmiterea
segmentelor, acestea sunt corupte sau pierdute, automat TCP protocol începe retransmisia , fără
intervenția stratului de aplicare. În acest fel, se garantează că datele ajung la destinatar fără erori,
deoarece acest protocol este responsabil pentru rezolvarea oricărui tip de problemă.
MSS (Dimensiunea maximă a segmentului) este dimensiunea maximă în octeți pe care TCP o
poate primi într-un singur segment, este similară cu MTU, dar MSS este la nivelul stratului de
transport. Pentru a obține cele mai bune performanțe, MSS trebuie să fie suficient de mic pentru
a evita fragmentarea IP. În mod normal, MSS este anunțat pe fiecare parte a canalului de
comunicare, prin antetul TCP în sine. În mod normal, dimensiunea MSS este MTU (1500 octeți
în mod normal) minus antetul TCP (care are o lungime variabilă de cel puțin 20 de octeți) minus
antetul IP (care are o lungime variabilă de cel puțin 20 de octeți). MSS = MTU (1,500 octeți) -
20 octeți Antet TCP - Antet IP de 20 octeți
TCP are un mecanism complex de control al erorilor, o tehnică de fereastră glisantă este utilizată
astfel încât toate segmentele să ajungă corect. Această caracteristică utilizează diferite metode
pentru a detecta posibile erori care apar:
[bloc de inserție = ”1 ″]
• checksum
• Numerotarea tuturor segmentelor pentru a controla corect
• Confirmări selective ACK, deși vă permite, de asemenea, să „acumulați” segmente, astfel
încât cu un singur ACK puteți confirma mai multe.
• Temporizatoare: dacă trece mult timp, TCP retransmite automat segmentul care a fost
„pierdut”.
• Segmentele duplicate sunt aruncate: în cazul în care ajunge un segment duplicat
(deoarece unul a durat mai mult decât normal și a fost retrimis) îl șterge.
Desigur, dacă TCP detectează o eroare, va începe retransmiterea automat, fără ca stratul de
aplicație să fie nevoit să facă nimic deloc.
O altă caracteristică foarte importantă a informațiilor care călătorește de la o origine la o
destinație este aceea că datele ajung în ordine , adică în aceeași ordine în care au fost emise,
întrucât protocolul IP este un protocol cu cel mai bun efort, face tot posibilul, astfel încât
pachetele să ajungă în ordine și să fie corecte, dar nu este fiabil, deoarece nu garantează nimic .
TCP are o fereastră glisantă pe expeditor și receptor, astfel încât, dacă primim un segment care
nu este în ordine, acesta va „automat aștepta” până când va sosi segmentul care lipsește, sau
altfel, va solicita o retransmisie numai a segmentului care lipsește. Cu fiecare segment primit de
receptor, va fi trimis un ACK indicând expeditorului că totul ajunge corect, însă, în realitate,
implementările TCP permit trimiterii unui ACK pentru a confirma recepția mai multor segmente
simultan, cu obiectivul de a nu saturați rețeaua cu atâtea confirmări.
Protocolul TCP permite Controlul debitului , adică este capabil să atenueze saturația posibilă a
rețelei sau a gazdei la distanță. În cazul în care un dispozitiv transmite la o viteză de 500Mbps,
iar dispozitivul de destinație poate primi informații doar la 100Mbps, protocolul TCP este
adaptat dinamic. În acest fel, protocolul TCP va încerca întotdeauna să maximizeze lățimea de
bandă disponibilă între sursă și destinație. Funcționarea acestei ferestre glisante este complexă,
dar practic funcționează prin faptul că receptorul are o fereastră TCP disponibilă cu un număr de
octeți care poate fi stocat într-un tampon, expeditorul poate trimite date până când această
cantitate este completată. Pentru ca expeditorul să poată trimite mai multe date, este necesar ca
receptorul să trimită un ACK care să indice că totul este corect și că procedează la „încărcarea”
acestuia în stratul de aplicație.
[bloc de inserție = ”1 ″]
TCP are și el controlul congestiei , acest lucru ne permite să nu pierdem pachetele de pe Internet,
deoarece există congestii pe routere. Dacă routerul nu este capabil să proceseze sau să
redirecționeze pachetele la rata pe care le primește, routerul însuși le va arunca și va fi pierdut,
deoarece bufferul său va fi completat. Nu trebuie să confundăm controlul debitului (pe care l-am
explicat mai sus) cu controlul congestiei. Fereastra de congestie (este complementară cu fereastra
de recepție) este ceea ce este utilizat pentru a gestiona controlul congestiei în TCP. În situații de
non-congestionare, avantajul congestiei este același cu fereastra de recepție, dacă apare
congestia, dimensiunea avantajului de congestie este redusă, iar dacă aceasta dispare, crește.
Numărul maxim de octeți pe care expeditorul îl poate trimite este minimul ambelor dimensiuni
ale ferestrei (dacă fereastra de congestionare este de 1500 de octeți, iar fereastra de recepție este
de 2000 de octeți, atunci sunt trimise 1500 de octeți, cel mai mic).
Pentru a evita congestia și pentru a putea strânge lățimea de bandă maximă disponibilă între
origine și destinație, există un total de trei faze. încet începe faza (pornire lentă) este responsabilă
de creșterea exponențială (deci nu se poate considera cu adevărat început lent) fereastra de
congestionare, apoi congestia evitare faza care este responsabilă de creșterea liniară a ferestrei de
congestie și, în sfârșit, de faza constantă unde fereastra de recepție este aceeași cu fereastra de
congestionare.
TCP are în prezent algoritmi diferiți pentru a gestiona eficient congestia, primii au fost TCP
Tahoe și Reno, deși avem și alți, cum ar fi TCP Vegas, dar, de-a lungul anilor, cu noile rețele de
date TCP / IP, au apărut alți algoritmi care sunt mai eficient. De exemplu, avem TCP BRR care
ne permite să trimitem informații cât mai repede posibil, deoarece este mult mai eficient decât
protocolul TCP original (vom avea o viteză mai mare). Avem, de asemenea, TCP Cubic, care
este controlul congestiei utilizat de Linux și sisteme de operare Unix.
[bloc de inserție = ”1 ″]
În cele din urmă, o altă caracteristică interesantă a TCP este că ne permite date multiplex , astfel
încât să putem primi informații de la diferite gazde simultan. De asemenea, permite Full-Duplex,
deoarece putem trimite și primi date simultan prin același canal de comunicare.
Antetul UDP
UDP adaugă antetul de 8 octeți în fiecare datagramă. În acest antet UDP vom găsi portul sursă și
portul de destinație al conexiunii (socket), lungimea datagramei și checkum-ul datagramei
menționate pentru a verifica dacă acesta nu are erori, nici antetul, nici datele datagramei. ports
(port sursă și port destinație) sunt esențiale pentru buna funcționare a UDP. UDP folosește aceste
numere de port pentru a identifica o priză, adică o aplicație care emite date sau primește date.
TCP vs UDP în diferite protocoale VPN, cum ar fi OpenVPN
OpenVPN este un protocol pentru crearea rețelelor private virtuale care ne permit să asigurăm o
comunicare punct la punct, deoarece întregul trafic de tunel este criptat și autentificat.
OpenVPN ne permite să utilizăm atât protocolul TCP cât și UDP pentru tunelul de date, așa cum
ați văzut, TCP și UDP sunt foarte diferite și este întotdeauna recomandabil să utilizați TCP,
deoarece are controlul fluxului, controlul congestiei, controlul erorilor și multe alte funcții care
fac o conexiune fiabilă. Dacă doriți să utilizați OpenVPN, în mod implicit este utilizat UDP,
aceasta se datorează faptului că, dacă există probleme, protocoalele stratului de aplicație, cum ar
fi HTTP (care utilizează TCP de mai jos) vor fi responsabile pentru efectuarea retransmisiilor,
dacă a fost necesar, deci conexiunea ar fi fiabil (controlul fluxului, congestie, erori etc.) chiar
dacă tunelul criptat punct la punct folosește UDP.
Un aspect foarte important este faptul că un server OpenVPN cu UDP, va putea accepta mai
multe conexiuni primite simultan dacă utilizați UDP decât dacă utilizați TCP, în plus, vom avea
și o lățime de bandă mai mare, deoarece nu este adăugată o „încărcare” suplimentară. , pentru că
UDP este mult mai „ușor”.
După cum ați văzut, atât TCP, cât și UDP sunt două protocoale fundamentale de internet și
fiecare dintre acestea gestionează protocoale diferite ale stratului de aplicație.