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

Referenční model ISO/OSI - sedm vrstev

Jak jsme si uvedli v předcházejícím dílu našeho seriálu, dospěli tvůrci referenčního modelu ISO/OSI při svých úvahách k závěru, že optimální počet vrstev síťového softwaru bude sedm. Jaké vrstvy to jsou a jaké úkoly mají řešit? Vezměme to postupně zdola nahoru, od nejnižší vrstvy k nejvyšší:

1. Fyzická vrstva (Physical Layer)

Úkol této vrstvy je zdánlivě velmi jednoduchý - zajistit přenos jednotlivých bitů mezi příjemcem a odesilatelem prostřednictvím fyzické přenosové cesty, kterou tato vrstva bezprostředně ovládá. K tomu je ovšem třeba vyřešit mnoho otázek převážně technického charakteru - např. jakou úrovní napětí bude reprezentována logická jednička a jakou logická nula, jak dlouho "trvá" jeden bit, kolik kontaktů a jaký tvar mají mít konektory kabelů, jaké signály jsou těmito kabely přenášeny, jaký je jejich význam, časový průběh apod. Problematika fyzické vrstvy proto spadá spíše do působnosti elektroinženýrů a techniků.

2. Linková vrstva (Data Link Layer)

Fyzická vrstva poskytuje jako své služby prostředky pro přenos jednotlivých bitů. Bezprostředně vyšší linková vrstva (někdy nazývaná též: spojová vrstva či vrstva datového spoje) pak má za úkol zajistit pomocí těchto služeb bezchybný přenos celých bloků dat (velikosti řádově stovek bytů), označovaných jako rámce (frames). Jelikož fyzická vrstva nijak neinterpretuje jednotlivé přenášené bity, je na linkové vrstvě, aby správně rozpoznala začátek a konec rámce, i jeho jednotlivé části.

Na přenosové cestě může docházet k nejrůznějším poruchám a rušení, v jejichž důsledku jsou přijaty jiné hodnoty bitů, než jaké byly původně vyslány. Jelikož fyzická vrstva se nezabývá významem jednotlivých bitů, rozpozná tento druh chyb až linková vrstva. Ta kontroluje celé rámce, zda byly přeneseny správně (podle různých kontrolních součtů, viz 3. díl našeho seriálu). Odesilateli potvrzuje přijetí bezchybně přenesených rámců, zatímco v případě poškozených rámců si vyžádá jejich opětovné vyslání.

3. Síťová vrstva (Network Layer)

Linková vrstva zajišťuje přenos celých rámců, ovšem pouze mezi dvěma uzly, mezi kterými vede přímé spojení. Co ale dělat, když spojení mezi příjemcem a odesilatelem není přímé, ale vede přes jeden či více mezilehlých uzlů? Pak musí nastoupit síťová vrstva, která zajistí potřebné směrování (routing) přenášených rámců, označovaných nyní již jako pakety (packets). Síťová vrstva tedy zajišťuje volbu vhodné trasy resp. cesty (route) přes mezilehlé uzly, a také postupné předávání jednotlivých paketů po této trase od původního odesilatele až ke konečnému příjemci.

Síťová vrstva si tedy musí "uvědomovat" konkrétní topologii sítě (tj. způsob vzájemného přímého propojení jednotlivých uzlů).

4. Transportní vrstva (Transport Layer)

Síťová vrstva poskytuje bezprostředně vyšší vrstvě služby, zajišťující přenos paketů mezi libovolnými dvěma uzly sítě. Transportní vrstvu proto zcela odstiňuje od skutečné topologie sítě a vytváří jí tak iluzi, že každý uzel sítě má přímé spojení s kterýmkoli jiným uzlem sítě.

Transportní vrstvě díky tomu stačí zabývat se již jen komunikací koncových účastníků (tzv. end-to-end komunikací) - tedy komunikací mezi původním odesilatelem a konečným příjemcem.

Při odesílání dat zajišťuje transportní vrstva sestavování jednotlivých paketů, do kterých rozděluje přenášená data, a při příjmu je zase z paketů vyjímá a skládá do původního tvaru. Dokáže tak zajistit přenos libovolně velkých zpráv, přestože jednotlivé pakety mají omezenou velikost.

5. Relační vrstva (Session Layer)

Úkolem této vrstvy je navazování, udržování a rušení relací (sessions) mezi koncovými účastníky. V rámci navazování relace si tato vrstva vyžádá na transportní vrstvě vytvoření spojení, prostřednictvím kterého pak probíhá komunikace mezi oběma účastníky relace. Pokud je třeba tuto komunikaci nějak řídit (např. určovat, kdo má kdy vysílat, nemohou-li to dělat oba účastníci současně), zajišťuje to právě tato vrstva, která má také na starosti vše, co je potřeba k ukončení relace a zrušení existujícího spojení.

6. Prezentační vrstva (Presentation Layer)

Data, která se prostřednictvím sítě přenáší, mohou mít mj. povahu textů, čísel či obecnějších datových struktur. Jednotlivé uzlové počítače však mohou používat odlišnou vnitřní reprezentaci těchto dat - např. střediskové počítače firmy IBM používají znakový kód EBCDIC, zatímco většina ostatních pracuje s kódem ASCII. Podobně jeden počítač může zobrazovat celá čísla v doplňkovém kódu, zatímco jiný počítač v přímém kódu apod. - potřebné konverze přenášených dat má na starosti právě tato prezentační vrstva.

V rámci této vrstvy bývá také realizována případná komprese přenášených dat, eventuálně i jejich šifrování.

7. Aplikační vrstva (Application Layer)

Koncoví uživatelé využívají počítačové sítě prostřednictvím nejrůznějších síťových aplikací - systémů elektronické pošty, přenosu souborů, vzdáleného přihlašování (remote login) apod. Začleňovat všechny tyto různorodé aplikace přímo do aplikační vrstvy by pro jejich velkou různorodost nebylo rozumné. Proto se do aplikační vrstvy zahrnují jen části těchto aplikací, které realizují společné resp. obecně použitelné mechanismy. Uvažujme jako příklad právě elektronickou poštu - ta její část, která zajišťuje vlastní předávání zpráv v síti, je součástí aplikační vrstvy. Na všech uzlových počítačích, které používají tentýž systém elektronické pošty, je tato část stejná. Uživatelské rozhraní systému elektronické pošty, tedy ta jeho část, se kterou uživatel bezprostředně pracuje a jejímž prostřednictvím čte došlé zprávy, odpovídá na ně, připravuje nové zprávy a zadává je k odeslání, již není považována za součást aplikační vrstvy, neboť se může v každém konkrétním uzlu dosti výrazně lišit - např. ve způsobu svého ovládání (řádkovými příkazy či pomocí různých menu, s okénky či bez nich apod.). Jiným názorným příkladem může být emulace terminálů, potřebná např. pro vzdálené přihlašování (remote login). Ve světě dnes existuje nepřeberné množství různých terminálů, a realizovat potřebné přizpůsobení mezi libovolnými dvěma typy terminálů je v podstatě nemožné. Proto se zavádí jediný "referenční" terminál - tzv. virtuální terminál - a pro každý konkrétní typ terminálu se pak vytvoří jen jediné přizpůsobení mezi tímto virtuálním terminálem a terminálem skutečným. Prostředky pro práci s virtuálním terminálem přitom jsou součástí aplikační vrstvy (neboť jsou všude stejné), zatímco prostředky pro jeho přizpůsobení konkrétnímu terminálu již součástí aplikační vrstvy nejsou.