If you're seeing this message, it means we're having trouble loading external resources on our website.

Pokud používáš webový filtr, ujisti se, že domény: *.kastatic.org and *.kasandbox.org jsou vyloučeny z filtrování.

Hlavní obsah

Transmission Control Protocol (TCP)

Transmission Control Protocol (TCP) je přepravní protokol, který se používá nad rámec IP k zajištění spolehlivého přenosu paketů.
TCP obsahuje mechanismy pro řešení mnoha problémů, které vznikají při odesílání zpráv ve formě paketů, jako jsou ztracené pakety, pakety ve špatném pořadí, duplicitní pakety a poškozené pakety.
Vzhledem k tomu, že je protokol TCP používaný nejčastěji nad rámec IP, je tato skupina internetových protokolů někdy označována jako TCP/IP.

Formát paketu

Při odesílání paketů pomocí TCP/IP, je datový podíl každého IP paketu formátován jako TCP segment.
Schéma TCP segmentu v rámci IP paketu. IP paket obsahuje záhlaví a datové sekce. Datová sekce IP dat je TCP segmentem, který sám o sobě obsahuje záhlaví a datové sekce.
Každý TCP segment obsahuje záhlaví a data. TCP záhlaví obsahuje mnohem více polí než UDP záhlaví a v závislosti na velikosti pole možností může dosahovat velikosti od 20 do 60 bajtů.
TCP záhlaví sdílí některá pole se záhlavím UDP: číslo zdrojového portu, číslo cílového portu a kontrolní součet. Pokud se potřebuješ rozpomenout na jejich použití, podívej se znovu na článek o UDP.

Od začátku do konce

Pojďme si projít procesem přenosu paketu s TCP/IP.

Krok 1: Navázání spojení

Když chtějí dva počítače mezi sebou posílat data, musí nejprve navázat spojení provedením třístupňového ověření.
Schéma dvou počítačů se šipkami mezi nimi.
  • Šipka směřuje z počítače 1 do počítače 2 s popiskem "SYN".
  • Šipka směřuje z počítače 2 do počítače 1 s popiskem "ACK SYN".
  • Šipka směřuje z počítače 1 do počítače 2 s popiskem "ACK".
První počítač odesílá paket s bitem SYN nastaveným na 1 (SYN = "synchronizovat?"). Druhý počítač odesílá zpět paket s bitem ACK nastaveným na 1 (ACK = "potvrzení!") a bitem SYN nastaveným na 1. První počítač odpovídá s ACK.
Oba bity, SYN i ACK, jsou součástí záhlaví TCP:
Schéma záhlaví TCP s řádky a různými poli. Každý řádek je 32 bitů dlouhý. První řádek obsahuje 16 bitové číslo zdrojového portu a 16 bitové číslo cílového portu. Druhý řádek obsahuje 32 bitové pořadové číslo. Třetí řádek obsahuje 32 bitové potvrzovací číslo. Čtvrtý řádek obsahuje 4 bitové datové číslo "offsetu" dat, 6 bitů označených jako "rezervováno", 6 kontrolních bitů (URG, ACK, PSH, RST, SYN a FIN) a 16 bitové číslo velikosti okna. Pátý řádek obsahuje 16 bitový kontrolní součet a 16 bitový urgentní ukazatel. Záhlaví končí volbami a výplní, které mohou mít různou délku.
Bity ACK a SYN jsou zvýrazněny na čtvrtém řádku v záhlaví.
Ve skutečnosti tyto tři pakety, které se podílejí na třístupňovém ověření, obvykle neobsahují žádná data. Jakmile jsou ale počítače s ověřením hotovy, jsou připraveny přijímat pakety obsahující skutečná data.

Krok 2: Odesílání paketů dat

Když je paket dat odeslán přes TCP, musí příjemce vždy potvrdit, co obdržel.
Schéma dvou počítačů se šipkami mezi nimi.
  • První šipka směřuje z počítače 1 do počítače 2 a zobrazuje obdélník s binárními daty a popisek „Posloupnost #1“.
  • Druhá šipka směřuje z počítače 2 na počítač 1 s popiskem „ACK“.
První počítač odesílá paket s daty a pořadovým číslem. Druhý počítač to potvrzuje použitím ACK bitu a zvýšením potvrzovacího čísla o délku obdržených dat.
Pořadová a potvrzovací čísla jsou součástí TCP záhlaví:
Schéma záhlaví TCP s řádky a různými poli. Každý řádek je 32 bitů dlouhý. První řádek obsahuje 16 bitové číslo zdrojového portu a 16 bitové číslo cílového portu. Druhý řádek obsahuje 32 bitové pořadové číslo. Třetí řádek obsahuje 32 bitové potvrzovací číslo. Čtvrtý řádek obsahuje 4 bitové datové číslo "offsetu" dat, 6 bitů označených jako "rezervováno", 6 kontrolních bitů (URG, ACK, PSH, RST, SYN a FIN) a 16 bitové číslo velikosti okna. Pátý řádek obsahuje 16 bitový kontrolní součet a 16 bitový urgentní ukazatel. Záhlaví končí volbami a výplní, které mohou mít různou délku.
32 bitová pořadová a potvrzovací čísla jsou zvýrazněna.
Tato dvě čísla pomáhají počítačům udržovat přehled o tom, která data byla úspěšně přijata, která data byla ztracena a která data byla omylem poslána dvakrát.

Krok 3: Ukončení spojení

