15. Transportní vrstva 4 - TCP
Opakování -
Teorie
- v IP sítích každý paket cestuje samostatně
(nezávisle na ostatních paketech) i v rámci jedné konverzace (sezení -
session) - obr.
- jinak řečeno pakety mohou cestovat různými cestami
ke stejnému cíli a tedy mohou dorazit v různém pořadí -
obr.
- vrstvy 1-3 nezajišťují, že příjemce dostane
všechny pakety a ani nezajišťují jejich správné
pořadí - to zajišťují vyšší vrstvy (správné
seřazení a kontrolu prezence) - obr.
- shrnutí vrstev - obr.
- UDP - negarantuje dodávku paketu, nechává to na vyšší vrstvy - viz
další dvouhodina
TCP - Transmission Control Protocol (RFC
793)
- zajišťuje spolehlivé doručení dat pomocí obousměrné
komunikace s příp. žádostí o nové poslání dat (analogie telefonního hovoru) -
obr.
- rozhodnutí o znovuposlání se provádí u příjemce na základě
kontroly chyb v datech (error checksum) nebo u odesílatele po
vypršení lhůty časovače (při neobdržení potvrzení příjmu od
příjemce)
- v té souvislosti TCP ovlivňuje rychlost toku dat
(když nestíhá přijímat data, požádá vysílajícího o znovuposlání)
- cenou za spolehlivost přenosu (negativní
důsledek) je zpomalení přenosu a větší zatížení sítě (při opakování
přenosu)
- umožňuje rozdělovat data pro různé aplikace (například webový server
a emailový server) běžící na stejném počítači - používá k tomu
čísla portů -
obr.
- umožňuje session multiplexing - jeden hostitel může
udržovat konverzaci (session = sezení) s více servery najednou -
obr. (viz např. webový prohlížeč)
- přenášená data mohou být rozdělena na menší jednotky (segmenty) -
TCP zajišťuje také seřazení do správného pořadí po doručení
(pomocí sequence number v TCP hlavičce) - obr.
- na max. velikost segmentů má vliv max. vel. IP datagramů na 3.
vrstvě (65535-TCP záhlaví), popř. max. vel. framů použité 2.
vrstvy (např. u Ethernetu je MTU 1500 bytů)
- Pozn. Rozdělování na menší jednotky na 4. vrstvě se říká
segmentace, na 3. vrstvě fragmentace
- umožňuje režim full duplex - hostitel může zároveň
přijímat i vysílat
Hlavička TCP segmentu (datové
jednotky na vrstvě TCP) -
wiki
- její velikost je násobkem 32 bitů (slov)
- 16 bitů pro zdrojový port (aplikaci) odesílatele,
16 bitů pro cílový port příjemce -
obr.
- 32 bitů pro pořadové číslo prvního bytu v datech
(sequence number) - obr. (u handshaku má jiné využití -
neposílají se data)
- 32 bitů pro potvrzovací číslo -
obr.
- používá se přo potvrzení příjmu
- velikost TCP hlavičky neboli offset dat (posunutí /
začátek dat) - jednotky jsou počty slov (words = 32 bitů) - umožňuje
zvětšení hlavičky o volitelnou část (Options) -
obr.
- 1-bitové příznaky (flags) - použití hlavně pro
handshake (SYN, ACK, FIN viz dále)
- Velikost okna (window size) - počet segmentů, které
vysílající pošle na jedno potvrzení od příjemce - viz dále
- 16 bitů kontrolní součet (checksum) pro kontrolu
úplnosti hlavičky i dat
- Data - zapouzdřená data vyšších protokolů
Navázání spojení klienta se serverem - 3 kroky (TCP 3-way handshake)
- Krok 1 - Klient odešle na server datagram s
nastaveným příznakem SYN(chronise)
a náhodně vygenerovaným pořadovým číslem (x) -
obr.
- Krok 2 - Server odpoví klientovi datagramem s
nastavenými příznaky SYN a ACK, potvrzovací číslo=x+1,
pořadové číslo (y) je náhodně vygenerované -
obr.
- Krok 3 - Klient odešle datagram s nastaveným
příznakem ACK, pořadové číslo=x+1, číslo odpovědi=y+1 -
obr.
- Ukončení spojení probíhá podobně jako jeho navázání
- používá se k tomu příznaků FIN a ACK -
wiki
Window size
- počet segmentů, které vysílající pošle na jedno potvrzení od
příjemce - obr. - viz hlavička výše
- čím větší je toto číslo, tím rychlejší je přenos, ale větší
nebezpečí nestíhání příjemce (přetečení bufferu) a nutnosti
znovuposílání - obr. pro 1, obr. pro 3
- výhodnější než konstatní číslo (fixed windows size) je používat
proměnnou velikost (sliding window size) - na počátku přenosu menší, pak
zvětšovat
Cvičení
- najít registrované porty pro vybrané aplikace -
www.iana.org
- příkaz netstat (příkazový řádek) - síťové statistiky -
www:
- netstat bez parametrů - výpis aktivních spojení
- netstat /? - nápověda
- netstat -n - výpis bez překladu názvů
- netstat -ano - výpis otevřených portů včetně PID
procesů (zjistit podle Správce úloh)
- netstat -aon | find /i "listening" - filtrování výpisu
- vypsat do souboru
- aplikace Sledování prostředků (resmon.exe)
- scanování sítě (otevřených portů zařízení v rámci LAN) - nmap
- Wireshark
- otevřít tcp_handshake.pcapng - navázání spojení
(handshake) - kontrola příznaků (rozkliknout je na bity, rozkliknout
i nastavený příznak), portů
- otevřít tcp_teardown.pcapng - ukončení spojení
- otevřít tcp_ports.pcapng - zjištění použitého protokolu
z IP hlavičky na vrstvě 3 - IP hlavička,
zjistit čísla protokolů TCP, UDP -
wiki, ověřit v paketu
- analýza TCP segmentu - hlavička podle předchozí teorie