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

Vrstvy, vrstevnaté modely, protokoly

Řešit určitý problém jako celek je obvykle možné jen po určitou hranici - dokud rozsah problému resp. jeho složitost nepřesáhne schopnosti řešitele či řešitelů a možnosti nástrojů a metod, které přitom používají.

Jakmile se určitý problém stává příliš složitým, je vhodné provést jeho dekompozici - rozdělit jej na několik dílčích problémů, které by bylo možné řešit samostatně a nezávisle na sobě.

Dobrým příkladem problému, který je příliš velký na to, aby bylo únosné jej řešit jako jediný velký problém, je otázka zajištění základních funkcí počítačové sítě. Jistě si lze snadno představit, že se jedná především o otázku základního programového vybavení sítě, které bezprostředně ovládá technické prostředky sítě - síťový hardware, tj. nejrůznější komunikační vybavení, uzlové počítače atd. - a jejich prostřednictvím zajišťuje chod celé sítě jako takové.

Obrázek 23.1.
Obr. 23.1: Představa vzájemného vztahu mezi vrstvami

Vzhledem k charakteru počítačových sítí a k povaze úkolů, které je třeba zajistit, se jako nejvhodnější ukázala být dekompozice základního programového vybavení sítě na hierarchicky uspořádané vrstvy (layers). Každá vrstva má na starosti zajištění přesně vymezeného okruhu úkolů. Mechanismy, pomocí kterých tyto úkoly zajišťuje, pak nabízí k využití jako své služby vrstvě bezprostředně vyšší. Například vrstva, která zajišťuje přenos jednotlivých bitů, může nabízet své služby bezprostředně vyšší vrstvě, která s jejich pomocí přenáší celé bloky dat apod. V obecném případě (viz obr. 23.1.) tedy každá vrstva nabízí určitý repertoár služeb vrstvě bezprostředně vyšší, a k realizaci těchto služeb sama využívá služeb vrstvy bezprostředně nižší.

Představa o tom, kolik samostatných vrstev vymezit a jaké jim svěřit úkoly, tvoří tzv. vrstvový model (layered model). Názorů na to, jak by takový vrstvový model měl vypadat, může být samozřejmě celá řada. Přístě se seznámíme s jedním z nich, kterým je tzv. referenční model ISO/OSI.

Rozdělení na hierarchické vrstvy v rámci vrstvového modelu ještě samo o sobě nezajišťuje hlavní efekt dekompozice jednoho velkého problému na několik dílčích problémů - možnost řešit tyto dílčí problémy samostatně a nezávisle na sobě. K tomu je nutné ještě stanovit přesná pravidla vzájemné součinnosti sousedních vrstev - tedy definovat přesná rozhraní (interface) mezi jednotlivými vrstvami. Součástí této definice musí být např. přesné vymezení jednotlivých služeb, způsob jejich volání, počty parametrů atd.

Jakmile jsou známy úkoly, které má určitá vrstva řešit, a je také přesně definováno její rozhraní s oběma sousedními vrstvami, je možné začít uvažovat o způsobu, jak zajistit ty úkoly, které byly vrstvě svěřeny. Zde je dobré si uvědomit, že každá vrstva sice využívá služby vrstvy bezprostředně nižší a sama nabízí své služby vrstvě bezprostředně vyšší, jejím partnerem při komunikaci v síti je ale ta vrstva, která se na jiném uzlovém počítači nachází na stejné úrovni hierarchie vrstev (v angličtině se pro takovou vrstvu používá označení "peer"). Tyto stejnolehlé vrstvy musí být spolu domluveny na společných pravidlech vzájemné komunikace, které také musí důsledně dodržovat. Použijeme-li již dříve citovaný příklad vrstvy, která zajišťuje přenos celých bloků dat, jejím partnerem je stejnolehlá vrstva jiného uzlového počítače, se kterou musí být dohodnuta mj. na formátu bloků, které si navzájem posílají, na jejich délce, způsobu zabezpečení, způsobu reakce na příjem poškozeného bloku apod.

Soubor pravidel, které stejnolehlé vrstvy vrstvového modelu používají pro vzájemnou komunikaci, tvoří tzv. protokol.

Ke každé vrstvě v rámci určitého vrstvového modelu se tedy vztahuje určitý protokol, podle kterého příslušná vrstva pracuje. Pro jednu a tutéž vrstvu však může připadat v úvahu více různých protokolů - stejné úkoly totiž mohou být často zajišťovány různými způsoby.

K určitému vrstvovému modelu, který definuje způsob rozčlenění na vrstvy, tedy může existovat celá soustava protokolů (protocol suite), v rámci které může pro některé vrstvy připadat v úvahu několik vzájemně alternativních protokolů. Například pro naše dvě citované vrstvy (zajišťující přenos bitů resp. celých bloků) bude obvykle existovat více různých protokolů podle toho, zda jsou k přenosu využívány např. komutované linky veřejné telefonní sítě, pevné telefonní okruhy, veřejná datová síť, optická vlákna, družicové spoje atd.

Jakmile je pro každou vrstvu vybrán jeden konkrétní protokol, vzniká tzv. sestava protokolů (protocol stack), která přesně odpovídá hierarchickému členění na jednotlivé vrstvy.

Navrhnout rozčlenění základního programového vybavení na jednotlivé vrstvy, vymezit úkoly, které by tyto vrstvy měly vykonávat a stanovit protokoly, které by se přitom měly používat - to vše již dává dosti ucelenou představu o tom, jak by počítačová síť měla vypadat a jak by měla fungovat. Na základě této ucelené představy, která tvoří architekturu sítě (network architecture), je již možné uvažovat o konkrétní implementaci.

Rozdělení základního programového vybavení sítě na vrstvy a jejich samostatná a nezávislá realizace má vedle rozdělení jednoho velkého problému na několi menších, snáze zvládnutelných částí, ještě jednu velmi významnou výhodu. Tou je možnost snažšího přizpůsobení změnám - stačí vždy vyměnit jen ty vrstvy, kterých se změna týká, a ostatní ponechat nezměněné.