Uživatelské nástroje

Nástroje pro tento web


tcp

TCP (Transmission Control Protocol)

TCP je stěžejní protokol transportní vrstvy (L4) z rodiny TCP/IP. Na rozdíl od UDP je spojově orientovaný, což znamená, že před samotnou výměnou dat musí dojít k navázání relace. Zajišťuje spolehlivý, seřazený a bezchybný přenos dat mezi aplikacemi.

Definován je primárně v RFC 793 (s mnoha pozdějšími aktualizacemi jako RFC 9293).

### 1. TCP Handshake (Navazování spojení) Pro zahájení komunikace se používá proces tzv. třícestného potřesení rukou (Three-way Handshake).

1. **SYN (Synchronize):** Klient pošle paket s náhodným sekvenčním číslem ($X$) a nastaveným příznakem SYN.
2. **SYN-ACK:** Server odpoví potvrzením ($ACK = X + 1$) a vlastním sekvenčním číslem ($Y$).
3. **ACK (Acknowledge):** Klient potvrdí přijetí serverového čísla ($ACK = Y + 1$).

Spojení se ukončuje podobným způsobem pomocí příznaků FIN (Finish) nebo RST (Reset) v případě chyby.

### 2. Struktura TCP segmentu Každý TCP segment obsahuje hlavičku o velikosti minimálně 20 bajtů.

Pole Velikost (bitů) Popis
Source Port 16 Číslo portu odesílatele.
Destination Port 16 Číslo portu příjemce.
Sequence Number 32 Číslo prvního bajtu dat v segmentu (pro řazení).
Acknowledgment Number 32 Číslo dalšího očekávaného bajtu (pokud je nastaven ACK).
Data Offset 4 Velikost hlavičky (počet 32bitových slov).
Flags 9 Příznaky řízení (SYN, ACK, FIN, RST, PSH, URG).
Window Size 16 Velikost přijímacího okna (řízení toku).
Checksum 16 Kontrolní součet pro detekci poškození dat.

### 3. Mechanismy spolehlivosti a řízení toku

#### A. Flow Control (Sliding Window) TCP používá mechanismus klouzavého okna. Příjemce v každé odpovědi informuje odesílatele, kolik bajtů je schopen ještě přijmout (Window Size). Tím zabraňuje zahlcení pomalejšího příjemce rychlým odesílatelem.

#### B. Congestion Control (Řízení zahlcení sítě) Na rozdíl od Flow Control se toto týká propustnosti cesty mezi nimi. Algoritmy (jako Tahoe, Reno, Cubic) používají fáze:

  • Slow Start: Exponenciální nárůst rychlosti odesílání.
  • Congestion Avoidance: Lineární nárůst po dosažení prahu (ssthresh).
  • Fast Retransmit/Recovery: Reakce na ztrátu paketu bez nutnosti čekat na timeout.

#### C. Retransmission (Opakování přenosu) Pokud odesílatel nedostane potvrzení (ACK) v rámci časového limitu (RTO - Retransmission Timeout), považuje segment za ztracený a odešle jej znovu.

### 4. Analýza v terminálu Pro sledování stavu TCP spojení v systému se používají příkazy:

Zobrazení aktivních spojení a naslouchajících portů:

ss -tunap
# nebo starší
netstat -ant

Sledování příznaků v reálném čase:

tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'

### 5. Srovnání: TCP vs UDP

Vlastnost TCP UDP
Spojení Ano (navazuje se) Ne (bezstavové)
Spolehlivost Ano (potvrzování) Ne (best effort)
Pořadí dat Garantováno Negarantováno
Rychlost Nižší (režie hlavičky a potvrzování) Vysoká (minimální režie)
Využití HTTP, SSH, Databáze Streaming, VoIP, Online hry, DNS
Důležité: Moderní protokoly jako QUIC (základ HTTP/3) se snaží kombinovat výhody obou – běží nad UDP, ale implementují vlastní mechanismy spolehlivosti, aby eliminovaly slabinu TCP zvanou Head-of-Line Blocking.

Zpět na přehled protokolů

tcp.txt · Poslední úprava: autor: admin