Vyšlo v týdeníku Computerworld č. 21/92 v roce 1992
Vytištěno z adresy: http://www.earchiv.cz/a92/a221c110.php3

Síťová vrstva - I.

Chtějí-li spolu komunikovat dva uzly počítačové sítě, mezi kterými neexistuje přímé spojení, je nutné pro ně najít alespoň spojení nepřímé - tedy vhodnou cestu, vedoucí přes mezilehlé uzly od jednoho koncového uzly ke druhému. Možných cest může být samozřejmě více, někdo je však musí najít, jednu z nich vybrat, a pak také zajistit správné předávání dat po této cestě. Všechny tyto úkoly má v referenčním modelu ISO/OSI na starosti síťová vrstva.

Obrázek 32.1.
Obr. 32.1.: Příklad topologie sítě
Uvažujme příklad počítačové sítě na obrázku 32.1 a/ a situaci, kdy je potřeba přenést určitá data z uzlu A do uzlu D. Zdrojem těchto dat nechť je uživatelský proces, běžící na počítači A (může to být například program pro práci s elektronickou poštu a jím generovaná data zprávou, určenou pro účastníka na uzlu resp. počítači D). Uživatelský proces na počítači A předá svá data k odeslání aplikační vrstvě, která je zase předá vrstvě prezentační atd. (viz obrázek 32.2.). Když se příslušná data dostanou až na úroveň síťové vrstvy, musí tato rozhodnout, kudy je skutečně odeslat. V našem konkrétním případě (v síti dle obrázku 32.1. a/) je toto rozhodnutí velmi jednoduché, jediná cesta "ven" zde totiž vede přes uzel E. Data, určená k doručení do uzlu D, proto síťová vrstva uzlu A předá své bezprostředně nižší (linkové) vrstvě s požadavkem na jejich odeslání do uzlu E.

Jelikož mezi uzly A a E existuje přímé spojení, dokáže lInková vrstva uzlu A předat blok dat (na úrovni linkové vrstvy označovaný jako rámec) své partnerské linkové vrstvě na uzlu E. Jak již ale víme, ve skutečnosti tak činí prostřednictvím fyzické vrstvy.

Linková vrstva na uzlu E předá přijatý rámec své bezprostředně vyšší vrstvě, tj. vrstvě síťové. Ta musí z obsahu rámce poznat, že jde o data určená k doručení do uzlu D. Na základě znalosti topologie sítě (tj. způsobu propojení jednotlivých uzlů) tato vrstva zjistí, že cesta do uzlu D vede dále buď přes uzel G, nebo přes uzel F. Musí se rozhodnout pro jednu z obou možností - předpokládejme, že se rozhodne pro cestu přes uzel G. Data, která převzala od linkové vrstvy, proto síťová vrstva uzlu E vrátí své bezprostředně nižší vrstvě s požadavkem na odeslání do uzlu G.

Obrázek 32.2.
Obr. 32.2.: Představa průchodu dat vrstvami
V uzlu G se situace opakuje. Linková vrstva předá přijatý rámec síťové vrstvě, která jej vrátí linkové vrstvě zpět s požadavkem na odeslání do uzlu D, kam již z uzlu G vede přímé spojení.

V uzlu D se data dostanou analogickým způsobem až na úroveň síťové vrstvy. Ta rozpozná, že jde o data, určená právě danému uzlu, a proto je již nevrací vrstvě linkové, ale předá je své bezprostředně vyšší (tj. transportní) vrstvě. Odtud jsou pak postupně předávána směrem k vyšším vrstvám, až se dostanou k té entitě resp. procesu, která je jejich konečným příjemce. Celý postup názorně ukazuje obrázek 32.2.

Úkoly síťové vrstvy

Pokusme se nyní, na základě výše uvedeného příkladu, o zobecnění úkolů, které v referenčním modelu ISO/OSI plní síťová vrstva.

Kdykoli transportní vrstva předává vrstvě síťové nějaká data k odeslání, připojuje k nim pouze informaci o tom, kdo má být jejich konečným příjemcem. Pro každý samostatně přenášený blok dat, který se na úrovni síťové vrstvy označuje jako paket (zatímco na úrovni linkové vrstvy jako rámec) pak musí síťová vrstva rozhodnout, kterým "směrem" jej má skutečně odeslat. Jakmile toto rozhodnutí učiní, předá příslušný paket vrstvě linkové spolu s údajem o zvoleném směru.

