Osnova přednášky n
Informační a řídicí systémy I.
n
Úvod do počítačových sítí
n n n
Pavel Balda ZČU v Plzni, FAV, KKY
n
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# n
Příklad: TCP server a klient
2
Doporučená literatura n
Anglicky: n
n
n
Motivace n
Comer D.: Internetworking with TCP/IP. 4. vydání, Prentice Hall, 2000. ISBN 0-13-018380-6 *) RFC (Requests For Comments) – Detailní informace o konvencích a síťových protokolech v Internetu. Volně dostupné na webu.
n
Česky: n
n
n
n
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 n
Pužmanová R., Šmrha P.: Propojování sítí s TCP/IP. Kopp, České Budějovice, 1999. ISBN 80-7232-080-7 *) Osterloh H.: TCP/IP kompletní průvodce. Softpress s.r.o., 2003. ISBN 80-86497-34-8 *) Dostálek, Kabelová: Velký průvodce protokoly TCP/IP a systémem DNS. Computer Press, 1999. ISBN 80-7226-193-2 *) Jiří Peterka: Přednášky na MFF UK. Online: www.earchiv.cz
n
n
n
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ů n
*) tituly jsou k dispozici v univerzitní knihovně
n
3
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í
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 4
1
Z historie sítí a Internetu n
n n n
n
n
n n
Architektura sítě – principy
1969 – Defense Advanced Research Project Agency zřizuje projekt "packet switching network" – ARPANET
n
1972 – vznik nejvýznamnější aplikace internetu – e-mailu (elektronické pošty) 1973-79 – Základy otevřené architektury propojování sítí TCP/IP
n
1980 – Experimentální provoz TCP/IP v ARPANETu, implementace TCP/IP pod BSD (Berkeley Software Distribution) UNIX. Používání IP adres – IPv4
n
1985-95 – program NSFNET (National Science Foundation NET) sponzoroval rozvoj sítě $200 mil., první komerční služby na Internetu
n
n
1992 – vznik programu Mosaic – předchůdce dnešních www prohlížečů
Po r. 2000 – vznik deterministických verzí Ethernetu pro řídicí systémy
n
současnost – boom Internetu
n
n
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 n
1998 – ICANN (Internet Corporation for Assigned Names and Numbers) přebírá zodpovědnost za registraci doménových jmen
Souhrn pravidel, formátů a procedur určující výměnu dat mezi dvěma komunikujícími prvky
Síťová architektura n
1983 – zavedení TCP/IP v ARPANETu, přenesení TCP/IP do komerční sféry (SUN Microsystems)
n
Komunikační protokol (nebo jen protokol) n
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ů
5
6
Základní myšlenka organizace do vrstev
Referenční model ISO-OSI n
Odesilatel
Příjemce
Vrstva n
Vrstva n
…
…
Vrstva 2
Vrstva 2
Vrstva 1
Vrstva 1
Otevřenost síťové architektury n n
n
n
n n
7
Bylo standardizováno v ISO (International Organization for Standardization), vznik normy IS 7498 v r. 1984 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 n
Síť
Možnost připojení koncových zařízení k síti s jednotnou architekturou Důraz na otevřenost kladen od 2. Poloviny 70. Let
Propojení otevřených systémů – Open Systems Interconnection (OSI) n
n
(1/2)
Úč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
2
Referenční model ISO-OSI 7
Aplikační vrstva (Application layer)
vrstva 6 Prezentační (Presentation layer) (Session layer)
vrstva 4 Transportní (Transport layer)
Koncový systém A
Sjednocuje datový formát pro aplikační vrstvu, tj. provádí konverze formátu (např. znakových sad), kompresi, kódování atd.
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
3
Síťová vrstva
2
Spojová vrstva
Přenos informace po fyzickém spoji, pracuje s vnějším obalem paketu s adresními a kontrolními informacemi
1
Fyzická vrstva
Přenos signálů po fyzickém médiu (elektricky, opticky), zprostředkovává vyšším vrstvám rámce (frames, pakety). Př.: RS232C
(Network layer)
(Data link layer) (Physical layer)
Komunikace mezi systémy v modelu ISO-OSI
Zabezpečuje vlastní komunikaci mezi programy, zprostředkovává služby uživatelům. Př.: FTP
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
Relační vrstva
5
(2/2)
7
Aplikační vrstva
6
Prezentační vrstva
5
Relační vrstva
4
Transportní vrstva
3
Síťová vrstva
2
Spojová vrstva
1
Fyzická vrstva
Vrstvové komunikační protokoly
Koncový systém B
Aplikační protokoly Prezentační protokoly Relační protokoly Transportní protokoly Síťové protokoly
Aplikační vrstva Prezentační vrstva Relační vrstva Transportní vrstva
Spojové protokoly Fyzické protokoly
Síťová vrstva Spojová vrstva Fyzická vrstva
Fyzické médium (přímý spoj nebo LAN, MAN, WAN)
9
10
Služby mezi jednotlivými vrstvami n
Entita je dále nedělitelný aktivní prvek (např. proces, úloha, apod.) n n n
n
Protokolové datové jednotky n
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: n n
n n
Vrstva n+1
Entita
Žádost 1 Vrstva n
n
Žá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
Koncový systém A
„něco chce“
Koncový systém B
Entita
n
n
Entita
n
Odpověď
n n
Entita 11
Viz obrázek na další straně
V ISO-OSI modelu se pro první čtyři vrstvy nazývají: n
3
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 n
n
Oznámení 2 4 Potvrzení Protokol vrstvy n
Protokolová datová jednotka (Protocol Data Unit, PDU) – informace přenášená jako celek mezi komunikujícími entitami. PDU se skládá z:
Streams („proudy“) – fyzická vrstva Rámce (frames) – spojová vrstva Pakety (packets) – síťová vrstva Segmenty (segments) – transportní vrstva (pozor na mnohoznačnost pojmu segment!) 12
3
Zapouzdření PDU
Rodina protokolů TCP/IP n
Vrstvová záhlaví
Uživatelská data
Koncový systém
Rodina protokolů TCP/IP (Transmission Control Protocol / Internet Protocol) n
Aplikační vrstva
AZ
Data
n n
Prezentační vrstva
PZ
Data n
Relační vrstva
RZ
Transportní vrstva
Fyzická vrstva
n
Data
SZ
Spojová vrstva
Architekturu tvoří 4 vrstvy (některé ze 7 vrstev ISO-OSI jsou sloučené):
Data
TZ
Síťová vrstva
n
Data
SpZ
n
Data
SpZ
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
n
Data
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 Datagram Protocol) Aplikační vrstva – obsahuje řadu známých protokolů, např. HTTP, FTP, TELNET, SNMP, DHCP, apod.
Protokolové datové jednotky 13
14
Model TCP/IP a ISO-OSI OSI
Vrstva
Aplikační
HTTP
Protokoly v TCP/IP (příklady)
7 6
Hlavní protokoly architektury TCP/IP
FTP
5
TELNET SMTP
DNS
TFTP
NTP
RPC
DHCP
SNMP
NFS
Border Gateway Protocol (BGP) RFC1771, číslo portu 179
RFC1058/1723, číslo portu 520
XDR
Transmission Control Protocol (TCP)
User Datagram Protocol (UDP)
RFC793, číslo protokolu 6
RFC768, číslo protokolu 17
RPC TCP
FTP
RFC2616 RFC959 RFC854 RFC821 RFC1035 RFC1350 RFC1305 RFC1831 RFC2131 RFC1157 port 80 p.20/21 port 23 port 25 port 53 port 69 port 123 port 111 p.546/547 p.161/162
UDP
Open Shortest Path First (OSPF)
4
Transportní
3
Internet
2
Network interface
Ethernet, FDDI, ATM, SLIP, X.25
1
Hardware
–
ICMP
IP
RFC2328, číslo protokolu 89
ARP
Routing Information Protocol (RIP)
Internet Control Message Protocol (ICMP) RFC792, číslo protokolu 1
Internet Group Management Protocol (IGMP) RFC2236, číslo protokolu 2
Internet Protocol (IP) RFC791
Address Resolution Protocol (ARP) RFC826
Reverse Resolution Protocol (RARP) RFC903
Ethernet RFC894, Token Ring RFC 1042, FDDI RFC 1188, Novell RFC1088, Arcnet RFC1201, X.25 RFC1356 15
16
4
Seznam zkratek v předchozím obrázku n n n n n n n n n n n
n
Spojované a nespojované služby
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 Data Interface – síťová technologie založená na optických vláknech
n
Spojované Spojované služ služby (connection(connection-oriented) Obdoba telefonního spojení Zaručeno doručení datagramů ve správném pořadí (stream) Využívá se protokol TCP
n n n
n n
n
+ Aplikace je jednodušší, ale nemůže řídit komunikaci – Vnitřně komplikovaný protokol, proto má větší režii
Nespojované Nespojované služ služby (connectionless) Obdoba poštovního spojení Není zaručeno pořadí ani doručení datagramů Využívá se protokol UDP
n n n
n n
Podrobnosti k jednotlivým protokolům viz doporučená literatura
n
+ 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
17
Typy adresování n
n n
n
Šestibajtová hardwarová adresa používaná ve spojové vrstvě, např. 00-0B-6A-9E-07-85 někdy též zapisovaná jako 00:0B:6A:9E:07:85 Měla by být jedinečná na celém světě, každý výrobce má svůj 3 bajtový prefix Speciální adresa pro posílání zpráv všem (broadcast) je FF-FF-FF-FF-FF-FF
IP adresa (IPv4) n
n
n
n
Datagram v protokolu IPv4
MAC adresa (Media Access Control), též Ethernetová adresa n
n
0
4 Verze
8 Délka hlavičky
Čtyřbajtová adresa přidělovaná poskytovatelem sítě v závislosti na topologii sítě, např. 147.228.47.16 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č
12
16
20
Typ služby
(1/3)
24
28
32
Celková délka Příznaky
Identifikace Time to live (doba života)
Offset fragmentu
Kontrolní součet hlavičky
Protokol
Zdrojová IP adresa Cílová IP adresa
Doménová adresa n
18
Options (volitelné položky)
Hierarchická adresa pro „lidskou komunikaci“, např. cybernet.zcu.cz Je mnemonická, přiděluje se podle organizační struktury
Padding
Data 19
20
5
Datagram v protokolu IPv4 n n
n n
n
n n
n
(2/3)
Verze – Verze IP protokolu, která vygenerovala datagram. Pro Ipv4 je 4 Délka hlavičky – v násobcích 32 bitů (včetně délky options a jejich doplnění na násobky 32 bitů). Nejsou-li použity optiony je rovna 5 (5*4 je 20 bajtů) Typ služby – může určovat prioritu pro doručení Celková délka – celková délka datagramu v bajtech (max. 65535, obvykle je však mnohem menší) Identifikace – 16 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
Datagram v protokolu IPv4 n
n
n
n
n
n
(3/3)
Protokol – kód protokolu z vyšší vrstvy. Např. 1 … ICMP, 2 … IGMP, 6 … TCP, 17 … 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 16 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 – 4 bajtová IP adresa tvůrce datagramu. Routery, kterými datagram prochází obvykle tuto adresu nemění Cílová IP adresa – 4 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 4 bajtů Data – data přenášená v datagramu. Obsahují buď celou zprávu z vyšší vrstvy nebo její fragment
21
Struktura segmentu TCP 0
4
8
12
16
20
Zdrojový port
(1/2) 24
28
32
Cílový port n
Acknowledgement Number Rezerva
Struktura segmentu TCP n
Sequence Number
Offset Dat
22
n n
Window (okno)
Příznaky
Kontrolní součet
Urgent Pointer
Options (volitelné položky)
(2/2)
Port je celé 2 bajtové číslo, které identifikuje danou aplikaci (proces) na zdrojovém nebo cílovém počítači 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
Padding
Data 23
24
6
Struktura paketu UDP 0
4
8
12
16
Programování komunikací – sockets 20
24
28
Zdrojový port
Cílový port
Délka
Kontrolní součet
32
n
n n
Data
n
Berkeley socket API (Application Programming Interface)
n
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 WinSock2 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
25
Architektura TCP aplikací
26
Architektura UDP aplikací
Klient
Server
socket
socket
Klient
Server
socket
socket
bind bind
listen connect
accept
send
recv
recv
send
close
close 27
sendto
recvfrom
recvfrom
sendto
close
close
28
7
Síťové komunikace v C# n
n
System.Net.Sockets n
n
n
Příklad TCP serveru a klienta
n
n
n
n
n
n
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
n
n
n
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:
Socket – implementuje rozhraní Berkeley sockets n
n
n
Jmenný prostor poskytující implementaci Windows Sockets v řízeném kódu Podporuje i protokoly založené na IPv6
Základními třídami jsou: n
Vychází z příkladu „A very basic TCP server written in C#“
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). n
n
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
29
30
Adresování v protokolu IPv6 n n n
n
Datagram v protokolu IPv6
Teoretický počet adres v IPv4 je 232 = 4 294 967 296 Velikost adresy v IPv6 se zvětšila na 128 bitů (16 bajtů) Obdobný zápis pomocí „tečkové“ notace jako v IPv4 by byl velmi nepřehledný Adresy se zapisují hexadecimálně oddělené dvojtečkami, např.: n
805B:2D9D:DC28:0000:0000:FC57:D4C8:1FFF
n
805B:2D9D:DC28:0:0:FC57:D4C8:1FFF
n
n
n
0 Verze
8
12
16
20
24
28
32
Flow Label
Traffic Class
Payload Length
Next Header
Hop Limit
Zdrojová IP adresa (128 bitů)
Úplná adresa, lze ji zkrátit (pro úsporu místa) následovně Cílová IP adresa (128 bitů)
Je možné ještě další zkrácení vypuštěním nul a nahrazením dvěma dvojtečkami :: Data
805B:2D9D:DC28::FC57:D4C8:1FFF n
4
(1/2)
Dvojici dvojteček lze použít v zápisu jen jednou, pak se počet nul se dá dopočítat
31
32
8
Datagram v protokolu IPv6 n n
n
n
n
Verze – Verze IP protokolu, která vygenerovala datagram. Pro IPv6 je 6 Traffic Class – nahrazuje Typ služby (Type of Service) v IPv4. 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 IPv4, 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: n
n
n
(2/2)
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 IPv4 (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) 33
9