Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

UNIX 7. Meziprocesová komunikace a sítě © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● meziprocesová.

Podobné prezentace


Prezentace na téma: "UNIX 7. Meziprocesová komunikace a sítě © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● meziprocesová."— Transkript prezentace:

1 UNIX 7. Meziprocesová komunikace a sítě © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy http://creativecommons.org/licenses/by-nc-nd/3.0/ Obsah: ● meziprocesová komunikace, soubor, sdílená paměť ● mapování souborů do paměti, signály, zasílání zpráv ● roura, pojmenovaná roura, IPC soket ● zamykání souborů, souborové zámky ● TCP/IP, RFC, BSD socket API, síťové rozhraní ● směrovací tabulka, DNS, resolver, diagnostika sítě ● superserver xinetd, firewall 13.5.2011

2 Účely komunikace ● Inter-Process Communication (IPC) ● multiprogramování – úloha je rozdělena na více samostatných úloh, aby mohly být zpracovávány odděleně – je nutné zajistit synchronizaci, signalizaci a výměnu dat ● clustery – výpočty probíhají na oddělených počítačích – je nutné zajistit synchronizaci, signalizaci a výměnu dat při využití počítačové sítě

3 Meziprocesová komunikace ● soubor ● sdílená paměť ● mapování souborů do paměti ● signály ● zasílání zpráv ● roura ● pojmenovaná roura ● IPC socket ● zamykání souborů

4 Soubor ● nejjednodušší výměna dat mezi procesy ● dočasné soubory ● v unixových systémech v adresáři /tmp, /var/tmp – všichni mají právo zápisu → mohou si vzájemně škodit ● používá se sticky bit → nelze si vzájemně mazat i přes „w“ ● i tak vyžaduje vytváření dočasných souborů speciální zacházení ● zejména u privilegovaných procesů je riziko poměrně velké ● též problém souběhu → náhodné názvy, zamykání ● komunikace je však poměrně těžkopádná ● velká režie (zápis na HDD) ● mají však všechny systémy → přenositelnost

5 Sdílená paměť ● procesy jsou normálně odděleny ● kromě threadů, které mají sdílenou paměť záměrně ● sdílená paměť je shodná s částí jiného procesu ● při zápisu problém souběhu – řeší se zamykáním, synchronizačními primitivy ● funkce pro ovládání definuje POSIX – definuje vytvoření, připojení, získání ukazatele – pak zápisy i čtení, odpojení, zrušení sdílené paměti – zaručuje přenositelnost

6 Mapování souborů do paměti ● původně metoda nahrazující klasické operace ● otevření, čtení, zápis, posun ukazatele, zavření – nevýhodou je neustále kopírování dat mezi cache, bufferem a paměťovým prostorem procesu ● využívá mechanismu „výpadku stránky“ – odkládání nepoužívaných částí paměti na disk – využíváno u stránkování paměti ● lze využít i pro meziprocesovou komunikaci ● namapovaný soubor může být sdílen více procesy ● samozřejmě je nutné řešit souběh atp.

7 Signály ● jednoduchá meziprocesová komunikace ● implementováno v jádře OS ● asynchronní signalizace mezi procesy – v unixových OS může odesílat signál i jádro OS ● lze poslat jen vlastním procesům – správce (root) může poslat signál všem procesům ● proces zpracovává signál vyvoláním procedury – implicitní akce, ignorování signálu, vlastní obsluha signálu – ne všel lze předefinovat (KILL bohužel, resp. naštěstí nejde) – při zpracování volat jen bezpečné funkce (! reentrantnost) ● odesláním signálu systémovým voláním kill()

8 Syscall: kill() ● název podle signálu KILL ● signály odlišeny názvy, ty mapovány na čísla – HUP – „zavěšení“ + ukončení, dnes rekonfigurace – INT – přerušení (z terminálu CTRL+c) – QUIT – ukončení + core dump – KILL – nepodmíněné ukončení procesu („vražda“) ● nelze ve stavu D (proces je v jádře, čeká na dokončení I/O) – SEGV – porušení ochrany paměti – PIPE – signalizace rozpadu roury (ukončení skupiny) – TERM – slušná žádost o ukončení procesu – STOP – pozastavení procesu – CONT – obnovení běhu procesu

