\"/
\"/ \"/    

Komunikace a počítače (4)

Jiří Novotný, ÚVT MU
Ročník VI - číslo 4, březen 1996
Citace: J. Novotný. Komunikace a počítače (4). Zpravodaj ÚVT MU. ISSN 1212-0901, 1996, roč. VI, č. 4, s. 17-20.
Tematické zařazení: Počítačové sítě obecně
Článek je součástí seriálu Komunikace a počítače
 předchozí článek | následující číslo 

5.3  Spojení na úrovni síťové vrstvy - routery

Teprve na tomto místě se dostává ke slovu internetworking v pravém smyslu slova. Zatímco u předchozích postupů se dalo mluvit o spojování sítí, zde by se spíše hodil termín sjednocení sítí. Dochází k jejich zastřešení obecnější technologií. Zatímco jednotlivé sítě budovaného internetu hovoří různými jazyky, mají jiné způsoby adresace, formáty, maximální délky paketů atd., síťová vrstva definuje pro celou síť jednotný formát paketů, jednotnou adresaci, jednotné postupy. To je velmi podstatné pro vyšší vrstvy v síťové hierarchii, ty se již totiž nemusí zatěžovat specifickými vlastnosti použitých technických prostředků.

Adresace v síti

Klíčem ke každé internetové technologii je zavedení vhodného způsobu adresace v síti. Adresový prostor může být zcela "plochý", tedy nestrukturovaný (například můžeme každou stanici jednoduše identifikovat nějakým celým číslem v určitém rozsahu), obvykle však bývá nějakým způsobem strukturovaný. Většinou se adresa skládá alespoň z části obsahující adresu (číslo) sítě a z části obsahující adresu stanice v této síti.

U protokolů XNS nebo IPX je adresa tvořena 32-bitovým číslem sítě a 48-bitovou adresou stanice v síti, přičemž tato adresa je u sítí typu ethernet, token-ring, FDDI apod. shodná s fyzickou (MAC) adresou příslušného síťového adaptéru. Protokoly OSI (například CLNS) používají tzv. NSAP (Network Service Access Point) adresy, jejichž struktura je značně složitá a navíc existuje celá řada možných formátů.

Podrobněji si povíme o adresaci v Internet Protocolu (dále jen IP). IP adresa je 32-bitové číslo, které bývá zvykem zapisovat ve formě čtveřice celých desítkových čísel oddělených tečkami, například 147.251.4.3 . Každé číslo vyjadřuje hodnotu jednoho bytu adresy. Adresa se skládá z adresy sítě a adresy stanice (host address), toto dělení ale není zcela pevně určeno.

Pomineme-li některé speciální typy adres, IP adresy se dělí na adresy třídy A, B a C. Typ adresy je rozlišen nejvyššími bity adresy. Je-li nejvyšší bit 0, jde o adresu třídy A: dalších 7 bitů tvoří adresu sítě a zbývajících 24 bitů adresu stanice v síti. Obsahuje-li dvojice nejvyšších bitů hodnotu 10, jde o adresu třídy B: 14 bitů udává adresu sítě a 16 bitů adresu stanice. Konečně u adresy třídy C je na nejvyšších místech kombinace bitů 110, 21 bitů tvoří adresu sítě a 8 bitů adresu stanice. Smyslem tohoto dělení na třídy bylo lepší hospodaření s adresovým prostorem a vytváření různě velkých sítí.

IP adresa je jedinečná v celosvětovém měřítku. Přidělování IP adres probíhalo původně striktně centralizovaným způsobem, v současné době je již organizováno distribuovaným způsobem, přičemž je pochopitelně zajištěno, aby nedošlo k přidělení duplicitních adres.

Brzy se ukázalo, že adresový prostor IP je dělením na třídy A, B a C strukturován nedostatečně a že je nutno zavést určitou další hierarchii. Proto byl zaveden pojem podsítě a masky sítě/podsítě. Část adresy, původně určená jako adresa stanice (v "základní" síti), se rozdělí na dvě části - adresu podsítě a adresu stanice v podsíti. Například v síti s adresou třídy B 147.251.0.0 můžeme 8 bitů adresy stanice použít pro adresu podsítě a zbývajících 8 bitů pro adresu stanice v podsíti. Budeme mít tedy podsítě 147.251.1.0, 147.251.2.0 atd. Maska sítě určuje, jakým způsobem bude adresa rozdělena. Maska je, podobně jako adresa, 32-bitové číslo, typicky je ale tvořeno souvislou řadou n binárních jedniček následovanou řadou 32 - n binárních nul (principiálně není zakázáno používat i jiné masky, nedávalo by to však příliš rozumný smysl). "Přiložením" masky na IP adresu zjistíme, která část znamená adresu stanice a která adresu sítě+podsítě. Logickou operací AND dostaneme adresu sítě, operací AND s invertovanou maskou dostaneme adresu stanice.

