TCP vs UDP: Demitizarea dezbaterii Fiabilitate versus Eficiență

Astăzi, vom începe prin a ne concentra asupra protocolului TCP. Anterior, în capitolul despre stratificare, am menționat un punct important. La nivelul rețelei și mai jos, este vorba mai mult despre conexiunile gazdă-gazdă, ceea ce înseamnă că un computer trebuie să știe unde se află un alt computer pentru a se conecta la acesta. Cu toate acestea, comunicarea într-o rețea este adesea o comunicare între procese, mai degrabă decât o comunicare între mașini. Prin urmare, protocolul TCP introduce conceptul de port. Un port poate fi ocupat de un singur proces, ceea ce asigură comunicarea directă între procesele aplicației care rulează pe gazde diferite.

Sarcina nivelului de transport este de a oferi servicii de comunicare directă între procesele aplicației care rulează pe gazde diferite, așa că este cunoscut și sub denumirea de protocol end-to-end. Nivelul de transport ascunde detaliile de bază ale rețelei, permițând procesului aplicației să vadă ca și cum ar exista un canal logic de comunicare end-to-end între cele două entități ale nivelului de transport.

TCP este prescurtarea de la Transmission Control Protocol și este cunoscut ca un protocol orientat pe conexiune. Aceasta înseamnă că, înainte ca o aplicație să poată începe să trimită date către cealaltă, cele două procese trebuie să efectueze o handshake. Handshake-ul este un proces conectat logic care asigură o transmitere fiabilă și o recepție ordonată a datelor. În timpul handshake-ului, se stabilește o conexiune între gazdele sursă și destinație prin schimbul unei serii de pachete de control și prin stabilirea unor parametri și reguli pentru a asigura o transmitere cu succes a datelor.

