zpět do archivu článků |
rejstřík |
předchozí díl |
následující díl
Jiří Peterka: Co je čím ... v počítačových sítích (25):
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.