V principu je možné vytvořit i víceúrovňovou hierarchii podsítí a používat v rámci jedné sítě i podsítě s různými maskami. Problém je pouze v tom, že ne všechny implementace IP a ne všechny protokoly pro směrování IP paketů proměnnou masku podsítě podporují.

V poslední době se původní dělení na třídy ukazuje jako nepružné a prosazuje se přístup zvaný Classless routing (CIDR), tedy "beztřídní směrování", kdy je dělení adresy dáno výhradně maskou, bez ohledu na třídu adresy. Tento přístup umožňuje nejen dělení sítí na menší podsítě, ale také jejich sdružování do větších celků (nadsítě, agregáty). Tyto tendence souvisejí s problémem nedostatku IP adres v současné době a díky velkému zájmu o připojení do Internetu (namísto adres třídy B je možno přidělovat bloky adres třídy C) i s problémem příliš velkých tabulek sítí v IP routerech.

Datagram (paket)

Základní jednotkou dat v IP síti je IP datagram neboli paket. Paket se skládá z (IP) hlavičky, potřebné pro funkce protokolu IP, a těla, obsahujícího vlastní přenášená data. Při přenosu po jednotlivých sítích/podsítích je ještě navíc "zabalen" do struktury potřebné pro danou síť, tedy například do paketu protokolu ethernet. Ze struktury IP hlavičky, jejíž podrobný rozbor by si vyžádal více prostoru, si povíme jen to nejdůležitější - obsahuje dvojici IP adres, a sice adresu odesílající stanice a cílové stanice.

Základní služba protokolu IP je jednoduchá - doručit datagram ze zdrojové stanice do cílové stanice určené cílovou adresou. IP datagram je doručován důsledně na základě cílové IP adresy v hlavičce, v některých případech lze ještě vzít při směrování datagramu v úvahu i zdrojovou adresu a některé další informace (zejména pole TOS - Type Of Service). Informace o IP adresách v hlavičce se během celé cesty paketu nemění. Každý paket je doručován zcela nezávisle na ostatních paketech (jako by si "sám hledal cestu"). Může se stát, že pakety putují k cíli různými cestami a že dojdou případně i v jiném pořadí, než byly vyslány. IP protokol nezaručuje, že paket bude doručen - v případě poruchy na cestě může dojít k jeho ztrátě. Nezaručuje ani jeho bezchybné doručení, může se dokonce stát, že dojde k duplikaci paketu. Protokol IP je tedy označován jako unreliable, doslovně bychom tedy řekli nespolehlivý. Tuto vlastnost ale v žádném případě nelze označit jako nevýhodu protokolu. Tím, že protokol IP nepočítá s žádným potvrzováním, kontrolou, opakováním vadných dat a podobně, je celá činnost protokolu nesmírně zjednodušena a velmi usnadňuje jeho implementaci.

Není přitom třeba mít obavy z nespolehlivosti sítě postavené na bázi IP jako celku, protože na zajištění spolehlivosti je dostatečně pamatováno ve vyšších vrstvách, zejména v protokolu TCP. IP protokol rovněž nevylučuje použití prostředků detekce a opravy chyb na úrovni linkové (či nižší) vrstvy, například na zarušených sériových linkách lze použít protokol LAPB apod.

Kromě doručení paketu se musí IP vypořádat ještě s jednou nepříjemnou skutečností, která přenos dat po síti komplikuje, totiž že různé protokoly linkové vrstvy se liší maximální velikostí přenášeného paketu. Má-li tedy přenést po síti paket, který je větší, než možnosti této sítě dovolují, nemůže jej pochopitelně vyslat v nezměněné podobě. Musí provést fragmentaci - rozdělení na dva nebo více menších paketů, z nichž každý obsahuje informaci, že jde o fragment, nikoliv o úplný paket, a informaci o offsetu dat v původním paketu. Zkompletování původního paketu je povinností cílové stanice (nikoliv tedy bezprostředně následujícího routeru). Může se rovněž stát, že i fragment paketu je v některém dalším skoku opět rozdělen na menší fragmenty.

IP patří do skupiny protokolů označovaných jako Connectionless, tedy protokolů nevyžadujících navazování a rušení spojení mezi komunikujícími stanicemi. V kterémkoliv okamžiku může jedna stanice vyslat paket jiné stanici, aniž by byly nutné nějaké předběžné akce. Síť, je-li ve fungujícím stavu, musí být schopna paket doručit. Do stejné skupiny patří například i protokol XNS, Novell IPX, OSI CLNS a mnohé další.

