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

Relační vrstva

Jak jsme si již naznačili dříve, čtyři nejnižší vrstvy referenčního modelu ISO/OSI jsou zaměřeny především na vlastní přenos dat mezi jednotlivými uzlovými počítači. Každá z nich přitom poskytuje "o něco více" než vrstva bezprostředně nižší - čtvrtá (tj. transportní) vrstva pak nabízí prostředky pro takovou komunikaci dvou koncových počítačů resp. účastníků, která je nezávislá na konkrétní komunikační podsíti, na její topologii i na dalších specifikách. Vyšší vrstvy referenčního modelu ISO/OSI jsou pak již orientovány spíše na potřeby síťových aplikací. Samy využívají přenosové služby transportní vrstvy, a přidávají k nim takové funkce a schopnosti, které by měly být užitečné pro většinu aplikací. Takový je tedy smysl existence páté (relační), šesté (prezentační), a vlastně i sedmé (aplikační) vrstvy ISO/OSI modelu.

Referenční model ISO/OSI tedy vychází z představy, že jednotlivé aplikace by měly mít k dispozici a měly by využívat ještě dokonalejší a obecnější služby, než jaké nabízí transportní vrstva. Jejich realizaci pak referenční model svěřuje relační (session) a prezentační (presentation) vrstvě. Mlčky tím ovšem předpokládá, že je budou využívat všechny aplikace, nebo alespoň většina z nich - jen pak totiž má rozumný smysl realizovat je pro všechny aplikace společně. Existuje ale velké množství aplikací, které tento předpoklad nesplňují, a které plně vystačí s takovými službami, jaké nabízí již transportní vrstva. V tomto ohledu není jistě bez zajímavosti, že "konkurenční" soustava protokolů TCP/IP vychází z přesně opačné úvahy než referenční model ISO/OSI - svým aplikacím nabízí pouze přenosové služby na úrovni transportní vrstvy. Potřebuje-li některá aplikace resp. služba aplikační vrstvy služby obecnějšího charakteru, musí si je realizovat sama vlastními silami. To je také důvod, proč soustava protokolů TCP/IP, na které je vybudována např. síť ARPANET resp. dnešní Internet, s existencí relační a prezentační vrstvy vůbec nepočítá.

Relační vrstvu s takovými funkcemi, jaké jí přisuzuje referenční model ISO/OSI, neměla v době jeho zavedení žádná síť - snad s výjimkou sítě SNA firmy IBM, která má obdobné funkce realizovány ve více různých vrstvách.

Při vytváření samotného referenčního modelu ISO/OSI byla kolem relační vrstvy a jejích úkolů velká diskuse. Některé alternativní návrhy, které se v té době objevily, s relační vrstvou dokonce vůbec nepočítaly. Nakonec se však relační vrstva do referenčního modelu přeci jen prosadila. Spolu se svou bezprostředně nadřazenou (tj. prezentační vrstvou) však byla a nadále je relativně nejméně propracovanou vrstvou.

Co je vlastně relace?

Pro správné pochopení smyslu relační vrstvy je dobré si nejprve ozřejmit onen poněkud vágní termín relace (session). Nejnázornější bude zřejmě analogie s telefonním hovorem - ten je třeba nejprve vytočit (čímž vzniká analogie transportního spojení), a pak je možné jeho prostřednictvím vést rozhovor (relaci) dvou účastníků.

Relaci tedy můžeme považovat za spojení mezi dvěma koncovými účastníky na úrovni bezprostředně vyšší, než je vrstva transportní. Obvykle je každé takovéto spojení (relace) zajišťováno prostřednictvím jednoho transportního spojení (tj. spojení na úrovni transportní vrstvy), které je zřizováno a rušeno při zřizování resp. rušení relace - viz obr. 36.1. a/. Je ovšem možný i takový případ, kdy jedno transportní spojení zajišťuje dvě nebo více po sobě jdoucích relací, viz obr. 36.1. b/. Použijeme-li opět analogii s telefonním hovorem, odpovídá tato situace tomu, že dva účastníci telefonního hovoru svůj rozhovor dokončí, ale místo zavěšení předají telefon jiné dvojici, která se může začít bavit o něčem zcela jiném - tedy zahájit nový rozhovor (relaci).

