Osnova přednášky Informační a řídicí systémy I. Úvod do počítačových sítí Pavel Balda ZČU v Plzni, FAV, KKY Motivace a historie Vrstvení protokolů referenční model ISO-OSI Rodina protokolů TCP/IP Formáty paketů IP, TCP a UDP Berkeley sockets Síťové komunikace v C# Příklad: TCP server a klient Doporučená literatura Anglicky: Comer D.: Internetworking with TCP/IP.. vydání, Prentice Hall, 000. ISBN 0-1-01880- *) RFC (Requests For Comments) Detailní informace o konvencích a síťových protokolech v Internetu. Volně dostupné na webu. Česky: Pužmanová R., Šmrha P.: Propojování sítí s TCP/IP. Kopp, České Budějovice, 1999. ISBN 80--080- *) Osterloh H.: TCP/IP kompletní průvodce. Softpress s.r.o., 00. ISBN 80-89--8 *) Dostálek, Kabelová: Velký průvodce protokoly TCP/IP a systémem DNS. Computer Press, 1999. ISBN 80--19- *) Jiří Peterka: Přednášky na MFF UK. Online: www.earchiv.cz *) tituly jsou k dispozici v univerzitní knihovně Motivace V současnosti jsou sítě nezbytnou a neustále rostoucí infrastrukturou podniků i institucí Rozvoj internetu urychluje vývoj nových technických prostředků (hardware) s cílem Zvyšování rychlosti přenosu kvůli zvyšování posílaného objemu dat Zvyšování komplexnosti sítí a jejich propojení Oblast řídicích a informačních systémů sleduje trend v oblasti obecné výpočetní techniky V současné době dochází k velmi rychlému zavádění síťových technologií do přímého řízení technologických procesů Různé verze deterministického ethernetu, Ethernet-Powerlink apod. => Existují dobré důvody pro úvod do počítačových sítí v tomto předmětu 1
Z historie sítí a Internetu Architektura sítě principy 199 Defense Advanced Research Project Agency zřizuje projekt "packet switching network" ARPANET 19 vznik nejvýznamnější aplikace internetu e-mailu (elektronické pošty) 19-9 Základy otevřené architektury propojování sítí TCP/IP 1980 Experimentální provoz TCP/IP v ARPANETu, implementace TCP/IP pod BSD (Berkeley Software Distribution) UNIX. Používání IP adres IPv 198 zavedení TCP/IP v ARPANETu, přenesení TCP/IP do komerční sféry (SUN Microsystems) 198-9 program NSFNET (National Science Foundation NET) sponzoroval rozvoj sítě $00 mil., první komerční služby na Internetu 199 vznik programu Mosaic předchůdce dnešních www prohlížečů 1998 ICANN (Internet Corporation for Assigned Names and Numbers) přebírá zodpovědnost za registraci doménových jmen Po r. 000 vznik deterministických verzí Ethernetu pro řídicí systémy současnost boom Internetu Komunikační protokol (nebo jen protokol) Souhrn pravidel, formátů a procedur určující výměnu dat mezi dvěma komunikujícími prvky Síťová architektura Struktura řízení komunikace, tj. souhrn řídicích činností Komunikace je složitý problém skládající s z celé řady na sebe navazujících dílčích úloh, tzv. vrstev Proto se hovoří o vrstvových architekturách Vrstva síťové architektury Je definována službou, kterou poskytuje sousední vyšší vrstvě a funkcí, vykonávanou v rámci protokolu Rozčlenění komunikace do vrstev umožňuje vyměnit protokol v rámci jedné vrstvy bez změn v ostatních vrstvách Síťová architektura je popsána systémem vrstev, služeb, funkcía protokolů Základní myšlenka organizace do vrstev Referenční model ISO-OSI (1/) Odesilatel Vrstva n Vrstva Vrstva 1 Síť Příjemce Vrstva n Vrstva Vrstva 1 Otevřenost síťové architektury Možnost připojení koncových zařízení k síti s jednotnou architekturou Důraz na otevřenost kladen od. Poloviny 0. Let Propojení otevřených systémů Open Systems Interconnection (OSI) Bylo standardizováno v ISO (International Organization for Standardization), vznik normy IS 98 v r. 198 Vznikl tzv. Referenční model ISO-OSI (nebo jen OSI) abstraktní model reálného otevřeného systému Norma uvádí všeobecné principy sedmivrstvé síťové architektury Účel vrstev, funkce každé vrstvy služby poskytované vyšší vrstvě, služby požadované od nižší vrstvy Norma nespecifikuje komunikační protokoly (vyžadují mnoho detailů); jsou specifikovány v navazujících normách a doporučeních 8
Referenční model ISO-OSI (/) Komunikace mezi systémy v modelu ISO-OSI 1 Aplikační vrstva (Application layer) Prezentační vrstva (Presentation layer) Relační vrstva (Session layer) Transportní vrstva (Transport layer) Síťová vrstva (Network layer) Spojová vrstva ( link layer) Fyzická vrstva (Physical layer) Zabezpečuje vlastní komunikaci mezi programy, zprostředkovává služby uživatelům. Př.: FTP Sjednocuje datový formát pro aplikační vrstvu, tj. provádí konverze formátu (např. znakových sad), kompresi, kódování atd. Zabezpečuje navázání spojení se vzdáleným OS a naopak jeho ochranu před neoprávněným přístupem. Př.: RPC Přenos dat po logickém spoji, tj. segmentuje data do paketů, opakuje data a naopak odstraňuje redundanci atd. Př.: TCP Správné směrování paketů po síti, tj. nalezení a indikaci cílového počítače pro spojovou vrstvu. Př.: protokol IP Přenos informace po fyzickém spoji, pracuje s vnějším obalem paketu s adresními a kontrolními informacemi Přenos signálů po fyzickém médiu (elektricky, opticky), zprostředkovává vyšším vrstvám rámce (frames, pakety). Př.: RSC 1 Vrstvové komunikační protokoly Koncový systém A Koncový systém B Aplikační vrstva Aplikační protokoly Aplikační vrstva Prezentační vrstva Prezentační protokoly Prezentační vrstva Relační vrstva Relační protokoly Relační vrstva Transportní vrstva Transportní protokoly Transportní vrstva Síťová vrstva Síťové protokoly Síťová vrstva Spojová vrstva Spojové protokoly Spojová vrstva Fyzická vrstva Fyzické protokoly Fyzická vrstva Fyzické médium (přímý spoj nebo LAN, MAN, WAN) 9 10 Služby mezi jednotlivými vrstvami Protokolové datové jednotky Entita je dále nedělitelný aktivní prvek (např. proces, úloha, apod.) Vrstvy mohou obsahovat několik entit Entity ve stejné vrstvě mohou plnit jak podobné tak i různé funkce Protokol definuje pravidla komunikace mezi entitami stejnolehlých vrstev Služby jsou vykonávány entitami pomocí primitiv: Žádost (request) generována entitou vrstvy n+1 (žadatel) Oznámení (indication) generuje protilehlá entita vrstvy n, upozorňuje svou entitu vrstvy n+1 na požadavek Odpověď (response) generuje protilehlá entita vrstvy n+1 Potvrzení (confirmation) generuje entita vrstvy n; potvrzení původního požadavku entity vrstvy n+1 Vrstva n+1 Koncový systém A Entita něco chce Koncový systém B Entita Žádost 1 Oznámení Vrstva n Entita Potvrzení Protokol vrstvy n Entita Odpověď 11 Protokolová datová jednotka (Protocol Unit, PDU) informace přenášená jako celek mezi komunikujícími entitami. PDU se skládá z: Záhlaví (hlavičky) s protokolovou řídicí informací (Protocol control information, PCI), která může obsahovat adresu Vlastních dat (nepovinná) Protokolové datové jednotky vyšší vrstvy jsou zapouzdřeny do protokolových datových jednotek sousední nižší vrstvy Viz obrázek na další straně V ISO-OSI modelu se pro první čtyři vrstvy nazývají: Streams ( proudy ) fyzická vrstva Rámce (frames) spojová vrstva Pakety (packets) síťová vrstva Segmenty (segments) transportní vrstva (pozor na mnohoznačnost pojmu segment!) 1
Zapouzdření PDU Rodina protokolů TCP/IP Koncový systém Aplikační vrstva Prezentační vrstva Relační vrstva Transportní vrstva Síťová vrstva Spojová vrstva Fyzická vrstva Vrstvová záhlaví Uživatelská data AZ PZ RZ TZ SZ SpZ SpZ Protokolové datové jednotky 1 Rodina protokolů TCP/IP (Transmission Control Protocol / Internet Protocol) Určena se pro komunikaci v heterogenní síti Používá ji celá řada světových sítí, souhrnně označovaná názvem Internet Základ pro celou řadu užitečných služeb, např. elektronická pošta, přenos souborů, rozsáhlé informační systémy Architekturu tvoří vrstvy (některé ze vrstev ISO-OSI jsou sloučené): Vrstva rozhraní sítě obvykle Ethernet Protocol s různým typem médií (koaxiální kabel, kroucená dvoulinka) Vrstva mezisíťová používá Internet Protocol (IP) a definuje způsob doručování dat mezi počítači. Zdrojový a cílový počítač nemusí být přímo spojené, proto IP zajišťuje i nalezení cesty (směrování) k cílovému počítači Transportní vrstva nejčastěji používá dva základní protokoly TCP a UDP (User gram Protocol) Aplikační vrstva obsahuje řadu známých protokolů, např. HTTP, FTP, TELNET, SNMP, DHCP, apod. 1 Model TCP/IP a ISO-OSI Hlavní protokoly architektury TCP/IP OSI Vrstva Protokoly v TCP/IP (příklady) NFS Aplikační Transportní FTP TCP XDR RPC UDP ICMP Internet IP ARP 1 Network interface Hardware Ethernet, FDDI, ATM, SLIP, X. 1 HTTP RFC1 port 80 FTP RFC99 p.0/1 TELNET RFC8 port SMTP RFC81 port Border Gateway Protocol (BGP) RFC11, číslo portu 19 DNS RFC10 port Transmission Control Protocol (TCP) RFC9, číslo protokolu Open Shortest Path First (OSPF) RFC8, číslo protokolu 89 Address Resolution Protocol (ARP) RFC8 TFTP RFC10 port 9 Internet Control Message Protocol (ICMP) RFC9, číslo protokolu 1 Internet Protocol (IP) RFC91 NTP RFC10 port 1 RPC RFC181 port 111 DHCP RFC11 p./ Routing Information Protocol (RIP) RFC108/1, číslo portu 0 User gram Protocol (UDP) RFC8, číslo protokolu 1 SNMP RFC11 p.11/1 Internet Group Management Protocol (IGMP) RFC, číslo protokolu Reverse Resolution Protocol (RARP) RFC90 Ethernet RFC89, Token Ring RFC 10, FDDI RFC 1188, Novell RFC1088, Arcnet RFC101, X. RFC1 1
Seznam zkratek v předchozím obrázku HTTP HyperText Transfer Protocol FTP File Transfer Protocol TELNET standardní protokol pro vzdálené terminálové služby SMTP Simple Mail Transfer Protocol DNS Domain Name System TFTP Trivial File Transfer Protocol NTP Network Time Protocol RPC Remote Procedure Call DHCP Dynamic Host Configuration Protocol SNMP Simple Network Management Protocol FDDI Fiber Distributed Interface síťová technologie založená na optických vláknech Podrobnosti k jednotlivým protokolům viz doporučená literatura Spojované a nespojované služby Spojované služby (connection-oriented) oriented) Obdoba telefonního spojení Zaručeno doručení datagramů ve správném pořadí (stream) Využívá se protokol TCP + Aplikace je jednodušší, ale nemůže řídit komunikaci Vnitřně komplikovaný protokol, proto má větší režii Nespojované služby (connectionless) Obdoba poštovního spojení Není zaručeno pořadí ani doručení datagramů Využívá se protokol UDP + Aplikace může lépe řídit komunikaci + Malá režie i při výpadku některého počítače Kontrolu konzistence musí provádět aplikace 1 18 Typy adresování MAC adresa (Media Access Control), též Ethernetová adresa Šestibajtová hardwarová adresa používaná ve spojové vrstvě, např. 00-0B-A-9E-0-8 někdy též zapisovaná jako 00:0B:A:9E:0:8 Měla by být jedinečná na celém světě, každý výrobce má svůj bajtový prefix Speciální adresa pro posílání zpráv všem (broadcast) je FF-FF-FF-FF-FF-FF IP adresa (IPv) Čtyřbajtová adresa přidělovaná poskytovatelem sítě v závislosti na topologii sítě, např. 1.8..1 Dá se rozdělit na adresu sítě (network address) a adresu počítače (host address) Adresa sítě určuje směrování paketů mezi jednotlivými sítěmi, celá adresa určuje cílový počítač Doménová adresa Hierarchická adresa pro lidskou komunikaci, např. cybernet.zcu.cz Je mnemonická, přiděluje se podle organizační struktury 0 gram v protokolu IPv (1/) Verze 8 1 1 0 8 Délka hlavičky Time to live (doba života) Identifikace Typ služby Protokol Příznaky Zdrojová IP adresa Cílová IP adresa Options (volitelné položky) Celková délka Offset fragmentu Kontrolní součet hlavičky Padding 19 0
gram v protokolu IPv (/) gram v protokolu IPv (/) Verze Verze IP protokolu, která vygenerovala datagram. Pro Ipv je Délka hlavičky v násobcích bitů (včetně délky options a jejich doplnění na násobky bitů). Nejsou-li použity optiony je rovna (* je 0 bajtů) Typ služby může určovat prioritu pro doručení Celková délka celková délka datagramu v bajtech (max., obvykle je však mnohem menší) Identifikace 1 bitová hodnota společná pro všechny fragmenty dané zprávy. Slouží ke správnému poskládání zprávy u příjemce Příznaky řídí fragmentování dané zprávy Offset fragmentu dojde-li k fragmentování, udává offset daného fragmentu od začátku zprávy v násobcích 8 bajtů Time to live udává, jak dlouho může datagram žít v počtů průchodů routery. Každý router snižuje hodnotu o 1. Když dosáhne nuly je datagram odstraněn Protokol kód protokolu z vyšší vrstvy. Např. 1 ICMP, IGMP, TCP, 1 UDP (kódy jsou uvedeny dekadicky). Kontrolní součet hlavičky obyčejný kontrolní součet hlavičky (ne dat!), která se rozdělí na 1 bitová slova a ta se sečtou. Pokud při předávání datagramu kontrolní součet hlavičky nesouhlasí, je datagram zahozen jako poškozený Zdrojová IP adresa bajtová IP adresa tvůrce datagramu. Routery, kterými datagram prochází obvykle tuto adresu nemění Cílová IP adresa bajtová IP adresa příjemce datagramu. Opět se nemění až do doručení na koncovou adresu Options v hlavičce datagramu mohou být přídavné informace. Jsou-li využity, je jejich délka vždy doplněna (Padding) na násobek bajtů data přenášená v datagramu. Obsahují buď celou zprávu z vyšší vrstvy nebo její fragment 1 Struktura segmentu TCP (1/) Struktura segmentu TCP (/) 0 8 1 1 0 8 Zdrojový port Cílový port Port je celé bajtové číslo, které identifikuje danou aplikaci (proces) na zdrojovém nebo cílovém počítači Offset Dat Sequence Number Acknowledgement Number Rezerva Příznaky Window (okno) Kontrolní součet Urgent Pointer Zdrojový port identifikuje vysílací port Cílový port identifikuje přijímací port Další položky slouží pro řízení a zabezpečení bezchybného přenosu dat Options (volitelné položky) Padding
Struktura paketu UDP Programování komunikací sockets 0 8 1 1 0 8 Zdrojový port Cílový port Délka Kontrolní součet Berkeley socket API (Application Programming Interface) Též známé jako BSD (Berkeley Software Distribution) socket API Toto programátorské rozhraní bylo vyvinuto na University of California v Berkeley pro usnadnění programování síťových komunikací v jazyku C pro systémy UNIX Varianta WinSock se používá i v systémech Windows Paket je mnohem jednodušší než u protokolu TCP, což umožňuje dosahovat s protokolem UDP větší výkon Architektura TCP aplikací Architektura UDP aplikací Klient socket Server socket Klient Server bind socket socket listen bind connect accept sendto recvfrom send recv recvfrom sendto recv send close close close close 8
Síťové komunikace v C# System.Net.Sockets Jmenný prostor poskytující implementaci Windows Sockets v řízeném kódu Podporuje i protokoly založené na IPv Základními třídami jsou: Socket implementuje rozhraní Berkeley sockets Umožňuje synchronní i asynchronní přenos dat celé řady protokolů TcpListener poskytuje jednoduché metody pro listen a accept, pracuje v synchronním (blokujícím) režimu TcpClient poskytuje jednoduché metody pro připojení, posílání a přijímání streamu dat (TCP) do/ze sítě v synchronním (blokujícím) režimu UdpClient poskytuje jednoduché metody pro posílání a přijímání datagramů UDP v synchronním (blokujícím) režimu 9 Příklad TCP serveru a klienta Vychází z příkladu A very basic TCP server written in C# viz http://www.codeproject.com/cs/internet/basictcpserver.asp Implementuje TCP server pracující asynchronně a tedy nevyužívající třídu TcpListener Dopsán jednoduchý klient Hlavní třídy jsou: ConnectionState uchovává informace o stavu připojení každého klienta a využívá třídu Socket pro čtení a zápis dat z/do klienta TcpServiceProvider abstraktní třída od které lze odvodit vlastní třídu pro rozebírání (parse) dat od klienta, jejich zpracovánía zasílánívýsledků TcpServer třída, která řídíproces navazováníspojení (accept) a spouštění příslušných metod třídy odvozené od TcpServiceProvider Funkce serveru je demonstrována na jednoduchém serveru, vracejícím zpět klientovi poslaná data (echo). Server data kumuluje, dokud se v datech neobjeví podřetězec <EOF>. Pak vše odešle zpět Příklad bude uveden na internetové stránce předmětu IŘS1 0 Adresování v protokolu IPv gram v protokolu IPv (1/) Teoretický počet adres v IPv je = 9 9 9 Velikost adresy v IPv se zvětšila na 18 bitů (1 bajtů) Obdobný zápis pomocí tečkové notace jako v IPv by byl velmi nepřehledný Adresy se zapisují hexadecimálně oddělené dvojtečkami, např.: 80B:D9D:DC8:0000:0000:FC:DC8:1FFF Úplná adresa, lze ji zkrátit (pro úsporu místa) následovně 80B:D9D:DC8:0:0:FC:DC8:1FFF Je možné ještě další zkrácení vypuštěním nul a nahrazením dvěma dvojtečkami :: 80B:D9D:DC8::FC:DC8:1FFF Dvojici dvojteček lze použít v zápisu jen jednou, pak se počet nul se dá dopočítat 1 0 8 1 1 0 8 Verze Traffic Class Flow Label Payload Length NextHeader Hop Limit Zdrojová IP adresa (18 bitů) Cílová IP adresa (18 bitů) 8
gram v protokolu IPv (/) Verze Verze IP protokolu, která vygenerovala datagram. Pro IPv je Traffic Class nahrazuje Typ služby (Type of Service) v IPv. Definuje však kvalitu služby (Quality of Service, QoS) Flow Label poskytuje další informace pro doručování v reálném čase, používá se např. pro video streamy Payload Length nahrazuje Total Length (celkovou délku) v IPv, udává však jen délku dat v bajtech, včetně rozšiřujících (extension) hlaviček Next Header nahrazuje položku Protokol a používá se ve dvou významech: má-li datagram rozšiřující hlavičky, identifikuje první rozšiřující hlavičku (následuje za touto hlavičkou) Jinak specifikuje číslo protokolu podobně jako v IPv (pozor na rozdíly v číslování) Hop Limit nahrazuje položku Time to Live, název lépe odpovídá významu (počtu průchodů routery) 9