Ce este TCP-ul? (Mylinking'sAtingeți rețeauaşiBroker de pachete de rețeapoate procesa atât pachete TCP, cât și UDP)
TCP (Transmission Control Protocol) este un protocol de comunicație la nivelul transportului, orientat spre conexiune, fiabil, bazat pe flux de octeți.

Orientat pe conexiuneOrientat pe conexiune înseamnă că comunicarea TCP este unu-la-unu, adică comunicare punct-la-punct-end-to-end, spre deosebire de UDP, care poate trimite mesaje către mai multe gazde în același timp, deci nu se poate realiza comunicarea unu-la-manimi.
FiabilFiabilitatea TCP asigură că pachetele sunt livrate în mod fiabil către receptor, indiferent de modificările legăturii de rețea, ceea ce face ca formatul pachetelor de protocol TCP să fie mai complex decât cel al UDP.
Bazat pe flux de octețiNatura TCP bazată pe flux de octeți permite transmiterea de mesaje de orice dimensiune și garantează ordinea mesajelor: chiar dacă mesajul anterior nu a fost recepționat complet și chiar dacă octeții următori au fost recepționați, TCP nu îi va livra la nivelul aplicației pentru procesare și va elimina automat pachetele duplicate.
Odată ce gazda A și gazda B au stabilit o conexiune, aplicația trebuie doar să utilizeze linia de comunicație virtuală pentru a trimite și primi date, asigurând astfel transmiterea datelor. Protocolul TCP este responsabil pentru controlul sarcinilor precum stabilirea, deconectarea și menținerea conexiunii. Trebuie menționat că aici spunem că linia virtuală înseamnă doar stabilirea unei conexiuni, conexiunea prin protocolul TCP indică doar faptul că cele două părți pot începe transmiterea de date și asigură fiabilitatea datelor. Nodurile de rutare și transport sunt gestionate de dispozitivele de rețea; protocolul TCP în sine nu se ocupă de aceste detalii.

O conexiune TCP este un serviciu full-duplex, ceea ce înseamnă că gazda A și gazda B pot transmite date în ambele direcții într-o conexiune TCP. Adică, datele pot fi transferate între gazda A și gazda B într-un flux bidirecțional.

TCP stochează temporar datele în bufferul de trimitere al conexiunii. Acest buffer de trimitere este unul dintre cache-urile configurate în timpul handshake-ului în trei direcții. Ulterior, TCP va trimite datele din cache-ul de trimitere către cache-ul de recepție al gazdei destinație la momentul potrivit. În practică, fiecare peer va avea un cache de trimitere și un cache de recepție, așa cum se arată aici:

TCP-UDP

Bufferul de trimitere este o zonă de memorie menținută de implementarea TCP pe partea expeditorului, care este utilizată pentru a stoca temporar datele care urmează să fie trimise. Când se efectuează o handshake în trei direcții pentru a stabili o conexiune, memoria cache de trimitere este configurată și utilizată pentru stocarea datelor. Bufferul de trimitere este ajustat dinamic în funcție de congestia rețelei și de feedback-ul de la receptor.

Un buffer de recepție este o zonă de memorie menținută de implementarea TCP pe partea receptorului, care este utilizată pentru a stoca temporar datele primite. TCP stochează datele primite în memoria cache de recepție și așteaptă ca aplicația superioară să le citească.

Rețineți că dimensiunea memoriei cache de trimitere și a memoriei cache de primire este limitată; atunci când memoria cache este plină, TCP poate adopta anumite strategii, cum ar fi controlul congestiei, controlul fluxului etc., pentru a asigura o transmisie fiabilă a datelor și stabilitatea rețelei.

În rețelele de calculatoare, transmiterea datelor între gazde se realizează prin intermediul segmentelor. Deci, ce este un segment de pachet?

TCP creează un segment TCP, sau segment de pachet, prin împărțirea fluxului de intrare în blocuri și adăugarea de antete TCP la fiecare bloc. Fiecare segment poate fi transmis doar pentru o perioadă limitată de timp și nu poate depăși dimensiunea maximă a segmentului (MSS). În drumul său descendent, un segment de pachet trece prin stratul de legătură. Stratul de legătură are o unitate maximă de transmisie (MTU), care este dimensiunea maximă a pachetului care poate trece prin stratul de legătură de date. Unitatea maximă de transmisie este de obicei legată de interfața de comunicație.

Deci, care este diferența dintre MSS și MTU?

În rețelele de calculatoare, arhitectura ierarhică este foarte importantă deoarece ia în considerare diferențele dintre diferitele niveluri. Fiecare strat are un nume diferit; în stratul de transport, datele se numesc segment, iar în stratul de rețea, datele se numesc pachet IP. Prin urmare, Unitatea Maximă de Transmisie (MTU) poate fi considerată Dimensiunea Maximă a Pachetului IP care poate fi transmisă de stratul de rețea, în timp ce Dimensiunea Maximă a Segmentului (MSS) este un concept al stratului de transport care se referă la cantitatea maximă de date care poate fi transmisă de un pachet TCP la un moment dat.

Rețineți că atunci când Dimensiunea Maximă a Segmentului (MSS) este mai mare decât Unitatea Maximă de Transmisie (MTU), fragmentarea IP va fi efectuată la nivelul de rețea, iar TCP nu va împărți datele mai mari în segmente adecvate dimensiunii MTU. Va exista o secțiune pe nivelul de rețea dedicată nivelului IP.

Structura segmentului de pachet TCP
Să explorăm formatul și conținutul antetelor TCP.

Segmentul TCP

Număr de secvențăUn număr aleator generat de computer la stabilirea conexiunii, care este valoarea sa inițială la stabilirea conexiunii TCP, iar numărul de secvență este trimis receptorului prin pachetul SYN. ​​În timpul transmiterii datelor, expeditorul incrementează numărul de secvență în funcție de cantitatea de date trimise. Receptorul evaluează ordinea datelor în funcție de numărul de secvență recepționat. Dacă datele sunt găsite neordonate, receptorul le va reordona pentru a asigura ordinea acestora.

Număr de confirmareAcesta este un număr de secvență utilizat în TCP pentru a confirma primirea datelor. Indică numărul de secvență al următoarelor date pe care expeditorul se așteaptă să le primească. Într-o conexiune TCP, receptorul determină ce date au fost primite cu succes pe baza numărului de secvență al segmentului de pachet de date primit. Când receptorul primește cu succes datele, acesta trimite un pachet ACK expeditorului, care conține numărul de confirmare. După primirea pachetului ACK, expeditorul poate confirma că datele au fost primite cu succes înainte de a confirma numărul de răspuns.

Biții de control ai unui segment TCP includ următorii:

Bitul ACKCând acest bit este 1, înseamnă că câmpul de răspuns de confirmare este valid. TCP specifică faptul că acest bit trebuie setat la 1, cu excepția pachetelor SYN la stabilirea inițială a conexiunii.
Bitul RSTCând acest bit este 1, indică faptul că există o excepție în conexiunea TCP și că trebuie forțată deconectarea conexiunii.
Bitul SYNCând acest bit este setat la 1, înseamnă că trebuie stabilită conexiunea și că valoarea inițială a numărului de secvență este setată în câmpul numărului de secvență.
Bitul FINCând acest bit este 1, înseamnă că nu vor mai fi trimise date în viitor și că este dorită conexiunea.
Diversele funcții și caracteristici ale TCP sunt întruchipate de structura segmentelor de pachete TCP.

Ce este UDP? (Mylinking-ul)Atingeți rețeauaşiBroker de pachete de rețeaputea procesa atât pachete TCP, cât și UDP)
Protocolul User Datagram Protocol (UDP) este un protocol de comunicație fără conexiune. Comparativ cu TCP, UDP nu oferă mecanisme complexe de control. Protocolul UDP permite aplicațiilor să trimită direct pachete IP încapsulate fără a stabili o conexiune. Când dezvoltatorul alege să utilizeze UDP în loc de TCP, aplicația comunică direct cu IP-ul.

