Kā darbojas TCP protokols?
sobes.tech AI
Atbilde no AI
TCP (Transmission Control Protocol) ir transporta slāņa protokols, kas nodrošina uzticamu, saistītu datu piegādi.
Galvenie darba aspekti:
-
Trīsvirzienu rokasspiediens (Three-way Handshake):
- Klients sūta SYN (Synchronize) paketi ar sākuma secības numuru (ISN).
- Serveris saņem SYN, sūta SYN-ACK (Synchronize-Acknowledge), kas satur savu ISN un apstiprinājumu (ACK) klienta ISN (
acknowledgement number = client ISN + 1). - Klients saņem SYN-ACK, sūta ACK, kas apstiprina servera ISN (
acknowledgement number = server ISN + 1). - Savienojums ir izveidots, var sākt datu pārraidi.
-
Plūsmas datu pārraide: Dati tiek pārraidīti kā nepārtraukts baitu plūsma, nevis kā atsevišķi paketi. TCP segmentē datu plūsmu segmentos.
-
Secības numuri (Sequence Numbers): Katram baitam plūsmā ir unikāls numurs. Segmenti satur pirmā baitu numuru (sekvences numuru) un apstiprinājuma numuru (acknowledgement number), kas norāda uz nākamo gaidāmo baitu.
-
Apstiprinājumi (Acknowledgements - ACK): Saņēmējs sūta ACK, lai paziņotu sūtītājam, kuri dati ir veiksmīgi saņemti. Ja sūtītājs nesaņem ACK noteiktā laikā (laika iztecēšana), tas atkārtoti sūta segmentu.
-
Kļūdu kontrole (Error Control): Tiek izmantotas pārbaudes summas (checksums), lai pārbaudītu datu integritāti. Ja segments ir bojāts, tas tiek noraidīts, un sūtītājs gaida laika iztecēšanu vai dublētu ACK, lai atkārtoti nosūtītu.
-
Plūsmas kontrole (Flow Control): Mehānisms, kas novērš saņēmēja bufera pārslodzi. Saņēmējs paziņo sūtītājam savu saņemšanas loga izmēru (receive window) ACK-ās. Sūtītājs var nosūtīt tikai tik daudz datu, cik norādīts logā.
-
Tīkla pārslodzes kontrole (Congestion Control): Mehānisms, kas nosaka tīkla pieejamo caurlaidību un dinamiski regulē datu pārraides ātrumu, lai izvairītos no tīkla pārslodzes. Ietver algoritmus, piemēram, lēnu sākumu (slow start), pārslodzes novēršanu (congestion avoidance), ātru pārtraukšanu (fast retransmit) un ātru atgūšanu (fast recovery).
-
Savienojuma slēgšana: Parasti izmanto četrvirzienu rokasspiedienu:
- Viena puse sūta FIN (Finish) paketi.
- Otra puse sūta ACK uz FIN.
- Otra puse sūta savu FIN (pēc datu pārraides pabeigšanas).
- Pirmā puse sūta ACK uz šo FIN.
- Savienojums ir slēgts.
TCP segmenta struktūra:
| Lauks | Izmērs (baiti) | Apraksts |
|---|---|---|
| Avtora ports | 2 | Sūtītāja ports |
| Saņēmēja ports | 2 | Saņēmēja ports |
| Sekvences numurs | 4 | Pirmā baitu numurs segmentā |
| Apstiprinājuma numurs | 4 | Nākamā gaidāmā baitu numurs |
| Datu nobīde/Īpašā garuma | 4 biti | TCP galvenes garums |
| Rezervēts | 6 biti | Rezervēts |
| Kontroles biti (Flags) | 6 biti | URG, ACK, PSH, RST, SYN, FIN |
| Logs (Window) | 2 | Saņēmēja logs |
| Pārbaudes summa | 2 | Galvenes un datu pārbaudes summa |
| Steidzamais rādītājs | 2 | Norāda uz steidzamiem datiem (ja URG ir iestatīts) |
| Opcijas | mainīga | Papildu opcijas |
| Pildījums (Padding) | mainīga | Galvenes izlīdzināšanai |
| Dati | mainīga | Pārsūtāmie dati |
// Kontroles biti (Flags):
// URG: Steidzamā rādītāja nozīmīgums
// ACK: Apstiprinājuma lauka nozīmīgums
// PSH: Push funkcija
// RST: Atsākt savienojumu
// SYN: Sinhronizēt secības numurus
// FIN: Nav vairāk datu no sūtītāja