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

Referenční model ISO/OSI

První počítačové sítě v dnešním slova smyslu - pro rutinní provozování na komerčním principu, a nikoli pro experimentální účely - se začínají budovat někdy v polovině 70. let, kdy se také na trhu objevují první produkty určené pro tyto sítě. Problém byl ale v tom, že příslušné produkty byly ryze proprietární (tj. specifické pro konkrétního výrobce) a neumožňovaly vzájemnou interoperabilitu. Jednalo se o řešení, uvedená na trh velkými firmami (tehdy hlavně IBM a DEC) a koncipovaná podle partikulárních zájmů, představ i tradic příslušných firem (například firma IBM koncipovala svou síťovou architekturu SNA spíše jako způsob budování rozsáhlých terminálových sítí ke svým střediskovým počítačům). To, co velmi brzy začalo chybět, byla taková síťová architektura, která by byla dostatečně otevřená, tedy nezávislá na konkrétním výrobci, široce dostupná ve svých specifikacích, umožňující požadovanou kompatibilitu a vzájemnou interoperabilitu řešení od různých výrobců a otevírající prostor konkurenci (a naopak nevytvářející závislost zákazníka na jediném "dvorním" dodavateli).

Geneze ISO/OSI

Úkolu vypracovat takovouto nezávislou architekturu se nakonec dobrovolně ujala mezinárodní standardizační organizace ISO (International Standards Organization, správně: International Organization for Standardization), sdružující národní standardizační organizace většiny vyspělých zemí světa. Zpočátku byl její záměr takový, že vypracuje jednotný standard pro fungování otevřených systémů - tedy vlastně pro fungování všech počítačů jako takových, aniž by se nutně muselo jednat o uzly zapojené do nějaké sítě. Mělo se to jmenovat "Open Systems Architecture" (doslova: architektura otevřených systémů), ale samozřejmě se brzy ukázalo, že něco takového je nad tehdejší možnosti (a určitě i dnešní, nehledě již na účelnost). Proto lidé z organizace ISO poněkud slevili, zejména v tom ohledu, že se nebudou zabývat fungováním počítačů jako takových, ale pouze tím, co se týká jejich vzájemné komunikace. Z honosného projektu "Open Systems Architecture" se tak stalo realističtější "Open Systems Interconnection Architecture" (doslova: architektura vzájemného propojování sítí).

Nakonec však bylo nutné něco slevit i z této omezené představy - důvodem totiž byl zejména styl práce lidí z organizace ISO, kteří nepovažovali za možné přejímat jinde vyvinutá a jinde standardizovaná řešení, ale připouštěli pouze to, co sami schválí a vydají jako vlastní standard (takže vlastně nedůvěřovali v kompetentnost kohokoli jiného). Díky tomu, i díky dalším faktorům, se postup prací natolik zpomalil, že se záhy ukázalo jako nezbytné opět něco slevit: nevydávat vše jako skutečnou síťovou architekturu, tedy včetně všech protokolů, ale pouze jako určitý prázdný rámec - jako představu o tom, kolik má být hierarchických vrstev a co mají dělat, ale bez konkrétních protokolů, které by do těchto vrstev "zapadaly" (s tím, že tyto protokoly budou dopracovávány postupně podle toho, jak budou pokračovat práce na jejich vývoji).

Konkrétním výsledkem pak musela být i další změna názvu. Z přechodného "Open Systems Interconnection Architecture" se posléze stal "Reference Model for Open Systems Interconnection" (doslova "referenční model pro propojování otevřených systémů"). Přitom slovní spojení "referenční model" je zde použito právě pro zdůraznění toho, že jde o obecnou koncepci, vzor, rámec resp. model (a nikoli o konkrétní a striktně definovaný předpis), který bude teprve postupem času naplňován konkrétními návody (protokoly) podle toho, jak tyto budou dostupné.

Sedm vrstev ISO/OSI

