UDP TCP Rozhraní služeb Rozhraní protokolů 17 6 ICMP IGMP OSPF 01 02 89 SAP Síťová vrstva IP Rozhraní přístupu k I/O ARP Ethernet driver RARP Vrstva síťového rozhraní 1
DATA Systém A Uživatel transportní služby Aplikační vrstva Systém B Uživatel transportní služby DATA Služby poskytované uživateli transportu dat Transportní entita transport dat Transportní entita DATA Služby požadované od síťové vrstvy DATA Síťová vrstva 2
poskytuje službu aplikační vrstvě Je nejnižší vrstvou, na kterou se odvolávají síťové aplikace (uživatelské a systémové) Transportní služba sekvenční přenos dat mezi komunikujícími procesy Vytváří současně více paralelních transportních spojení zahrnuje 2 transportní protokoly UDP (User Datagram Protocol) TCP (Transmission Control Protocol) Transportní protokoly jsou prostředkem, kterým se zajistí pro uživatelskou aplikaci spojení dvou počítačů v IP síti 3
Přístup k transportní vrstvě z vrstvy aplikační rozhraní služeb Multiplexing transportních služeb a IP služby Aplikační protokol 2 Aplikační protokol 4 Aplikační protokol 6 Aplikační protokol 1 Aplikační protokol 3 Aplikační protokol 5 Aplikační protokol 7 porty UDP TCP IP 4
Rozhraní SAP mezi aplikační a transportní vrstvou rozhraní služeb identifikace aplikačního protokolu, který bude transportní službu používat Číslo portu 16 bitová proměnná Port SAP transportní vrstvy vstup do user-end systému Ze strany user-end systému je port schránka na obsah transportního PDU číslo portu určuje proces, který generuje data (směr out ) nebo je spotřebitelem dat (směr in) Soket (socket) IP adresa user-end systému + číslo portu jednoznačný identifikátor poskytovatele/spotřebitele 5 transportovaných dat v internetu (tj. síťového procesu)
Port Číslo portu dekadické vyjádření 1 65535 Adresový prostor portů spravuje IANA (Internet Assigned Numbers Authority) pevně dané hodnoty pro poskytovatele určitých síťových služeb (tj. procesy typu server ) Oblast 1 1023 well-known porty pro známé síťové služby Oblast 1024 65635 možná registrace pro firemní vývoj, použití apod., jinak k disposici operačním systémům (přidělování procesům typu klient spotřebitelům síťových služeb) porty alokované 6
Klient Počítačové sítě Server X 1025 23 A Y Z 1025 1028 1025 Klienti používají alokované systémem dočasně přidělené porty 23 B Servery používají well-known porty, na kterých očekávají ( naslouchají ) inicializační zprávy klienta. Typicky procesy daemon v OS UNIX 7
- protokoly Protokol UDP Služba nespojovaná (connection-less) nespolehlivá, transport nelze řídit Velmi efektivní rychlá, malá provozní režie Používá se pro aplikace s malým objemem přenášených dat (zprávy se stanovenou velikostí apod.) pro aplikace vyžadujících broadcast nebo multicast pro aplikace, které si správnost datových přenosů samy zabezpečí 8
Typický spotřebitel transportní služby UDP - programy pro systémové síťové služby šíření směrovacích informací implementace protokolu RIP šíření systémových hodin implementace protokolu NTP překlady doménových jmen implementace protokolu DNS správa IP sítí implementace protokolu SNMP aj. 9
- protokol UDP Formát PDU protokolu UDP UDP datagram (UDP paket) UDP záhlaví UDP data 0 15 16 31 Zdrojový port Délka paketu Cílový port Checksum Checksum kontrolní součet UDP paketu + UDP pseudozáhlaví 0 15 16 31 Zdrojová IP adresa Cílová IP adresa 0 Protokol Délka paketu 10
UDP paket v IP datagramu 20B 8B IP záhlaví UDP záhlaví UDP data (PDU aplikačního protokolu) typicky je jeden UDP paket vysílán v jednom IP datagramu 11
Protokol TCP Služba spojovaná (connection- oriented), spolehlivá Typ služby - PAR (Positive Acknowledgement with Retransmission) Zajistí doručení datových segmentů ve stejném pořadí, v jakém byly odeslány s vyloučením ztráty, bitové nesprávnosti a duplicity Protokol TCP Vytvoří mezi komunikujícími procesy (jejich porty) virtuální osmibitový full-duplex komunikační kanál Pojem: TCP spojení dvojice komunikujících soketů 12
Typicky používají transportní službu TCP uživatelské síťové aplikace (přenos souborů mezi síťovými uzly FTP, relace přes síťový terminál TELNET, přístup ke zdrojům systému WWW HTTP, předávání elektronických poštovních zpráv SMTP, atd.) Komunikace mezi procesy probíhá ve fázích 1. vytvoření spojení 2. řízený přenos proudu dat (sekvence datových segmentů) s eventuálním opakovaném odesláním nekorektně přijatých segmentů 3. ukončení spojení 13
Přístup k transportní vrstvě z vrstvy aplikační rozhraní služeb Multiplexing transportních služeb a IP služby RIP DNS TELNET HTTP SNMP RTP SMTP FTP porty UDP TCP IP 14
Formát TCP záhlaví Offset Zdrojový port Počítačové sítě 0 15 16 31 Cílový port Pořadové číslo Sequence Number Pořadové číslo potvrzení Acknowledgement Number --- Checksum Řídící bity TCP volby (Options) Window Size Urgent Pointer TCP data 15
Sequence Number (SN) je-li nastaven flag SYN, potom je SN počáteční číslo sekvence (ISN Initial Sequence Number) není-li nastaven flag SYN, potom je SN pořadové číslo prvního datového oktetu v segmentu (vzhledem k celé sekvenci přenášených dat v rámci tohoto TCP spojení) Acknowledgement Number (ACKN) potvrzovací číslo musí být vysíláno během celého TCP spojení představuje SN následujícího segmentu (tj. který je očekáván) (viz protokol Positive Acknowledgement with Retransmission) Data Offset = délka záhlaví = počátek dat (udáváno ve slovech - 4 oktety) 16
Řídící bity Flags 10 15 Řídící bity URG ACK PSH RST SYN FIN URG určuje platnost pole URGENT POINTER ACK - určuje platnost pole ACKN PSH oznamuje, že segment obsahuje data, která se mají bezprostředně předat cílovému procesu RST vyvolá reset TCP spojení SYN iniciuje TCP spojení, vyvolá proces synchronizace, tj. výměnu SN obou stran FIN iniciuje ukončovací proces TCP spojení (zpravidla v případě konce sekvence dat) 17
Window Size určuje velikost sliding window max. 65535 (počet oktetů, které je možno přenést bez ACK) Checksum kontrolní součet (včetně TCP pseudozáhlaví viz. UDP pseudozáhlaví) Urgent Pointer specifikuje offset posledního oktetu urgentních dat (spolu s řídícím bitem URG) TCP volby pole proměnné délky (dorovnává se na hranici 2 oktetů) Typ Délka Data Maximum segment size (2, 4) udává maximální možnou velikost segmentu přenášeného v rámci TCP spojení (max. 65535 B) Window Scale Factor (3, 3) umožní zvětšení velikosti plovoucího okna (65 535 x 2 14 ) Timestamp (8, 10) nastavení časových známek na každý přenášený segment pro měření RTT 18
TCP spojení: socket A socket B Příklad: 195.178.78.10.22-195.178.80.140.10500 služba SSH: server klient TCP spojení dynamický objekt v definovaném stavu Stav TCP spojení určuje jeho předchozí stav a časově závislá událost předání řídící informace spojení (TCP protokol) příkaz aplikace (požadavek na spuštění služby, požadavek na přenos dat aplikace, požadavek na ukončení přenosu dat aplikace) V OS Unix TCP spojení obsluhuje jádro Parametr jádra maximální počet otevřených TCP spojení Tabulky TCP spojení (datové struktury) utilita netstat 19
Aplikace TCP/UDP TCP/UDP aplikace server X klient X server Y klient Z klient W T C P Porty Well-known alokovaný T C P server Z klient Y server J server K klient J U D P U D P klient K 20
Mechanismy řízení TCP spojení Synchronizace komunikujících stran ve fázi inicializace (otevírání) TCP spojení si strany vymění svá počáteční sekvenční čísla (ISN Initial Sequence Number). Posloupnost přijímaných segmentů TCP PDU (segmentů) PAR strana potvrzuje korektní přijetí předchozích segmentů pořadovým číslem segmentu následujícího, tzn. ack B = seq A + 1 a seq B = ack A 1 Řízení toku zamezení zahlcení virtuálního kanálu metoda Sliding Window postupné zvyšování velikosti strana přijímací data aplikace určuje maximum při velikosti okna = 0 spojení zůstává otevřené 21
Stavy TCP spojení při normálním průběhu otevírání Klient Server (active open) SYN_SENT SYN seq J LISTEN (passive open) SYN_RCVD SYN seq K, ack J+1 ESTABISHED ack K+1, seq J + 1 22
Klient Server Klient Server ESTABISHED seq K+1 ack J+1 seq J+1 ack K+2 seq K+2 ack J+2 seq J+2 ack K+3 S A 1 3 2. 3. 4 4 5 5 ESTABISHED seq 2 ack 1 S A 3 2 4 3 5 4 Jednoduché potvrzování Řízení Sliding Window (= 23 3)
Stavy TCP spojení při normálním průběhu uzavírání Klient Server (active close) FIN_WAIT_1 FIN seq M CLOSE_WAIT (passive close) FIN_WAIT_2 ack M+1 TIME_WAIT FIN seq N LAST_ACK ack N+1 CLOSED 24
Přechodový diagram stavů TCP spojení 25