Numele complet al protocolului UDP este User Datagram Protocol, iar antetul său are doar opt octeți (64 de biți), ceea ce este foarte concis. Formatul antetului UDP este următorul:

Segment UDP

Porturile de destinație și sursăScopul lor principal este de a indica cărui proces ar trebui să trimită pachete UDP.
Dimensiunea pachetuluiCâmpul pentru dimensiunea pachetului conține dimensiunea antetului UDP plus dimensiunea datelor.
Sumă de controlConceput pentru a asigura livrarea fiabilă a antetelor și datelor UDP. Rolul sumei de control este de a detecta dacă a apărut o eroare sau o corupție în timpul transmiterii unui pachet UDP pentru a asigura integritatea datelor.

Diferențe între TCP și UDP în MylinkingAtingeți rețeauaşiBroker de pachete de rețeapoate procesa atât pachete TCP, cât și UDP
TCP și UDP diferă prin următoarele aspecte:

TCP vs. UDP

ConexiuneTCP este un protocol de transport orientat pe conexiune care necesită stabilirea unei conexiuni înainte ca datele să poată fi transferate. UDP, pe de altă parte, nu necesită o conexiune și poate transfera date imediat.

Obiect de serviciuTCP este un serviciu unu-la-unu în două puncte, adică o conexiune are doar două puncte finale pentru a comunica între ele. Cu toate acestea, UDP acceptă comunicarea interactivă unu-la-unu, unu-la-mulți și mulți-la-mulți, care poate comunica cu mai multe gazde în același timp.

FiabilitateTCP oferă serviciul de livrare fiabilă a datelor, asigurându-se că datele sunt fără erori, fără pierderi, fără duplicate și ajung la cerere. UDP, pe de altă parte, depune toate eforturile și nu garantează livrarea fiabilă. UDP poate suferi pierderi de date și alte situații în timpul transmisiei.

Controlul congestiei, controlul fluxuluiTCP are mecanisme de control al congestiei și al fluxului, care pot ajusta rata de transmisie a datelor în funcție de condițiile rețelei pentru a asigura securitatea și stabilitatea transmisiei de date. UDP nu are mecanisme de control al congestiei și al fluxului; chiar dacă rețeaua este foarte congestionată, nu va face ajustări la rata de transmisie UDP.

Costuri suplimentare pentru antetTCP are o lungime mare a antetului, de obicei 20 de octeți, care crește atunci când se utilizează câmpuri de opțiuni. UDP, pe de altă parte, are un antet fix de doar 8 octeți, deci UDP are o suprasarcină a antetului mai mică.

TCP vs. UDP

Scenarii de aplicații TCP și UDP:
TCP și UDP sunt două protocoale diferite de nivel de transport și prezintă unele diferențe în scenariile de aplicație.

Întrucât TCP este un protocol orientat pe conexiune, este utilizat în principal în scenarii în care este necesară o livrare fiabilă a datelor. Câteva cazuri comune de utilizare includ:

Transfer de fișiere FTPTCP poate asigura că fișierele nu sunt pierdute și corupte în timpul transferului.
HTTP/HTTPSTCP asigură integritatea și corectitudinea conținutului web.
Deoarece UDP este un protocol fără conexiune, nu oferă garanții de fiabilitate, dar are caracteristici de eficiență și timp real. UDP este potrivit pentru următoarele scenarii:

Trafic cu pachete reduse, cum ar fi DNS (Sistemul de nume de domeniu)Interogările DNS sunt de obicei pachete scurte, iar UDP le poate finaliza mai rapid.
Comunicare multimedia, cum ar fi video și audioPentru transmisii multimedia cu cerințe ridicate în timp real, UDP poate oferi o latență mai mică pentru a asigura transmiterea datelor în timp util.
Comunicare difuzatăUDP acceptă comunicarea unu-la-mulți și mulți-la-mulți și poate fi utilizat pentru transmiterea mesajelor broadcast.

Rezumat
Astăzi am aflat despre TCP. TCP este un protocol de comunicație la nivelul transportului, orientat spre conexiune, fiabil, bazat pe flux de octeți. Acesta asigură transmiterea fiabilă și recepția ordonată a datelor prin stabilirea conexiunii, a handshake-ului și a confirmării. Protocolul TCP utilizează porturi pentru a realiza comunicarea între procese și oferă servicii de comunicare directă pentru procesele aplicațiilor care rulează pe gazde diferite. Conexiunile TCP sunt full-duplex, permițând transferuri bidirecționale simultane de date. În schimb, UDP este un protocol de comunicație orientat fără conexiune, care nu oferă garanții de fiabilitate și este potrivit pentru anumite scenarii cu cerințe ridicate în timp real. TCP și UDP diferă în ceea ce privește modul de conectare, obiectul de serviciu, fiabilitatea, controlul congestiei, controlul fluxului și alte aspecte, iar scenariile lor de aplicare sunt, de asemenea, diferite.


Data publicării: 03 dec. 2024