9 Příkaz kill ● zasílání signálů z příkazového řádku ● kill -l → vypíše seznam signálů + jejich čísla ● kill – zaslání signálu TERM (žádost o ukončení) – je číslo procesu – signál lze posílat jen svým procesům, root může všem ● kill -1 nebo kill -HUP – dnes někdy znovunačtení konfigurace (rekonfigurace) ● kill -9 nebo kill -KILL – bezpodmínečné ukončení procesu

10 Zasílání zpráv ● univerzálnější, než signály ● mezi procesy lze přenášet i data ● implementace v jádře nebo jako sdílená paměť ● řešení mezních situací ● synchronní a asynchronní ● jednosměrné, obousměrné ● spolehlivý přenos nebo bez záruk – nutnost implementovat fronty, potvrzování zpráv ● řešení duplikace, ztráty, příjemce skončil atd.

11 Kolona (roura) ● propojení příbuzných procesů ● propojení přes deskriptory – jednosměrné spojení (jeden zapisuje, druhý čte) ● vytváří se skupina procesů – jádro posílá při přerušení roury signál SIGPIPE – skupina reaguje ukončením („broken pipe“) ● v paměti kruhový vyrovnávací paměť – buffer ● typicky se využívá v příkazovém řádku grep ro /etc/passwd | sort

12 Pojmenovaná roura ● umožňuje spojení nepříbuzných procesů ● definuje POSIX ● styčné místo je speciální soubor typu roura – název lze nějak předat nepříbuzným procesům – vytvořená pojmenovaná roura „přežije“ ukončení procesů ● data vyměňována v paměti (buffer) ● pouze jednosměrná komunikace (FIFO) – jeden proces zapisuje, další čte

13 IPC socket ● též tzv. Unix Domain Socket, definuje POSIX ● speciální soubor, ale implementováno v RAM ● obdoba síťové komunikace – od roury přidává obousměrnou komunikaci – navíc možnost více klientů ● například PostgreSQL server + klient – /tmp/.s.PGSQL.5432 – klient otevře a připojí se

14 Zamykání souborů ● pro zabránění souběhu ● v unixových systémech jen informativní (advisory) – i když je na soubor aplikován zámek, jádro ho nevynutí – všechny programy musí zámky respektovat – funkce fcntl() a flock() → též na části souboru ● sdílené zámky – též nazývány jako zámky pro čtení ● exkluzivní zámky – též nazývány jako zámky pro zápis ● souborové zámky

15 Souborové zámky ● soubor signalizující zamčeno ● např. /etc/shadow.lock – znamená: někdo si mění heslo, tak počkáme – někdy název včetně PID procesu, který ho vytvořil ● opět jde o záležitost respektu, jádro nevynucuje ● používá se ve shellu a na FS bez podpory zámků – např. starší verze NFS bez lock démona ● vytvoření musí být atomická operace – v shellu „noclobber“ nebo vytvoření adresáře – v zásadě poměrně komplikovaná logika – problém „opuštěných zámků“ (anglicky: stale lock file)

16 Historie počítačových sítí ● první pokusy dálkového spojení již 1940 ● ovládání kalkulátoru dálnopisem v USA (Stibitz) ● 60. léta → různé pokusy ● systémy podporující multitasking – 1964 time-sharing systémy ● USA: Dartmouth – pro 300 studentů, Berkeley (Thompson) – 1967 IBM: OS/360 s MFT ● řízení telefonní ústředny počítačem ● 1969 ARPANET – 50kbps – 1975 – počátek vývoje TCP/IP – 1983: ARPANET adoptoval TCP/IP (IPv4)

