CCNA Podle knihy VÝUKOVÝ PRŮVODCE Přípravou NA ZKOUŠKU 640-802
Úvod do protokolů TCP/IP - TCP
TCP (Transmission Control Protocol)
Protokol TCP (Transmission Control Protocol) přijímá od aplikací velké bloky dat a dělí je na segmenty. Každý segment očísluje a zařadí, aby cílový zásobník protokolu TCP mohl segmenty znovu uspořádat tak, jak to požaduje příslušná aplikace. Po odeslání těchto segmentů vyčká zásobník protokolu TCP (na vysílajícím hostiteli) na potvrzení relace virtuálního okruhu TCP přijímající strany a opakuje přenos těch paketů, které nebyly potvrzeny. Před tím, než přenášející hostitel v tomto modelu začne odesílat segmenty, kontaktuje zásobník protokolu TCP odesilatele odpovídající zásobník příjemce, aby bylo navázáno spojení. Vytvořená vazba se označuje jako virtuální okruh. Tento typ komunikace se označuje jako spojovaný (connection-oriented). Během počátečního navazování komunikace se obě vrstvy TCP dohodnou rovněž na objemu informací, které se budou předávat. Pak zásobník TCP příjemce odešle zpět potvrzení. Poté, co je vše předem domluveno, může probíhat spolehlivá komunikace. Protokol TCP je plně duplexní, spojovaný, spolehlivý a přesný, ale nastavení všech podmínek přenosu nad rámec kontroly chyb rozhodně není zadarmo. Protokol TCP je velmi komplikovaný a nepřekvapuje, že s ohledem na svou síťovou režii také poměrně nákladný. Vzhledem k tomu, že dnešní sítě jsou mnohem spolehlivější než kdysi, bývá tato zvýšená spolehlivost často zbytečná.
Formát segmentu TCP
Horní vrstvy pouze odesílají datové proudy protokolům na transportních vrstvách. Nyní si tedy ukážeme, jak protokol TCP segmentuje datový proud a připravuje jej pro internetovou vrstvu. Když datový proud přijme internetová vrstva, směruje segmenty v rámci datové sítě v podobě paketů. Segmenty zpracovává protokol hostitelské vrstvy přijímaj ícího hostitele, který datový proud rekonstruuje a předá aplikacím či protokolům vyšších vrstev. Formát segmentu TCP je znázorněn na obrázku 2.3. Schéma představuje různá pole v hlavičce paketu TCP. Hlavička TCP má délku 20 bajtů, případně až 24 bajtů včetně možností. Je nutné se seznámit s tím, co každé pole v segmentu TCP znamená:
Source port (Zdrojový port) - číslo portu aplikace na straně hostitele, která odesílá data. (Čísla portů si vysvětlíme dále v této sekci.)
Destination port (Cílový port) - číslo portu požadované aplikace v cílovém hostiteli.
Sequence number (Pořadové číslo) - číslo používané protokolem TCP, které umožňuje znovu uspořádat data ve správném pořadí nebo znovu přenést chybějící či poškozená data na základě procesu označovaného jako řazení paketů (sequencing).
Acknowledgement number (Číslo potvrzení) - následně očekávaný oktet TCP.
Header length (Délka hlavičky) - počet 32bitových slov v hlavičce TCP. Tato hodnota informuje o tom, kde začínají data. Délka hlavičky TCP (i v případě, že zahrnuje další možnosti) je celočíselným násobkem 32 bitů.
Reserved (Vyhrazeno) - vždy nastaveno na nulu.
Code bits (Kódové bity) - řídicí funkce, které slouží k navázání a ukončení relace.
Window (Okno) - velikost okna, které je příjemce ochoten přijmout. Udává se v oktetech. Checksum (Kontrolní součet) - hodnota CRC (cyclic redundancy check), protože protokol TCP nedůvěřuje nižším vrstvám a vše kontroluje. Hodnota CRC ověřuje hlavičku a datová pole.
Urgent (Naléhavé) - pole je platné pouze v případě, že je nastaven ukazatel Urgent v kódových bitech. V kladném případě tato hodnota udává posun oproti aktuálnímu pořadovému číslu (v oktetech), kde začíná první segment dat s nižší prioritou.
Options (Možnosti) - může se rovnat O nebo násobku 32 bitů, pokud se používá. To znamená, že nemusí být uvedena žádná možnost (pole Options má nulovou velikost). Jestliže se však v tomto poli používají jakékoli možnosti, které se v souhrnu nerovnají násobku 32 bitů, je nutné použít vyplnění nulami, aby data začínala na hranici násobku 32 bitů.
Data - předávají se směrem dolů protokolu TCP na transportní vrstvě a zahrnují hlavičky protokolů vyšší vrstvy.
Podívejte se na segment TCP zkopírovaný ze síťového analyzátoru:
TCP - Transp ort Control P r otocol
Source Port : 5973
Destinati on Port : 23
Sequence N u mbe r: 1 4 56389907
Ack Number: 1 2 42056456
Offset : 5
Reserved : %000000
Code : % 0 1 1 0 00
Ack is va l i d
Pus h Reques t
W indow : 613 20
Checksum: Ox6 1a6
Urgent Poi nter : 0
No TCP O p tio ns
TCP Data Area :
vL.5 .+.5.+. 5.+.5 76 4c 19 35 II 2b 19 35 II 2b 19 35 II
2 b 1 9 3 5 +. II 2b 19
F r ame Check Sequence : OxOdOOOOOf
Všimli jste si, že tento segment obsahuje vše, co bylo uvedeno v předchozím popisu? Jak je zřejmé z počtu polí v hlavičce, generuje protokol TCP značnou režii. Vývojáři aplikací se mohou rozhodnout, že kvůli snížení režie dají před spolehlivostí přednost efektivitě. Za tímto účelem byl jako alternativa na transportní vrstvě definován i protokol UDP (User Datagram Protocol).