Autoři referenčního modelu ISO/IOSI dospěli k závěru, že hierarchických vrstev, které zajistí fungování sítě, by mělo být sedm. Rozdělili je přitom do dvou velkých bloků po třech vrstvách, mezi kterými je jedna "přizpůsobovací" vrstva. Blok tří spodních vrstev je přitom zaměřen na přenos dat v síti, zatímco blok tří vyšších vrstev je naopak zaměřen na potřeby jednotlivých aplikací a snaží se jim poskytovat potřebnou podporu. Přizpůsobovací vrstva mezi oběma bloky pak má vyrovnávat rozdíly mezi možnostmi bloku nižších vrstev, a potřebami bloku vyšších vrstev. Tento cíl asi nejlépe dokresluje představa, kterou autoři celého referenčního modelu zastávali: předpokládali, že tři nejnižší vrstvy budou v praxi realizovány tzv. veřejnými datovými sítěmi (tj. sítěmi, které někdo provozuje proto, aby mohl pro své zákazníky přenášet jejich data - podobně jako to veřejná telefonní síť dělá s telefonickými hovory). Přitom uživateli takovýchto veřejných datových sítí měly být úplně jiné subjekty, které si nemohly diktovat své podmínky ohledně způsobu fungování datové sítě (proto byla zařazena příslušná přizpůsobovací vrstva).

[Obr: bs0201.gif (5809 Bytes)]

Představa o realizaci datových přenosů prostřednictvím veřejné datové sítě pak ovlivnila i koncepci tří nejnižších vrstev jako takových - ty byly zvoleny tak, aby na ně bylo možné co nejsnáze "napasovat" již tehdy existující standard pro veřejné datové sítě, daný doporučením X.25.

Proberme si nyní funkci jednotlivých vrstev referenčního modelu ISO/OSI postupně směrem od nejnižší vrstvy k té nejvyšší. Přitom nebudeme zapomínat na základní pravidlo komunikace mezi hierarchicky uspořádanými vrstvami, které říká, že každá vrstva sama využívá služeb své bezprostředně nižší vrstvy, sama plní určité úkoly (které si lze představit jako "přidanou hodnotu" ke službám nižší vrstvy) a výsledek pak nabízí své bezprostředně vyšší vrstvě jako služby k využití.

Fyzická vrstva (physical layer)

Úkolem fyzické vrstvy, která jako jediná nemá žádnou bezprostředně nižší vrstvu, je přenos jednotlivých bitů k přímým sousedům (sousedním uzlům, ke kterým vede přímé spojení). Fyzická vrstva se stará o to, aby každý bit byl přenesen korektním způsobem (aby jej příjemce správně rozpoznal a interpretoval), což mj. zahrnuje například otázky kódování, časování, modulace apod. Důležité přitom je, že fyzická vrstva nijak neinterpretuje přenášené bity, tj. nesnaží se jim přiřazovat nějaký význam (takže například nepozná, že nějaký bit je řídící a je třeba součástí něčí adresy, že je určitý bit součástí "čistých" dat apod.).

Linková vrstva (data link layer)

Linkové vrstva (někdy též "spojová vrstva") již může ke své činnosti využívat služeb bezprostředně nižší fyzické vrstvy, spočívající v přenosu jednotlivých bitů. Pomocí této služby pak linková vrstva realizuje přenos celých datových bloků, kterým se na této úrovni říká rámce (frames). Znamená to mj., že se tato vrstva musí postarat o správné rozpoznání začátku a konce každého rámce i jeho jednotlivých částí, včetně hlavičky a adres, které jsou v ní obsažené.

Důležité je, že podobně jako vrstva fyzická, dokáže vrstva linková přenášet své rámce jen k sousedním uzlům (neboli k uzlům, se kterými má přímé spojení). Nejznámějším protokolem linkové vrstvy pro rozlehlé sítě je zřejmě protokol HDLC a jeho různé odvozeniny. V prostředí lokálních sítí funguje na této úrovni například dobře známý ethernet.

Síťová vrstva (network layer)

Hlavním úkolem síťové vrstvy je tzv. směrování, neboli nalezení vhodné cesty vedoucí od odesilatele dat až k jejich koncovému příjemci. V praxi totiž nemusí být každá dvojice odesilatel/příjemce vždy sousední v tom smyslu, že by mezi nimi existovalo přímé spojení (tj. v "dosahu" linkové vrstvy). Častější je spíše případ, kdy mezi odesilatelem a koncovým příjemce vede cesta pouze přes několik jiných uzlů (přestupních, mezilehlých uzlů), V takovém případě je ale nutné najít potřebnou cestou přes mezilehlé uzly (právě v tom spočívá směrování, anglicky "routing") a potřebný přenos přes mezilehlé uzly fakticky realizovat.

