Vyšlo na www.novinky.cz dne 25.1.1999
Vytištěno z adresy: http://www.earchiv.cz/anovinky/ai1483.php3

Síťová architektura

Navrhnout a realizovat počítačovou síť není jednoduchá záležitost. Právě naopak, je to úkol jednak velmi rozsáhlý (co do úsilí, které je nutné vynaložit), jednak značně citlivý na dodržení určitých kritérií a cílů - například kompatibility, tak aby různé části sítě spolu dokázaly bez problémů komunikovat. Stejně tak je ale nutné, aby komunikace síťových uzlů byla dostatečně efektivní (aby nebyla příliš pomalá, nespotřebovávala příliš mnoho přenosové kapacity atd.) a aby implementace mohla být dostatečně flexibilní - například v tom smyslu, aby jednotlivé části sítě mohly využívat různé přenosové technologie, a přesto jim to nebránilo v řádné a bezproblémové spolupráci (třeba aby v lokální síti mohly být kombinovány ethernetové segmenty a segmenty Token Ring, aby lokální sítě mohly být propojovány s rozlehlými sítě atd.).

Velikost právě naznačeného úkolu (spolu s požadavky, které jsou na něj kladeny) si doslova vynucuje dekompozici celého problému - neboli takové řešení, které spočívá v rozdělení jednoho velkého problému na několik menších problémů, které jsou již mnohem snadněji zvládnutelné. Ve světě programování (při tvorbě rozsáhlejších programových celků) je to ostatně dnes již naprosto standardní postup - neřešit vše jako jeden veliký balík, ale raději jej rozdělit na několik menších (a tudíž i snadněji zvládnutelných) částí. Ty se pak řeší samostatně a nezávisle na sobě.

Proč vrstvový model?

V konkrétním případě počítačových sítí se přímo nabízí vést "dělicí čáry" dekompozice horizontálně, neboli rozdělit celý velký síťový "balík" na hierarchicky uspořádané vrstvy. Povaze řešeného problému to vyhovuje proto, že v počítačových sítích se řeší úkoly na různých úrovních abstrakce, a tak je celkem přirozené zařazovat je do hierarchicky uspořádaných vrstev, které odpovídají těmto stupňům abstrakce. Takže na úplně nejnižších vrstvách se budou řešit takové "detailní" věci, jakými jsou třeba přenosy jednotlivých bitů, na vyšších vrstvách pak přenosy celých bloků dat a na nejvyšších vrstvách už budou tyto přenosy využívány například k přenosu celých souborů, k přenosu zpráv elektronické pošty apod.

[Obr: pocitacova_sit_a_vrstvy.gif (2131 Bytes)]
Představa dekompozice na hierarchické vrstvy

Další významnou výhodou horizontálního vedení "dělicí čáry" a hierarchického systému vrstev, který z toho vychází, je možnost obměňovat v konkrétních situacích jen některé vrstvy (v praxi spodní), a ponechávat ostatní (horní) beze změny. Takže když má být nějaká síť provozována například jako lokální nad ethernetem, stačí použít takové nižší vrstvy, které jsou uzpůsobeny právě ethernetu (zatímco vyšší vrstvy jsou na této konkrétní přenosové technologii nezávislé). Naproti tomu v jiném prostředí, například v prostředí rozlehlé sítě, stačí použít odpovídající verze nižších vrstev (uzpůsobené například komunikaci po pevných datových okruzích). Vyšší vrstvy mohou tak být ponechány beze změny. Díky tomu pak výsledná soustava vzájemně propojených sítí může nabízet všude stejnou funkčnost a služby (z pohledu koncového uživatele například možnost přenosu souborů, elektronickou poštu, vzdálené přihlašování atd.).

Komunikace mezi vrstvami a služby

Aby výše popsaná dekompozice do hierarchicky uspořádaných vrstev měla smysl a skutečně poskytovala všechny naznačené výhody, musí pro ni být stanovena jistá "pravidla hry". Například zásada, že každá vrstva komunikuje v rámci daného uzlu vždy jen se svými bezprostředně sousedními vrstvami, tedy s vrstvou bezprostředně nižší a vrstvou bezprostředně vyšší (a nikoli "s přeskoky", viz obrázek). Představa je zde taková, že každá z hierarchicky uspořádaných vrstev vždy přidává "něco navíc" k tomu, co "umí" vrstva bezprostředně nižší. Jinými slovy: každá vrstva přidává určitou "přidanou hodnotu" ke službám nižší vrstvy a výsledek sama nabízí (jako svou vlastní službu) vrstvě bezprostředně vyšší. Například nejnižší přenosová vrstva dokáže přenášet jednotlivé bity mezi bezprostředně sousedními uzly - vyšší vrstva pak toho může využívat k tomu, aby přenášela mezi sousedními uzly celé bloky dat (tzv. rámce), zatímco ještě další vrstva k tomu přidává schopnost přenášet datové bloky (nyní již označované jako pakety) i mezi nesousedními uzly (tj. dokáže nalézt vhodnou "cestu" v celé síti, která vede přes mezilehlé uzly).

[Obr: bspc12.gif (2087 Bytes)]
Představa komunikace mezi vrstvami v rámci uzlu

Obecně tedy platí, že každá vrstva plní určité předem dané úkoly a k jejich plnění může využívat služby, které jí poskytuje vrstva bezprostředně nižší. Bezprostředně nadřazené vrstvě pak sama nabízí své schopnosti také ve formě služeb.

