Hlavní obsah
Informatika – Počítače a internet
Kurz: Informatika – Počítače a internet > Kapitola 3
Lekce 4: TCP protokolTransmission 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.
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 do 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í.
První počítač odesílá paket s bitem SYN nastaveným na (SYN = "synchronizovat?"). Druhý počítač odesílá zpět paket s bitem ACK nastaveným na (ACK = "potvrzení!") a bitem SYN nastaveným na . První počítač odpovídá s ACK.
Oba bity, SYN i ACK, jsou součástí záhlaví TCP:
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.
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í:
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.
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.
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.
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.
Někdy může být chybějící paket ztracený a odesílatel musí paket přeposlat.
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í.
🙋🏽🙋🏻♀️🙋🏿♂️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.