17 TCP/IP ● celá rodina protokolů ● základem je IPv4, dnes nástup IPv6 – přenos pomocí datagramů („salámová metoda“) – používání IP adres (např. 147.230.16.1) ● systém vrstev – vrstvy nezávislé, zaměnitelné, snadnější implementace – definována vzájemná komunikace vrstev (API) ● za přenos neodpovídá síť, ale koncové počítače – zjednodušení propojovacích prvků sítě – využívá se přepojování (přeposílání) datagramů

18 RFC ● Request Foc Comments ● neformální standardy pro Internet – též žertovná aprílová vydání ● vydává je RFC editor podle pokynů IAB – označována vzestupnou řadou čísel (první 1969) ● již vydané se neruší, jen nahradí novějším RFC ● dostupné na http://www.ietf.org/rfc.htmlhttp://www.ietf.org/rfc.html ● nejprve je vydán draft (návrh) – formulují experti na daný problém – osvědčí-li se, dostane přiděleno číslo a je vydáno

19 Implementace ● 1983: BSD socket API ● de fakto standard pro síťovou komunikaci – socket() → vytvoření socketu – bind() → připojení na lokální port (server) – listen() → zahájení naslouchání (server) – connect() → vytvoření nového spojení (klient) – accept() → přijmutí příchozího spojení (server) – send(), recv(), write(), read(), recvfrom(), sendto() – close() → uzavření spojení – gethostbyname(), gethostbyaddr() → převod IP – DNS – pool() → kontrola stavu socketu – select() → zjištění stavu více socketů (deskriptorů)

20 TCP/IP stack ● implementace umístěna v jádře OS ● společný kód pro všechny aplikace – snadněji se odstraňují chyby – je možné centrálně opravit chybu, doplnit novou vlastnost – např. DOS neměl, takže každá aplikace vlastní implem. ● velký rozsah řešených situací – ne všechny stavy definovány (pomocí RFC) – odchylky chování na nezvyklé situace → rozpoznání OS ● nástroj nmap ● umí odesílat a přijímat IP datagramy – též zajišťuje vyšší vrstvy pro ICMP, UDP, TCP

21 Součásti TCP/IP ● ICMP ● signalizace a řízení sítě – povinná součást implementace TCP/IP ● UDP ● systém „otázka → odpověď“, bez záruk ● např. DNS, ale i VoIP (Skype & spol.) ● TCP ● zajišťuje nad „nespolehlivou“ sítí zaručený přenos – tj. zachování pořadí, vyřešení ztrát a duplicit ● přenos e-mailů, WWW,...

22 Síťové rozhraní ● slouží k realizaci komunikačního rozhraní ● určena IP adresa, maska sítě, MTU ● může být fyzické (síťová karta) nebo virtuální – označeno názvem (eth0, eth1, wlan0,...) – obsluhováno jádrem (resp. TCP/IP stackem) ● konfigurace příkazem ifconfig ifconfig – výpis všech aktivovaných rozhraní ifconfig eth0 up (nebo down ) ifconfig eth0 10.0.0.5 netmask 255.255.255.0

23 Příklad výpisu [rene@pitoma ~]$ LANG=C ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:231736 errors:0 dropped:0 overruns:0 frame:0 TX packets:231736 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:13748872 (13.1 MiB) TX bytes:13748872 (13.1 MiB) wlan0 Link encap:Ethernet HWaddr 00:1F:3B:58:43:EF inet addr:10.1.0.131 Bcast:10.1.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:245440 errors:0 dropped:0 overruns:0 frame:0 TX packets:195654 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:26096332 (24.8 MiB) TX bytes:3478368 (3.3 MiB)

24 Směrovací tabulka ● routing table ● definuje způsob odeslání IP datagramů – význam zejména u routerů (směrovačů) – koncová stanice jen k rozlišení ● přímý soused (ve stejné podsíti) ● odeslání přes bránu, resp. router („do Internetu“) ● součást TCP/IP stacku route -n route add č.sítě netmask maska gw IPbrány route add default gw Ipbrány route del č.sítě netmask maska

