Sobes.tech
Junior

Kako funkcioniše TCP protokol?

sobes.tech АИ

Одговор од АИ

TCP (Transmission Control Protocol) — to je protokol sloja prenosa koji obezbeđuje pouzdanu, usmerenu na konekciju isporuku podataka.

Ključni aspekti rada:

  1. Trostruki rukohvat (Three-way Handshake):

    • Klijent šalje SYN (Synchronize) paket sa početnim brojem sekvence (ISN).
    • Server prima SYN, šalje SYN-ACK (Synchronize-Acknowledge) koji sadrži njegov ISN i potvrdu (ACK) ISN klijenta (acknowledgement number = client ISN + 1).
    • Klijent prima SYN-ACK, šalje ACK za potvrdu ISN servera (acknowledgement number = server ISN + 1).
    • Veza je uspostavljena, podaci mogu biti preneti.
  2. Strujni prenos podataka: Podaci se prenose kao neprekidni tok bajtova, a ne kao odvojeni paketi. TCP segmentira tok podataka u segmente za prenos.

  3. Numerisanje sekvenci (Sequence Numbers): Svaki bajt u toku podataka ima jedinstveni broj. Segmenti sadrže broj prvog bajta (sequence number) i broj potvrde (acknowledgement number), koji ukazuje na sledeći bajt koji pošiljalac očekuje da primi.

  4. Potvrde (Acknowledgements - ACK): Primalac šalje ACK da obavesti pošiljaoca koji su podaci uspešno primljeni. Ako pošiljalac ne primi ACK u određenom vremenu (timeout), ponovo šalje segment.

  5. Kontrola grešaka (Error Control): Koriste se kontrolne sume (checksums) za proveru integriteta podataka. Ako je segment oštećen, odbacuje se, a pošiljalac čeka timeout ili duplikat ACK za ponovno slanje.

  6. Kontrola toka (Flow Control): Mehanizam koji sprečava preopterećenje bafera primaoca. Primalac obaveštava pošiljaoca o veličini svog prozora za primanje (receive window) u ACK paketima. Pošiljalac može poslati samo onoliko podataka koliko dozvoli prozor.

  7. Kontrola zagušenja (Congestion Control): Mehanizam za određivanje dostupne propusnosti mreže i dinamičko regulisanje brzine prenosa podataka radi izbegavanja zagušenja. Uključuje algoritme kao što su slow start, congestion avoidance, fast retransmit i fast recovery.

  8. Zatvaranje veze: Obično putem četvorostranog rukohvata:

    • Jedna strana šalje FIN (Finish) paket.
    • Druga strana šalje ACK za FIN.
    • Druga strana šalje svoj FIN (nakon završetka prenosa preostalih podataka).
    • Prva strana šalje ACK za taj FIN.
    • Veza se zatvara.

Struktura TCP segmenta:

Polje Veličina (bajtovi) Opis
Source Port 2 Poštanski broj pošiljaoca
Destination Port 2 Poštanski broj primaoca
Sequence Number 4 Broj prvog bajta u segmentu
Acknowledgement Number 4 Broj sledećeg očekivanog bajta
Data Offset/Header Length 4 bita Dužina TCP zaglavlja
Reserved 6 bita Rezervisano
Flags (Control Bits) 6 bita URG, ACK, PSH, RST, SYN, FIN
Window Size 2 Veličina prozora za primanje
Checksum 2 Kontrolna suma zaglavlja i podataka
Urgent Pointer 2 Ukazuje na hitne podatke (ako je URG postavljeno)
Options Promenljivo Dodatne opcije
Padding Promenljivo Za poravnanje zaglavlja
Data Promenljivo Preneseni podaci
// Flags (Control Bits):
// URG: Važno polje Urgent Pointer
// ACK: Važno polje potvrde
// PSH: Funkcija Push
// RST: Resetovanje veze
// SYN: Sinhronizacija brojeva sekvence
// FIN: Nema više podataka od pošiljaoca