Nejdůležitějším úkolem síťové vrstvy je tedy tzv. směrování (routing), které představuje právě ono zmíněné rozhodování o směru odesílání jednotlivých paketů. Není jistě třeba zdůrazňovat, že k tomu síťová vrstva potřebuje alespoň základní informace o topologii celé sítě. Konkrétních způsobů směrování, či spíše postupů resp. algoritmů volby vhodného směru přitom existuje celá řada. Od jednoduchých statických metod, které nejsou schopny reagovat na dynamické změny v síti, až po adaptivní metody, které se dokáží přizpůsobit aktuálnímu stavu sítě, jejímu zatížení, případným výpadkům některých uzlů či spojů apod.

Metodám směrování se budeme podrobněji věnovat v dalších pokračováních našeho seriálu. Vraťme se však ještě k úkolům síťové vrstvy - kromě vlastního směrování (chápeme-li jej jen jako rozhodování o dalším směru) musí síťová vrstva zajišťovat i jeho skutečnou realizaci. Tedy v mezilehlých uzlech zajišťovat potřebné předávání jednotlivých paketů na cestě k jejich koncovému příjemci.

S tím dosti úzce souvisí i další úkol síťové vrstvy - předcházet přetížení či dokonce zahlcení částí sítě, řídit tok dat a dbát o co možná nejrovnoměrnější využití všech přenosových prostředků a kapacit.

Při vzájemném propojení dvou či více sítí pak přibývá síťové vrstvě ještě jeden důležitý úkol - zajišťovat nezbytné předávání paketů mezi jednotlivými sítěmi.

Odlišné pohledy na svět

Obrázek 32.3.
Obr. 33.3.: "Pohled" transportní, síťové a linkové vrstvy na síť
Udělejme si nyní malé shrnutí toho, jaký pohled na celou síť a vzájemné propojení jednotlivých uzlů má transportní, síťová a linková vrstva ISO/OSI modelu - umožní nám to snáze pochopit postavení a význam síťové vrstvy: transportní vrstva v každém uzlu sítě vychází z představy, že mezi jejím uzlem a koncovým příjemcem dat existuje přímé spojení, a proto adresuje svá data přímo tomuto koncovému příjemci. Síťová vrstva si již uvědomuje skutečnou topologii sítě a ví, že představa transportní vrstvy nemusí být správná (činí však vše pro to, aby transportní vrstvě její iluzi zachovala). Pro linkovou vrstvu pak již není topologie celé sítě relevantní - té stačí znát jen ty uzly, se kterými má "její" uzel přímé spojení. Nezná dokonce ani koncového příjemce dat obsažených v rámcích, které sama přenáší.

Komunikační podsíť a hostitelské počítače

Příklad topologie sítě, uvedený na obrázku 32.1., naznačuje nejobecnější situaci, kdy všechny uzlové počítače sítě mají stejné postavení a mohou vystupovat jak v roli zdrojů a koncových příjemců dat, tak i v roli mezilehlých uzlů.

V praxi však může často docházet k tomu, že meziuzly nejsou plnohodnotnými uzly počítačové sítě, ale pouze jednoúčelovými "přepojovači", které vytváří potřebnou komunikační infrastrukturu pro propojení ostatních "plnohodnotných" uzlů. Právě s takovouto představou počítal také referenční model ISO/OSI ve své původní verzi (kdy uvažoval jen tzv. spojované služby, viz 27. díl našeho seriálu). Podle této představy je oddělena čistě komunikační funkce sítě a je svěřená tzv. komunikační podsíti (communication subnet, subnetwork), zatímco vlastní aplikační funkce zajišťují tzv. koncové systémy (end systems). S podobnou představou pracovala například i jedna z prvních rozlehlých sítí ARPANET, jejíž terminologie se nejvíce prosadila do praxe. Koncové systémy, na kterých jsou provozovány uživatelské aplikace, označuje jako hostitelské počítače (host computers, hosts), zatímco jednotlivé "přepojovací" uzly v rámci komunikační podsítě označuje jako IMP (Interface Message Processor) - viz obrázek 32.1. a/. V literatuře se však často používají také termíny uzel přepojování paketů (Packet Switching Node) či mezilehlý systém (Intermediate Node) nebo datová ústředna (Data Switching Exchange).