[Obr: bs0202.gif (6447 Bytes)]
Představa vkládání paketů do rámců

Také síťová vrstva přenáší data po blocích, kterým se říká pakety (anglicky "packets"), zatímco na úrovni linkové vrstvy se jim říká rámce. Představa fungování je taková, že síťová vrstva v určitém uzlu rozhodne o dalším směru, kterým by měl být konkrétní paket přenesen k některému ze sousedních uzlů. Poté jej předá své linkové vrstvě, která paket vloží do svého rámce a přenese k příslušnému sousednímu uzlu. Zde jej partnerská linková vrstva vybalí a předá datový paket své bezprostředně vyšší síťové vrstvě. Ta rozhodne, kterým směrem by měl být paket dále odeslán …a vše se opakuje, dokud datový paket nedorazí ke svému konečnému cíli (viz výše uvedený obrázek).

[Obr: bs0204.gif (4263 Bytes)]
Představa přenosu paketů přes vnitřní uzly sítě

Transportní vrstva (transport layer)

Úkolem transportní vrstvy je přizpůsobení možností tří nejnižších vrstev (síťové, linkové a fyzické) představám vyšších vrstev. Konkrétní představy a možnosti se přitom mohou dotýkat různých věcí, ale nejčastěji jde o rozdíly ve spolehlivosti přenosových služeb a v jejich spojovaném či nespojovaném charakteru. Například otázka spolehlivosti se týká toho, co se má stát při výskytu nějaké chyby při přenosu. Pokud ten, kdo chybu zjistí, je také povinen postarat se o nápravu, pak jde o službu tzv. spolehlivou. Naopak nespolehlivou službou je takový případ, kdy ten, kdo zjistí určitou chybu, nemá za povinnost ji napravovat (ale může poškozená data jednoduše zahodit a pokračovat dál). Logika nespolehlivých služeb je v tom, že mají menší režii a dokáží přenášet data rychleji a pravidelněji, přičemž o případnou nápravu se mohou efektivněji postarat vyšší vrstvy (pokud to vůbec chtějí).

Dalším významným úkolem transportní vrstvy (kromě již naznačeného přizpůsobení) je i rozlišování různých příjemců a odesilatelů v rámci jednotlivých uzlů. Až do síťové vrstvy včetně se totiž všechny přenosy týkají jednotlivých uzlů jako celků (a také příslušné adresy identifikují pouze uzly jako celky). Teprve transportní vrstva jde dále a rozlišuje jednotlivé příjemce v rámci těchto uzlů.

Relační vrstva (session layer)

Relační vrstva je nejčastěji kritizovanou vrstvou referenčního modelu ISO/OSI, protože právě ona toho má co nejméně na práci v porovnání s ostatními vrstvami. Kromě toho je i docela nesnadné vysvětlit, co vlastně tato vrstva má dělat. Především má podporovat vedení relací. Ale co je to vlastně relace?

Lze ji přirovnat k dialogu, který může být veden například po telefonu (který zde odpovídá transportnímu spojení). Když se s někým po telefonu o něčem bavíte, náhle vám "spadne linka" a hovor je přerušen, vytočíte si volaného znovu a pokračujete v nedokončeném rozhovoru. Takže relace trvá nadále, ale může být realizována pomocí více transportních spojení. Může to být ale i naopak, pomocí jednoho transportního spojení může být realizováno více jednotlivých relací (například když dva telefonující pánové po svém rozhovoru předají sluchátka svým manželkám, které se baví o něčem úplně jiném).

Prezentační vrstva (presentation layer)

Až do úrovně prezentační vrstvy se všechny nižší vrstvy úzkostlivě snaží, aby přenesly data přesně v takové podobě, v jaké byly odeslány, tedy bit po bitu. Někdy ale jeden a tentýž řetězec bitů může mít pro různé uzly různý význam (například když každý z nich používá jiný způsob kódování znaků, je nutné provést potřebnou konverzi). A právě to je úkolem prezentační vrstvy. Obecně jde o to, aby přenesená data měla pro příjemce stejný význam, jaký měla pro odesilatele - a to nemusí obnášet zdaleka jen kódování textů. Týká se to například i znázornění čísel celých i čísel reálných a samozřejmě všech datových struktur atd.

Aplikační vrstva (application layer)