Protokoly

Přísně horizontální komunikace mezi vrstvami (popsaná v předchozím odstavci) se týká komunikace v rámci jednotlivých uzlů sítě. Podstatně jiná je situace u komunikace mezi jednotlivými uzly sítě. Zde totiž platí zásada, že spolu vždy komunikují pouze stejnolehlé vrstvy, neboli vrstvy na stejné úrovni hierarchického členění. Například vrstva, která v rámci jednoho uzlu zajišťuje přenos datových bloků (rámců) k sousedním uzlům, bude spolupracovat se stejnolehlou vrstvou na příslušném sousedním uzlu - právě a pouze tato vrstva je její "partnerskou" vrstvou.

[Obr: bspc14.gif (3280 Bytes)]
Představa komunikace mezi stejnolehlými vrstvami různých uzlů

Pro vzájemnou komunikaci stejnolehlých vrstev samozřejmě také musí být stanovena konkrétní "pravidla hry" - když si dva sousední uzly budou vyměňovat datové bloky (rámce), musí rozumět jejich formátu, rozumět adresám, které jsou v takovýchto blocích používány, znát pravidla samotného přenosu atd. Takováto "pravidla hry" mají povahu konvenci, které se říká protokol.

Důležité je uvědomit si, že protokoly jsou skutečně "pravidla", a ne například konkrétní "programy" - při respektování stejných pravidel (protokolů) spolu mohou komunikovat i značně různé uzly sítě, které stojí na různých systémových platformách a s různými implementacemi síťového softwaru (s různými programy, které ale dodržují stejné protokoly).

[Obr: bspc13.gif (2132 Bytes)]
Představa komunikace mezi stejnolehlými vrstvami různých uzlů

Dalším atributem protokolů je jejich příslušnost ke konkrétní hierarchické vrstvě - různé protokoly tedy "spadají" do konkrétních vrstev. Z druhé strany ale neplatí zásada "co vrstva, to jeden protokol" - pro jednu vrstvu může být určeno i více protokolů, které se mohou vzájemně vylučovat (nebo se naopak doplňovat). Nejlépe je chápat protokol jako konkrétní představu o způsobu dosažení konkrétních úkolů (které má daná vrstva na starosti). Mohou to být jen některé z úkolů, které daná vrstva plní (proto může být více protokolů určeno pro jednu vrstvu), a také to mohou být různé představy o naplnění stejného konkrétního úkolu - jde-li například o přenos datových bloků, může být tento přenos realizován jako tzv. spolehlivý (neboli: zabezpečení proti ztrátám a poškození přenášených dat), nebo naopak tzv. nespolehlivý (nezabezpečený proti ztrátám a poškození).

V rámci jedné vrstvy se tedy může "vyskytovat" i celá řada různých protokolů, které plní konkrétní (dílčí, ale různé) úkoly, nebo plní stejné úkoly jiným způsobem.

Síťová architektura

Pro praxi je samozřejmě velmi důležité, aby existovala všeobecně uznávaná a akceptovaná konvence o tom, kolik by mělo být hierarchicky uspořádaných vrstev a jaké úkoly by měly plnit. Do této představy by pak měly "zapadat" konkrétní protokoly, které říkají, jak mají být realizovány úkoly požadované po konkrétních vrstvách (samozřejmě na úrovni "pravidel hry", ne na úrovni konkrétní implementace). Takováto ucelená představa - o počtu vrstev, o jejich úkolech a o protokolech - se označuje jako síťová architektura.

Podíváme-li se na pojem "síťová architektura" s určitým nadhledem, pak můžeme říci, že jde o "ucelený světový názor" na to, jak by měl vypadat a jak by měl fungovat svět počítačových sítí. Tento názor však zůstává na úrovni zásad, principů a "pravidel hry". Snaží se co nejméně zasahovat do bezprostřední implementace. Snaží se co možná nejméně svazovat ruce těm, kteří budou podle něj implementovat konkrétní uzly a jejich programové vybavení. Na druhé straně musí tento "světonázor" zacházet až do takových detailů, aby byla zaručena vzájemná kompatibilita jednotlivých implementací.

Historicky se vyvinulo hned několik síťových architektur, které odpovídají takovýmto uceleným pohledů na to, jak by svět počítačových sítí měl vypadat. Po prvních architekturách, která byly značně proprietární, tedy vázané na konkrétní firmu (sem patří třeba architektury SNA či DECNET), se objevil tzv. Refereční model ISO/OSI jako "hlavní" a "oficiální" pokus o univerzální a otevřenou síťovou architekturu. Bohužel trpěl mnoha neduhy a nebyl příliš úspěšný (k důvodům se v tomto seriálu ještě dostaneme). Mnohem úspěšnější byla architektura vycházející z tzv. rodiny protokolů TCP/IP, na které je vybudován dnešní internet (také touto architekturou se budeme zabývat podrobněji). Kromě toho se ale objevily i další úspěšné architektury - například architektura XNS firmy Xerox, která se sice sama příliš neprosadila do podoby konkrétních produktů, ale stala se výchozím vzorem pro několik dalších síťových architektur. Nejznámější z nich je architektura používaná firmou Novell a neformálně označovaná jako IPX/SPX, podle dvou svých hlavních protokolů.