Naproti tomu protokoly označované jako Connection-Oriented vyžadují před započetím vlastního přenosu dat zřídit spojení mezi stanicemi, obvykle vybudováním virtuálního komunikačního kanálu (okruhu). Protokoly tohoto druhu se používají například ve veřejných datových sítích s rozhraním X.25 nebo v sítích na bázi technologie ATM.

IP-router

Základním stavebním kamenem IP sítě jsou IP routery (směrovače, v původní terminologii označované jako IP Gatewaye; tento termín byl vzhledem k obecné terminologii poněkud matoucí, a proto se už většinou nepoužívá). IP router se jen málo liší od běžného počítače připojeného do sítě. Hlavní rozdíl je v tom, že router není připojen do jediné sítě, ale do dvou či více sítí/podsítí prostřednictvím více síťových adaptérů. Celý internet je pak tvořen řadou sítí navzájem spojených IP routery. Za síť ve smyslu IP je považováno i dvoubodové spojení (třeba sériovou linkou) dvou routerů. Zatímco běžný koncový počítač má pouze jedinou IP adresu, router musí mít pro každé síťové rozhraní jinou IP adresu, příslušnou dané IP síti/podsíti.

IP paket putuje od zdrojové stanice k nejbližšímu routeru, od něj k dalšímu, až nakonec dospěje k cílové stanici. Pouze pokud jsou zdrojová i cílová stanice na téže síti, může dojít k přímému doručení. Router směruje pakety na základě směrovací tabulky (routing table). Směrovací tabulka může ve zjednodušené podobě vypadat například následovně:

     address    mask    next hop    m    intf
147.251.4.0 255.255.255.0 147.251.4.3 0 we0
147.251.5.0 255.255.255.0 147.251.5.3 0 we1
147.251.6.0 255.255.255.0 147.251.4.10 1 we0
147.251.8.0 255.255.255.0 147.251.5.23 2 we0
160.30.0.0 255.255.0.0 147.251.4.22 9 we0
...
default 0.0.0.0 147.251.4.22 1 we0

Je zde uložena adresa sítě, či v některých speciálních případech adresa jednotlivé stanice, maska (ne vždy uvedena v takto explicitním tvaru), adresa nejbližšího routeru, na který je třeba pakety směrovat, metrika a označení síťového rozhraní, na něž budou pakety směrovány. První dva řádky popisují sítě, které jsou přímo připojené. Poslední řádek obsahuje default cestu, která se uplatní, nelze-li použít žádnou z explicitních cest. Obvykle směřuje na router, který má lepší (podrobnější, úplnější) informace o topologii sítě. Každý router vyhledá k cílové IP adrese položku v tabulce, která nejlépe odpovídá dané adrese, a pošle paket ke zpracování příslušnému dalšímu routeru.

Musíme objasnit, jakým způsobem probíhá doručení paketů mezi jednotlivými routery (a koncovými stanicemi) v jednotlivých skocích v rámci (lokálních) sítí. Jak je vidět, routovací tabulka a hlavička paketu udávají jen IP adresu routeru či cílové stanice. Musíme proto zjistit, jaká fyzická adresa na síti odpovídá dané IP adrese. U dvoubodových spojení je to jednoduché, tam prostě pošleme paket protější straně. V sítích s možností posílání všesměrových paketů, jako je například ethernet, je pro tento účel používán protokol ARP (Address Resolution Protocol). Jeho princip je jednoduchý. Vysílající stanice, která ještě nezná fyzickou adresu cílové stanice, vyšle do sítě všesměrový dotaz obsahující IP adresu cílové stanice. Na tento dotaz odpoví cílová stanice a sdělí svoji fyzickou adresu. Někdy může namísto cílové stanice odpovědět jiný účastník v síti, který zná její adresu. Vysílající stanice pak může vyslat paket cílové stanici a zároveň si do ARP tabulky poznačí získanou informaci, kterou pak použije při posílání dalších paketů.

V sítích neumožňujících všesměrové pakety je obvykle nutno pro mapování IP na fyzické adresy použít statickou tabulku či nějakou jinou metodu, specifickou pro protokol (linkové vrstvy) dané sítě.

Další otázkou je, kde se vezme obsah směrovací tabulky. V nejjednodušším případě ji lze naplnit staticky, na základě nějakého konfiguračního souboru, při zavedení systému či síťového softwaru. Je jasné, že tento způsob obhospodařování směrovacích tabulek je možný jen ve velmi jednoduché síti a je naprosto nepoužitelný pro rozsáhlé sítě. Staticky je možno nakonfigurovat koncovou stanici, kde zadáme pouze default cestu na nejbližší router. U routeru lze použít statickou tabulku v případě, kdy obsluhuje nějakou část sítě s triviální topologií, přičemž statickou default cestou nasměrujeme všechno, co tento router neumí vyřešit, na nejbližší jiný router mající lepší informaci.

(... pokračování)
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011