Počítačové sítě 1 Přednáška č.6 Transportní vrstva
Osnova = Základní vlastnosti transportní vrstvy = Zodpovědnosti transportní vrstvy = Vlastnosti transportní vrstvy = Protokoly transportní vrstvy = TCP - Transmission Control Protocol = UDP User Datagram Protocol = Srovnání ostatních technologií transportní vrstvy ISO/OSI 7.Aplikační 6.Prezentační 5.Relační 4.Transportní 3.Síťová 2.Datová 1.Fyzická
Základní vlastnosti transportní vrstvy
Vlastnosti transportní vrstvy = Segmentace dělení aplikačních dat na menší díly (segmenty, datagramy) na straně odesílatele dat = Reassembling zpětné složení dat na straně příjemce dat = Identifikace aplikace pro kterou jsou data určena = Multiplexing - Umožňuje používat více aplikací komunikujících po síti v jednom časovém okamžiku = Zapoudření dat a přidání hlavičky s řídícími a kontrolními informacemi
Segmentace a reassembling = Před odesláním dělí souvislý datový tok (data flow) z aplikace do segmentů (segmentace) a po přijetí je opět sestavuje (reassembling) 7.Aplikační ISO/OSI 6.Prezentační Segmentace Souvislý tok dat (data flow) 5.Relační 4.Transportní H H DATA DATA H H DATA DATA Segmentovaná data 3.Síťová 2.Datová 1.Fyzická
Segmentace a reassembling = Před odesláním dělí souvislý datový tok (data flow) z aplikace do segmentů (segmentace) a po přijetí je opět sestavuje (reassembling) 7.Aplikační ISO/OSI 6.Prezentační Reassembling Souvislý tok dat (data flow) 5.Relační 4.Transportní 3.Síťová H H DATA DATA H H DATA DATA Segmentovaná data 2.Datová 1.Fyzická
Identifikace aplikace = Úkolem transportní vrstvy je identifikovat komunikace jednotlivých aplikací a předávat doručená data příslušné aplikaci = Adresace na transportní vrstvě pomocí čísel portů identifikuje jednotlivé konverzace = Číslo portu je 16-bitové - <0; 65535> = V hlavičce segmentu/datagramu transportní vrstvy se vždy nachází číslo zdrojového a cílového portu = Zdrojové číslo portu je spojeno se zdrojovou aplikací na vysílajícím počítači = Je při prvním požadavku komunikace náhodně vygenerováno z čísel portů, které jsou větší než 1023 = Cílové číslo portu je potom spojeno s cílovou aplikací, které data přijímá = Je pevně přiděleno dané aplikaci (službě, procesu, daemonu) a klientská stanice ho musí dopředu znát
Adresace pomocí portů = Přidělování portů je řízeno doporučeními organizace IANA = http://www.iana.org/assignments/service-names-port-numbers/service-names-portnumbers.xml Název skupiny portů Rozsah hodnot Přidělováno Cílový port Zdrojový port Well-known (dobře známe porty) Registered (registrované porty) Private / Dynamic (privátní / dynamické porty) <0;1023> Pro nejprivilegovanější procesy, přidělené tak, že je znají klientské stanice <1024;49151> Přidělované dynamicky, nyní již nedoporučované, ale přesto stále používané <49152;65535> Dynamicky přidělované pouze jako zdrojové porty
Příklady well-known portů = Příklady některých služeb využívající well-known porty Číslo portu Použitý protokol transportní vrstvy Služba / Aplikace 20 TCP FTP (data) 21 TCP FTP (řízení přenosu) 22 TCP SSH zabezpečené vzdálené připojení do systému 23 TCP Telnet emulace terminálu vzdáleného systému 25 TCP SMTP Simple Mail Transfer Protocol 53 TCP, UDP DNS Domain Name System 69 UDP TFTP Trivial File Transfer Protocol 80 TCP HTTP Hyper Text Transfer Protocol 443 TCP HTTPS HTTP Secured 520 UDP RIP (Routing Information Protocol)
Sockety = Sockety = Určují jednu konkrétní komunikaci konkrétních aplikací mezi konkrétními uzly = Jsou tvořeny IP adresou uzlu a číslem portu na kterém naslouchá komunikující aplikace (zdrojového portu) = Např. 192.168.100.124:80 = V OS Windows je možné zobrazit aktuálně použité sockety příkazem netstat socket
Stavy socketů = Socket se může nacházet v několika možných stavech Název stavu LISTEN ESTABLISHED TIME_WAIT CLOSE_WAIT SYN_SENT SYN_RECEIVED Popis stavu Lokální zařízení čeká na požadavek na připojení (spojení) nějakého vzdáleného zařízení Socket je otevřen, data mohou být vyměňována pomocí tohoto spojení. Toto je normální stav socketu ve fázi přenosu dat. Lokální socket čeká implicitní časovou periodu, potom co odeslalo požadavek na ukončení, před tím než se uzavře. V normálním stavu bude trvat mezi 30 120 sekundami. Socket je uzavřen, ale čeká na požadavek na ukončení od lokálního uživatele. Lokální socket čeká na odpověď po odeslání požadavku na vzdálený socket. Socket by měl přejít přes tento přechodový stav velmi rychle. Lokální socket čeká na požadované potvrzení vzdáleného socketu. Mnohonásobné sockety ve stavu SYN_RECEIVED mohou indikovat útok typu SYN Flooding.
Protokoly transportní vrstvy
Protokoly transportní vrstvy = Existuje množství protokolů transportní vrstvy = Jsou rozdílné zejména v různých poskytovaných vlastnostech = Využití konkrétního protokolu závisí na potřebách provozované aplikace = Mezi nejpoužívanější protokoly patří = TCP funguje spojovaně a spolehlivě, pozměňuje původní vlastnosti IP protokolu (vhodné pro typ služeb vyžadující vysokou spolehlivost přenosu) = UDP funguje nespojovaně a nespolehlivě (vhodné pro datově náročné přenosy s tolerancí nespolehlivosti) = Další možné protokoly RTP, RTCP, SCTP, RTSP, RVSP zajišťující obvykle specifické požadavky aplikací na přenos v reálném čase (multimédia, videokonference, VoIP...)
Transmission Control Protocol
Transmission Control Protocol = TCP Transmission Control Protocol = PDU jednotka je označována jako segment = Definován v dokumentu RFC 793 (v roce 1981) = http://www.ietf.org/rfc/rfc793.txt = Spojový protokol před samotným odesláním dat je navázáno spojení (three way handshake) s transportní vrstvou na cílové stanici. Spojení je také před finálním ukončením komunikace ukončeno dohodou. = Spolehlivý protokol do hlavičky každého segmentu vkládá pořadové číslo segmentu a příjemce pak zpětně potvrzuje (acknowledment) přijetí určitého bloku těchto segmentů. Nepotvrzené segmenty jsou odeslány znovu. = Spojovost a spolehlivost však zvyšuje režii tohoto protokolu = Je potřeba více řídících informací (= větší hlavička segmentu, více dat na síti) = Před spojením je potřeba dohodnout spojení a to zpomaluje komunikaci = Potvrzování segmentů zatěžuje síť a snižuje tak její propustnost
Hlavička TCP protokolu
Hlavička TCP protokolu = Source port zdrojový port, 16-bitů = Destination port cílový port, 16-bitů = Identifikuje cílovou aplikaci nebo protokol vyšší vrstvy = Sequence number 32 bitů = Je pořadové číslo prvního bajtu TCP segmentu v toku dat od odesílatele k příjemci = 32-bitů, <0; 2 32-1>, pokud překročí horní hranici pokračuje cyklicky od 0 = Počáteční hodnota je náhodně vygenerovaná z uvedeného intervalu = Acknowledgement number 32 bitů = Potvrzuje přenos bajtů. Obsahuje pořadové číslo prvního bajtu očekávaných aplikačních dat v dalším segmentu. = Dopředné potvrzování. Pokud dostanu ACK=32, znamená to, že očekávám segment se sekvenčním číslem 32. = Data offset 4 bity = Délka hlavičky v čtyřbajtech (32-bitových slov)
Hlavička TCP protokolu = Reserved = Rezervováno pro budoucí využití = Flags příznaky, které řídí správu relace (jednobitová pole) = SYN požadavek na synchronizaci nebo vytvoření relace před přenesením aplikačních dat = ACK potvrzení přijatých dat od příštího očekávaného bajtu = FIN ukončení spojení = RST odmítnutí požadovaného spojení nebo reset stávajícího spojení = URG urgentní, prioritní = PSH označení, že segment nese aplikační data, která mají být předána aplikaci. Použití tohoto příznaku není ustáleno. = Window size 16 bitů = Kolik bajtů je posíláno na jedno potvrzení = Zároveň určuje minimální velikost vstupní vyrovnávací paměti na straně příjemce = Checksum 16 bitů = Kontrolní součet hlavičky a aplikačních dat = Urgent pointer 16 bitů = Ukazuje na první bajt prioritních dat
Spojovost protokolu TCP = Před prvním odesláním dat je nejprve navázáno spojení s transportní vrstvou cílového uzlu metodou Three-way handshake 2) 1) 3) SERVER Klient vygeneruje odpoví také segmentem vygeneruje náhodné s náhodné číslo nastaveným (361), číslo (1281), které ACK bitem použije které na použije jako 1 (ACK=1), startovací jako startovací se sekvenční svým původním pořadové sekvenčním číslo pořadové číslem (SEQ=361) +1 číslo (SEQ=362) (SEQ=1281) odesílaného a s bajtu; odesílaného vytvoření Acknowledgement startovacího bajtu; vytvoření number pořadového jako startovacího se čísla pořadového odesílaného sekvenčním čísla číslem bajtu odesílaného označí serveru v TCP navýšeným bajtu segmentu označí o v TCP nastavením jedničku segmentu (ACKN=1282). příznaku nastavením SYN=1 příznaku SYN=1 příznak ACK nastaví na 1 (ACK=1) a jako Acknowledgement number použije sekvenční číslo Tímto přijaté je navázáno od klienta spojení inkrementované a stanice o jedničku můžou posílat (ACKN=362) aplikační data. SYN_SENT ESTABLISHED Klient port 1485 SYN=1 SEQ=361 SYN=1 ACK=1 SEQ=1281 ACKN=362 ACK=1 SEQ=362 ACKN=1282 Server port 80 LISTEN SYN_RCVD ESTABLI- SHED
Spojovost protokolu TCP = Pro ukončení spojení (pro každý jeho směr) se používá FOUR WAY HANDSHAKE v poli Flags je nastaven příznak FIN (Finish), který musí být druhou stranou potvrzen (ACK). 3) 4) 2) 1) Server Klient potvrdí odešle také odpoví odešle na ukončení segmentem server spojení segment s s ACK FIN segmentem s bitem FIN nastaveným s bitem ACK nastaveným bitem nastaveným 1, 1 (ACK=1). aby 1. oznámil (FIN=1) na 1. ukončení (ACK=1) spojení. FIN_SENT Klient port 1485 FIN=1 SEQ=361 Server port 80 ESTABLI- SHED ACK=1 FIN_RCVD FIN=1 FIN_SENT FIN_RCVD ACK=1 CLOSED CLOSED
TCP spolehlivý protokol = Jednou z funkcí TCP protokolu je zajištění, že veškeré odeslané segmenty dorazí do cíle. = Každý odeslaný segment obsahuje v hlavičce pole SN (Sequence Number) což je pořadové číslo prvního bajtu v daném segmentu. = Příjemce potvrzuje přijetí segmentu pomoci pole Acknowledgment number což je číslo následujícího očekávaného bajtu. = Ppříjemce potvrzuje správné přijetí všech bajtů do hodnoty tohoto pole mínus 1. Hodnota pole Acknowledgment number je pak obsažena v poli SN následujícího odeslaného segmentu
TCP spolehlivý protokol = Aby se nemuselo potvrzovat přijetí každého segmentu zvlášť což by způsobovalo nárůst přenášených řídících dat přes síť existuje možnost odeslat několik segmentů, bez čekání na jejich potvrzení = Množství odeslaných dat v segmentech (bez nutnosti potvrzení) je dáno hodnotou pole WINDOWS SIZE = Optimalizací této hodnoty pro každé konkrétní spojení, je možné zvýšit rychlost přenosu = Hodnota Windows size je měněna příjemcem (serverem), podle aktuálních parametrů přenosu = Pokud jsou časté výpadky je zmenšena = Pokud se výpadky téměř nevyskytují, je možné ji zvětšit = Tato vlastnost se nazývá řízení toku dat (flow control)
User Datagram Protocol
User Datagram Protocol = UDP User Datagram Protocol = PDU jednotka je označována jako datagram = Definován v dokumentu RFC 768 (v roce 1980) = http://www.ietf.org/rfc/rfc768.txt = Nespojový protokol před odesláním dat nevytváří žádné spojení, neřídí ho ani neukončuje. Pokud přijme od aplikační vrstvy data k odeslání, segmentuje je a odesílá = Nespolehlivý protokol nepoužívá sekvenční čísla ani potvrzování. To vede k možné ztrátě dat. Tento problém neřeší, ale přenechává protokolům vyšší vrstvy (pokud je to potřebné). = Nespojovost a nespolehlivost velmi snižuje režii tohoto protokolu = Ke svému fungování potřebuje minimální množství řídících informací (= malá hlavička a menší objem dat vyslaných na síť) = Tím, že se nezdržuje vytvářením spojení, doručí data rychleji = Nepotvrzováním snižuje velikost dat putující sítí a tím zvyšuje její propustnost
Hlavička UDP protokolu = Source port zdrojový port, 16-bitů = Destination port cílový port, 16-bitů = Identifikuje cílovou aplikaci nebo protokol vyšší vrstvy = Length 16-bitů = Vyjadřuje délku datagramu (UDP hlavičky + aplikačních dat) = Checksum 16 bitů = Kontrolní součet hlavičky a aplikačních dat
Vlastnosti UDP protokolu = UDP hlavička neobsahuje informaci o pořadí datagramu, tudíž na straně příjemce nedochází ke znovusložení dat ve správném pořadí (reassembling) = Využití má pro služby a protokoly, které preferují rychlost komunikace na úkor ztráty části dat nebo nedodržení pořadí složení datagramů do výstupního proudu dat například u IP telefonie (VoIP) nebo u streamování videa = Mezi aplikační protokoly, využívající UDP patří např. = DNS (Domain Name Systém) = DHCP (Dynamic Host Configuration Protocol) = RIP (Routing Information Protocol) = TFTP (Trivial File Tranfer Protocol)
Srovnání ostatních technologií transportní vrstvy
Ostatní L4 protokoly = Existují i další protokoly procující na transportní vrstvě, většinou používané pouze úkzkou skupinou aplikací = UDP Lite = UDP ochuzené o checksum kontrolu = Raději doručí poškozená data než žádná = Využívají ho moderní aplikační protokoly a kodeky pro VoIP = RFC 3828 - http://tools.ietf.org/html/rfc3828 = SCTP - Stream Control Transmission Protocol = Kombinace vlastností TCP (spolehlivost) a UDP (nespojovost) = RFC 4960 - http://tools.ietf.org/html/rfc4960 = DCCP - Datagram Congestion Control Protocol = Obecně podobný protokolu UDP doplněný o jednoduché potvrzování a kontrolu přehlcení síťe = RFC 4340 - http://tools.ietf.org/html/rfc4340 = RUDP - Reliable User Datagram Protocol = Obecně podobný protokolu UDP doplněný o znovuodesílání nedoručených datagramů a ochranu proti overbufferingu = Verze 1 RFC 908 - http://tools.ietf.org/html/rfc908 = Verze 2 RFC 1151 - http://tools.ietf.org/html/rfc1151
Děkuji za pozornost