Obrázek 36.1.
Obr. 36.1.: Vztah relace a transportního spojení
a/ jedna relace - jedno transportní spojení
b/ více relací - jedno transportní spojení
c/ jedna relace - více transportních spojení
Podobně, jako se transportní vrstva snaží zakrýt případné výpadky spojení na úrovni síťové vrstvy, měla by se i relační vrstva dokázat vyrovnat s případným výpadkem transportního spojení, a zajistit pokračování relace prostřednictvím nově zřízeného transportního spojení - viz obr. 36.1. c/. V naší "telefonní" analogii to odpovídá situaci, kdy v průběhu rozhovoru dvou účastníků je jejich hovor přerušen, a oni si musí zavolat znovu, aby svůj rozhovor dokončili.

Zajímavou odlišností relace od transportního spojení je i způsob jejího ukončení. V případě transportního spojení nabízí referenční model ISO/OSI jen prostředky pro jednostranné direktivní ukončení spojení, kterému druhá strana nemá možnost zabránit. Na úrovni relační vrstvy se však předpokládá spíše ukončení na základě vzájemné dohody obou zúčastněných stran. Přesněji na návrh jedné strany, který ale druhá strana má možnost odmítnou a zajistit si tak pokračování relace.

Řízení dialogu

Jedním z hlavních úkolů relační vrstvy je řízení dialogu mezi oběma koncovými účastníky. Tak jako při telefonním rozhovoru není možné (či alespoň slušné), aby oba účastníci mluvili současně, existují i v počítačových sítích takové aplikace, které vyžadují koordinované střídání obou zúčastněných při vysílání (například různé aplikace transakčního charakteru apod.).

Relační vrstva tento požadavek zajišťuje obvykle pomocí mechanismu předávání pověření k přenosu dat (data token) - vysílat data smí vždy jen ten, kdo vlastní tento pomyslný štafetový kolík (pověření resp. token), viz obrázek 36.2. b/. Relační vrstva přitom nabízí prostředky, pomocí kterých lze pověření předat, nebo si jej naopak vyžádat.

Obrázek 36.2.
Obr. 36.2.: Představa vzájemné komunikace v rámci relace
a/ plně duplexní dialog
b/ poloduplexní dialog
Obecně se na úrovni relační vrstvy rozlišují tři způsoby vedení dialogu - plně duplexní (v terminologii RM ISO/OSI: TWS resp. Two-Way-Simultaneous), poloduplexní (TWA resp. Two-Way-Alternate) a simplexní (One-Way). Mechanismus předávání pověření se přitom týká samozřejmě jen poloduplexního dialogu. Zdůrazněme si však, že způsob vedení dialogu nemá nic společného s duplexním, poloduplexním či ev. simplexním charakterem přenosového kanálu. Všechna spojení v referenčním modelu ISO/OSI jsou obecně plně duplexní, a umožňují tedy současný přenos dat oběma směry. Různé aplikace však z různých důvodů nemusí této možnosti využívat, a po plně duplexním spoji mohou vést jen poloduplexní dialog.

Synchronizace

Dalším důležitým úkolem relační vrstvy je tzv. synchronizace (synchronization, též: checkpointing). K jejímu pochopení si nejprve představme následující situaci: příjemcem dat v rámci určité relace nechť je počítač, který si přijímaná data průběžně zapisuje na disk, případně je ihned tiskne na tiskárně. Dojde-li náhle k poruše disku či tiskárny (nebo jí např. dojde papír, toner apod.), může příjemce přijít o určitý objem dat, které jinak v pořádku přijal (tj. které byly transportní vrstvou bezchybně doručeny).

Obrázek 36.3.
Obr. 36.3.: Představa kontrolních bodů
Co je pak zapotřebí, je možnost "vrátit se o kousek zpět", a ztracená data přenést znovu. Tedy znovu dosáhnout potřebné synchronizace (vzájemného souladu). Relační vrstva řeší tento problém možností vkládat do přenášených dat kontrolní body (synchronization points, checkpoints). Příjemci pak umožňuje, aby si na vysílajícím vyžádal návrat k zadanému kontrolnímu bodu, a nové vyslání těch dat, která leží za tímto bodem.

Není ovšem úkolem relační vrstvy pamatovat si přenášená data tak, aby byl možný návrat k existujícím kontrolním bodům. Tato data si musí "pamatovat" sám jejich odesilatel, který služeb relační vrstvy využívá. Aby si ale nemusel uchovávat zbytečně velké objemy dat, rozlišuje relační vrstva dva druhy kontrolních bodů - hlavní (major) a vedlejší (minor). Rozdíl mezi nimi je ten, že přes vedlejší kontrolní bod se vracet lze, zatímco přes hlavní kontrolní bod již nikoli. Pro vysílajícího z toho pak vyplývá, že si musí "pamatovat" přenášená data jen od posledního hlavního kontrolního bodu - viz obr. 36.3.