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:
-
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.
-
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.
-
Čí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ť.
-
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.
-
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.
-
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.
-
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).
-
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