Jakýkoli z počítačů může spojení ukončit, když již nechce odesílat ani přijímat žádná data.
Schéma dvou počítačů se šipkami mezi nimi.
  • Šipka směřuje z počítače 1 do počítače 2 s popiskem "FIN".
  • Šipka směřuje z počítače 2 do počítače 1 s popiskem "ACK FIN".
  • Šipka směřuje z počítače 1 do počítače 2 s popiskem "ACK".
Počítač iniciuje uzavření spojení odesláním paketu s bitem FIN nastaveným na 1 (FIN = ukončení). Druhý počítač odpoví s ACK a dalším FIN. Po jednom dalším ACK od počátečního počítače je připojení uzavřeno.

Detekce ztracených paketů

TCP spojení může detekovat ztracené pakety pomocí časového limitu.
Schéma ukazující přeposílání paketu z jednoho počítače do druhého počítače. Šipka směřuje z prvního počítače na druhý počítač a je označena jako "posloupnost #1" a řetězec binárních dat. Stopky jsou zobrazeny v různých fázích po šipce, nejprve s uplynulým časem 0, pak uplynulou polovinou času, a pak ve stavu úplného uplynutí času ve stavu upozornění. Další šipka směřuje z prvního notebooku do druhého notebooku, označena stejně, jako ta první.
Po odeslání paketu spustí odesílatel časovač a umístí paket do fronty pro přeposílání. Pokud časovač vyprší a odesílatel ještě od příjemce ACK neobdržel, odešle paket znovu.
Přeposílání může vést k tomu, že příjemce obdrží duplicitní pakety, a to pokud se paket ve skutečnosti neztratil, ale jen dorazil velmi pomalu nebo byl pozdě oznámen. Pokud tomu tak je, příjemce může jednoduše duplicitní pakety smazat. Je lepší mít data dvakrát než vůbec!

Zpracování dat v nesprávném pořadí

TCP spojení můžou detekovat pakety v nesprávném pořadí použitím pořadových a potvrzovacích čísel.
Schéma dvou počítačů se šipkami mezi nimi.
  • Šipka směřuje z počítače 1 do počítače 2 a zobrazuje pole s binárními daty označenými "Posloupnost #1".
  • Šipka směřuje z počítače 2 do počítače 1 s popiskem "Ack #37".
  • Šipka směřuje z počítače 1 do počítače 2 zobrazuje pole s binárními daty označenými "Posloupnost #73".
  • Šipka směřuje z počítače 2 do počítače 1 s popiskem "Ack #37".
Pokud příjemce vidí vyšší pořadové číslo, než jaké dosud potvrdil, ví, že mu chybí alespoň jeden paket. Ve výše uvedené situaci příjemce vidí pořadové číslo #73, ale očekával pořadové číslo #37. Příjemce dává odesílateli vědět, že něco chybí a odesílá proto paket s potvrzovacím číslem nastaveným na očekávané pořadové číslo.
Někdy cestuje chybějící paket přes internet pomalejší trasou a dorazí s menším opožděním.
Schéma TCP paketů, které přicházejí v nesprávném pořadí. Jsou zobrazeny dva počítače se šipkami směřujícími tam a zpět, přičemž jejich vertikální umístění znázorňuje čas odeslání a přijetí:
  • Šipka označená "Posloupnost #1" začíná z počítače 1 a končí krátce nato u počítače 2.
  • Šipka označená "Ack #37" začíná z počítače 2 a končí krátce nato u počítače 1.
  • Šipka označená "Posloupnost #37" začíná z počítače 1 a končí až mnohem později u počítače 2.
  • Šipka označená "Posloupnost #73" začíná z počítače 1 a končí krátce na to u počítače 2 (před šipkou pro "Posloupnost #37").
  • Šipka označená "Ack #37" začíná z počítače 2 a končí krátce nato u počítače 1 (před šipkou pro "Posloupnost #37").
Někdy může být chybějící paket ztracený a odesílatel musí paket přeposlat.
Schéma TCP paketů, které přicházejí v nesprávném pořadí. Jsou zobrazeny dva počítače se šipkami směřujícími tam a zpět, přičemž jejich vertikální umístění znázorňuje čas odeslání a přijetí:
  • Šipka označená "Posloupnost #1" začíná z počítače 1 a končí krátce nato u počítače 2.
  • Šipka označená "Ack #37" začíná z počítače 2 a končí krátce nato u počítače 1.
  • Šipka označená "Posloupnost #37" začíná z počítače 1 a končí před dosažením počítače 2, s písmenem X znázorňujícím ztrátu paketu.
  • Šipka označená "Posloupnost #73" začíná z počítače 1 a končí krátce na to u počítače 2.
  • Šipka označená "Ack #37" začíná z počítače 2 a končí krátce nato u počítače 1.
  • Šipka označená "Posloupnost #37" začíná z počítače 1 a končí krátce nato u počítače 2.
V obou situacích se příjemce musí vypořádat s pakety v nesprávném pořadí. Příjemce může naštěstí použít pořadová čísla k opětovnému sestavení paketových dat ve správném pořadí.
Schéma přeskupení TCP dat.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Máš k tomuto tématu nějaké dotazy? Rádi ti je zodpovíme — zeptej se v sekci pro dotazy níže!

Chceš se zapojit do diskuze?

Zatím žádné příspěvky.
Umíš anglicky? Kliknutím zobrazíš diskuzi anglické verze Khan Academy.