Původní představa o aplikační vrstvě byla taková, že v ní budou umístěny všechny aplikace používané v prostředí sítě. Později se ale od této představy poněkud ustoupilo, protože se to ukázalo jako prakticky neprůchodné. Důvodem je zejména skutečnost, že vše, co se nachází v určité vrstvě, musí být standardizováno (pokryto standardy), a tudíž i poměrně striktně "sešněrováno" co do způsobu fungování a dalších vlastností. Ovšem u konkrétních aplikací není žádoucí, aby jejich autoři byli příliš svazováni tam, kde to není nutné, tedy například při tvorbě uživatelských rozhraní či v tom, jak dalece vyjdou vstříc uživateli a jeho komfortu. Proto v aplikační vrstvě nakonec zůstaly pouze části aplikací - takové, které nutně musí být standardizovány - zatímco zbývající části aplikací byly vysunuty nad aplikační vrstvu (resp. zcela mimo rámec ISO/OSI). Asi nejlépe se tato představa ilustruje na příkladu elektronické pošty: v aplikační vrstvě zůstaly poštovní servery, které musí být standardizovány natolik, aby se mezi sebou dokázaly domluvit a předávat si zprávy takovým způsobem a v takovém formátu, kterému budou rozumět. Naproti tomu klientské programy el. pošty mohly být vysunuty nad aplikační vrstvu, což poskytlo potřebnou volnost jejich autorům a uživatelům možnost výběru z různých poštovních klientů.

[Obr: bs0203.gif (6815 Bytes)]

Kritika ISO/OSI

Do vývoje referenčního modelu ISO/OSI bylo investováno opravdu mnoho prostředků a úsilí, bohužel s nepříliš velkým efektem. Celá koncepce ISO/OSI sice vznikala jako "ta jediná", "oficiální" či "ta správná" koncepce, podporovaly ji nejrůznějšími institucemi oficiálního charakteru, ale tržní síly nakonec rozhodly jinak. Prvotním důvodem byl zejména přístup autorů. Vše totiž vznikalo do značné míry od zeleného stolu, kdy se shromáždily určité požadavky na to, co by síť měla umět, a po určité diskusi se tyto požadavky daly na papír a vydaly ve formě závazného standardu. Teprve poté se někdo začal zabývat tím, jestli je něco takového vůbec realizovatelné, a pokud ano, jestli je to efektivní pro praktické použití a únosné z hlediska vývojových a výrobních nákladů. A zde obvykle nastal problém. Často se totiž zjistilo, že z původní představy je nutné značně slevit a vytvořit jen jakousi "rozumně implementovatelnou podmnožinu" příliš bohatého standardu.

Hezkým příkladem jsou tzv. vládní profily OSI (GOSIP, Governmental OSI Profile). Když totiž státní instituce oficiálně propagovaly koncepci ISO/OSI jako jedinou správnou, musely ji vyžadovat i při všech nákupech síťového vybavení v okruhu své působnosti. K tomu ale musely specifikovat, co přesně mají na mysli (jako "podmnožinu"), aby výsledek byl alespoň vzájemně kompatibilní. Nabídka konkrétních produktů na platformě ISO/OSI však na trhu byla minimální, ne-li přímo nulová. A tak i autoři vládních profilů GOSIP časem připustili možnost použití produktů na bázi konkurenční koncepce TCP/IP.

Celkově lze konstatovat, že koncepce ISO/OSI se prakticky vůbec neprosadila do praxe, která dala jednoznačně přednost koncepci TCP/IP (na které je mj. postaven i dnenší celosvětový Internet). Rozhodně to ale neznamená, že celé ISO/OSI patří na smetiště síťových dějin, to určitě ne. Kromě toho, že celá koncepce je velmi šikovná pro výuku problematiky síťování, je zde i mnoho dílčích řešení a myšlenek, které si přece jen našly svou cestou do praxe. Poměrně životaschopným se ukázal být například standard elektronické pošty X.400, který se dodnes používá a byly od něj odvozeny i některé komerčně velmi úspěšné systémy (například poštovní platforma MS Exchange firmy Microsoft). Podobně se ukázal být životaschopný i standard X.500 pro adresářové služby. Právě jeho zjednodušením a zmenšením vznikl protokol LDAP (Lightweight Directory Access Protocol) z rodiny TCP/IP, na kterém dnes funguje většina adresářových služeb v Internetu.