Sobes.tech
Junior

Ako funguje TCP protokol?

sobes.tech AI

Odpoveď od AI

TCP (Transmission Control Protocol) je protokol transportnej vrstvy, ktorý zabezpečuje spoľahlivú, spojenie orientovanú doručovanie dát.

Kľúčové aspekty práce:

  1. Trojsmerné spojenie (Three-way Handshake):

    • Klient odosiela SYN (Synchronize) paket s počiatočným číslom sekvencie (ISN).
    • Server prijíma SYN, odosiela SYN-ACK (Synchronize-Acknowledge), obsahujúci svoje ISN a potvrdenie (ACK) ISN klienta (acknowledgement number = client ISN + 1).
    • Klient prijíma SYN-ACK, odosiela ACK, ktoré potvrdzuje ISN servera (acknowledgement number = server ISN + 1).
    • Spojenie je nadviazané, môžu sa prenášať dáta.
  2. Prúdenie dát: Dáta sa prenášajú ako neprerušovaný tok bajtov, nie ako samostatné pakety. TCP segmentuje tok dát na segmenty na prenos.

  3. Číslovanie sekvencií (Sequence Numbers): Každý bajt v tok dát má jedinečné číslo. Segmenty obsahujú číslo prvého bajta, ktorý v nich je (sekvenčné číslo), a číslo potvrdenia (acknowledgement number), ktoré ukazuje na ďalší bajt, ktorý odosielateľ očakáva prijať.

  4. Potvrdenia (Acknowledgements - ACK): Prijímateľ odosiela ACK, aby oznámil odosielateľovi, ktoré dáta boli úspešne prijaté. Ak odosielateľ nedostane ACK v stanovenom čase (timeout), opakuje odoslanie segmentu.

  5. Kontrola chýb (Error Control): Používajú sa kontrolné súčty (checksums) na overenie integrity dát. Ak je segment poškodený, je zahodený a odosielateľ čaká na timeout alebo duplicitný ACK na opätovné odoslanie.

  6. Riadenie toku (Flow Control): Mechanizmus na zabránenie preplnenia bufferu prijímateľa. Prijímateľ oznamuje odosielateľovi veľkosť svojho okna prijmu (receive window) v ACK paketoch. Odosielateľ môže odoslať iba toľko dát, koľko je uvedené v okne.

  7. Riadenie zahltenia (Congestion Control): Mechanizmus na určenie dostupnej kapacity siete a dynamickú reguláciu rýchlosti prenosu dát, aby sa predišlo zahlteniu siete. Zahŕňa algoritmy ako pomalé štartovanie (slow start), prevenciu zahltenia (congestion avoidance), rýchle opätovné odoslanie (fast retransmit) a rýchle zotavenie (fast recovery).

  8. Ukončenie spojenia: Zvyčajne používa štvorstupňové spojenie:

    • Jedna strana odošle FIN (Finish) paket.
    • Druhá strana odošle ACK na FIN.
    • Druhá strana odošle svoj FIN (po ukončení prenosu svojich zostávajúcich dát).
    • Prvá strana odošle ACK na tento FIN.
    • Spojenie je ukončené.

Štruktúra TCP segmentu:

Pole Veľkosť (bajty) Popis
Zdrojový port 2 Port odosielateľa
Cieľový port 2 Port príjemcu
Číslo sekvencie 4 Číslo prvého bajta dát v segmente
Číslo potvrdenia 4 Číslo ďalšieho očakávaného bajta
Dĺžka hlavičky (Data Offset/Header Length) 4 bity Dĺžka TCP hlavičky
Rezervované 6 bitov Rezervované
Flagi (Control Bits) 6 bitov URG, ACK, PSH, RST, SYN, FIN
Veľkosť okna 2 Veľkosť okna príjemcu
Kontrolný súčet 2 Kontrolný súčet hlavičky a dát
Ukazovateľ urgentného stavu 2 Ukazuje na urgentné dáta (ak je URG nastavené)
Možnosti Premenná Dodatočné možnosti
Vyrovnávacia pamäť (Padding) Premenná Na vyrovnanie hlavičky
Dáta Premenná Prenášané dáta
// Flagi (Control Bits):
// URG: Urgent Pointer field significant
// ACK: Acknowledgement field significant
// PSH: Push function
// RST: Reset the connection
// SYN: Synchronize sequence numbers
// FIN: No more data from sender