25 Příklad výpisu [rene@pitoma ~]$ LANG=C route -n Kernel IP routing table Destination Gateway Genmask Flag Metr Ref Use Iface 10.1.0.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0 0.0.0.0 10.1.0.1 0.0.0.0 UG 0 0 0 wlan0

26 DNS ● Domain Name System ● hierarchický systém doménových jmen ● převod doménové jméno → IP adresa (a zpět) ● na počítači knihovna → resolver – viz dříve zméněné BSD socket API ● realizace DNS servery – pro dotaz používáme co nejbližší → nižší latence – využívá se cachování dotazů ● stanice musí znát IP adresu DNS serveru – typicky 2 různé (jako záložní)

27 Resolver ● knihovna pro podporu DNS ● převod doménové jméno → IP adresa (a zpět) – tj. odeslání a příjem patřičného UDP datagramu – viz zmíněné funkce gethostbyname()... ● nastavení uloženo v souboru /etc/resolv.conf ● nameserver 10.0.0.1 ● nameserver 10.1.0.1 ● domain mojedomena.cz ● search mojedomena.cz

28 Nastavení v počítači 1) manuální ● všechny údaje do konfiguračních souborů ● nastavení aktivováno při startu (skriptem) ● používá se typicky na serverech 2) automatické ● rozhraní obsluhuje DHCP klient – získá konfigurační informace z DHCP serveru – typicky pro uživatelské stanice – výhoda: nemusí se nikam nic zapisovat

29 Postup testování sítě 1) lokální IP adresa (v rámci svého počítače) – test loopbacku ( ping –n 127.0.0.1 ) – test vlastních aktivních síťových rozhraní 2) ve stejné podsíti – schopnost komunikace s přímými sousedy – brána do Internetu je též ve stejné podsíti 3) mimo podsíť – kontakt s routerem a počítači za ním (Internet) – např.: ping –n 147.230.16.1 4) test DNS ping seznam.cz

30 Příklady testů ping -n 127.0.0.1 ping -n 10.1.0.131 ping -n 10.1.0.130 ping -n 10.1.0.1 ping -n 147.230.16.1 ping seznam.cz dig @10.1.0.1 seznam.cz telnet 127.0.0.1 25 telnet seznam.cz 80 GET / HTTP/1.0 {Enter}

31 Poskytování služeb ● každá služba typicky vlastního démona ● WWW → httpd ● FTP → vsftpd ● DNS → named ● DHCP → dhcpd ● Samba → smbd, nmbd ● atd. ● spouštěno pomocí skriptů ● /etc/init.d/httpd a skript chkconfig

32 Superserver xinetd ● nahrazuje trvale běžící síťové démony ● někdy nevýhodné mít neustále spuštěného démona – jde o úsporu systémových prostředků ● xinetd obsadí příslušný síťový TCP port ● při příchodu požadavku spustí obslužný program – musí být přizpůsoben funkci přes xinetd – po obsloužení požadavku skončí – není výhodné pro často využívané služby (WWW) ● konfigurace v adresáři /etc/xinetd.d/ chkconfig –-list atd.

33 Firewall ● firewall filtruje datagramy ● na vstupu, výstupu, procházející (router) – akce: přijme, odmítne, zahodí ● firewall umístěn mezi aplikací a síťovým rozhraním – v jádře (součást TCP/IP stacku) nebo formou aplikace 1) nestavový ● posuzuje jednotlivé datagramy 2) stavový ● posuzuje akci na základě předchozích – součást TCP spojení, limit za jednotku času atd.

34 Firewall v Linuxu ● iptables ● implementováno jako součást TCP/IP stacku – dostatečně kvalitní, rozšiřitelný ● nastavování stejnojmenným příkazem – nastavení z příkazového řádku – též nastavování přes GUI rozhraní ● je to nestavový i stavový firewall – je možno zapojit i externí aplikaci ● připravuje se náhrada – sjednocení podpory IPv4, IPv6, bridge


Stáhnout ppt "UNIX 7. Meziprocesová komunikace a sítě © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● meziprocesová."

Podobné prezentace


Reklamy Google