Sobes.tech
Junior

Jak funguje protokol TCP?

sobes.tech AI

Odpověď od AI

TCP (Transmission Control Protocol) — je protokol vrstvy přenosu, který zajišťuje spolehlivou, spojení orientovanou doručování dat.

Klíčové aspekty fungování:

  1. Trojstranné navázání spojení (Three-way Handshake):

    • Klient odešle SYN (Synchronize) paket s počátečním číslem sekvence (ISN).
    • Server obdrží SYN, odešle SYN-ACK (Synchronize-Acknowledge), který obsahuje jeho vlastní ISN a potvrzení (ACK) ISN klienta (acknowledgement number = client ISN + 1).
    • Klient obdrží SYN-ACK, odešle ACK, kterým potvrzuje ISN serveru (acknowledgement number = server ISN + 1).
    • Spojení je navázáno, data mohou být přenášena.
  2. Proudová přenos dat: Data jsou přenášena jako nepřerušovaný proud bajtů, nikoli jako samostatné pakety. TCP segmentuje datový proud do segmentů pro přenos.

  3. Číslování sekvencí (Sequence Numbers): Každý bajt v datovém proudu má unikátní číslo. Segmenty obsahují číslo prvního bajtu (sequence number) a číslo potvrzení (acknowledgement number), které ukazuje na další očekávaný bajt.

  4. Potvrzení (Acknowledgements - ACK): Příjemce posílá ACK, aby informoval o úspěšném přijetí dat. Pokud odesílatel nedostane ACK v určitém čase (timeout), segment znovu odešle.

  5. Ovládání chyb (Error Control): Kontrolní součty (checksums) se používají k ověření integrity dat. Pokud je segment poškozen, je odmítnut a odesílatel čeká na timeout nebo duplicitní ACK pro opakované odeslání.

  6. Řízení toku (Flow Control): Mechanismus, který zabraňuje přetížení bufferu příjemce. Příjemce informuje o velikosti svého okna příjmu (receive window) v ACK paketech. Odesílatel může poslat pouze tolik dat, kolik dovolí okno.

  7. Řízení zahlcení (Congestion Control): Mechanismus pro určení dostupné kapacity sítě a dynamické řízení rychlosti přenosu dat, aby se předešlo zahlcení sítě. Zahrnuje algoritmy jako slow start, congestion avoidance, fast retransmit a fast recovery.

  8. Ukončení spojení: Obvykle pomocí čtyřstranného navázání:

    • Jedna strana odešle FIN (Finish) paket.
    • Druhá strana odešle ACK na FIN.
    • Druhá strana odešle svůj FIN (po dokončení přenosu zbývajících dat).
    • První strana odešle ACK na tento FIN.
    • Spojení je uzavřeno.

Struktura TCP segmentu:

Pole Velikost (byty) Popis
Source Port 2 Zdrojový port
Destination Port 2 Cílový port
Sequence Number 4 Číslo prvního bajtu v segmentu
Acknowledgement Number 4 Číslo následujícího očekávaného bajtu
Data Offset/Header Length 4 bity Délka hlavičky TCP
Reserved 6 bitů Vyhrazeno
Flags (Control Bits) 6 bitů URG, ACK, PSH, RST, SYN, FIN
Window Size 2 Velikost okna příjmu
Checksum 2 Kontrolní součet hlavičky a datů
Urgent Pointer 2 Ukazuje na urgentní data (pokud je URG nastaveno)
Options Proměnné Další volby
Padding Proměnné Vyrovnání hlavičky
Data Proměnné Přenášená data
// Flags (Control Bits):
// URG: Důležité pole Urgent Pointer
// ACK: Důležité pole potvrzení
// PSH: Funkce Push
// RST: Reset spojení
// SYN: Synchronizace čísel sekvence
// FIN: Žádná další data od odesílatele