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

Linková vrstva - I.

Fyzická vrstva ISO/OSI modelu zajišťuje přenos jednotlivých bitů mezi dvěma uzlovými počítači, mezi kterými existuje přímé spojení (tj. vhodný komunikační kanál resp. okruh). Linková vrstva pak využívá těchto prostředků pro přenos větších bloků dat, označovaných jako rámce (frames), a přenos těchto rámců pak sama nabízí jako svou službu bezprostředně vyšší vrstvě - vrstvě síťové.

Fyzická vrstva však nijak nerozlišuje jednotlivé bity, které přenáší. Je proto na linkové vrstvě, aby sama zajistila jejich správnou interpretaci - aby dokázala rozpoznat, které bity resp. skupiny bitů představují řídící informace (např. signalizují začátek či konec bloku, udávají jeho délku apod.), a které bity představují vlastní "užitečná" data.

V případě asynchronního přenosu - viz 2. díl našeho seriálu - jsou přenášená data členěna na znaky (stejně velké skupiny bitů). Tyto jsou pak pro potřeby přenosu "obaleny" tzv. start a stop bity, které příjemci umožňují správně rozpoznat začátek a konec znaku. Potřebujeme-li pak přenášet data, tvořená posloupnostmi běžných (tj. tisknutelných) ASCII znaků, je nejjednodušší metodou vložit celý blok znaků mezi dvojici speciálních (tj. netisknutelných znaků): STX (Start of TeXt, začátek textu) a ETX (End of TeXt, konec textu), které jsou pro svou funkci označovány jako řídící znaky přenosu (transmission control characters). Tím se dosáhne potřebné synchronizace na úrovni rámců (frame synchronization), neboť znaky STX a ETX umožňují příjemci správně rozpoznat začátek a konec rámce (zatímco jednotlivé znaky rámce rozpoznává při asynchronním přenosu díky zmíněným start a stop bitům) - viz obr. 29.1. a/.

Obrázek 29.1.
Obr. 29.1. Synchronizace na úrovni rámců při asynchronním přenosu
a/ pro textová data
b/ pro binární data
Právě naznačený způsob ovšem nelze použít v případě, kdy potřebujeme přenést (jako data) i některé řídící znaky, nebo v případě, kdy místo znaků přenášíme obecná binární data. Ta sice můžeme rozdělit na stejně velké skupiny bitů a chápat je jako kódy jednotlivých znaků, stále se nám však může stát, že nám takto vyjde právě některý ze zmíněných řídících znaků. Pak je nutné zajistit tzv. transparenci dat (data transparency), tedy umožnit, aby mezi přenášenými daty mohly být i řídící znaky, a tyto nebyly interpretovány jako řídící, ale jako "užitečná" data. Používá se k tomu technika tzv. vkládání znaků (character stuffing), kdy je před řídící znaky STX a ETX vložen ještě jiný řídící znak - znak DLE (Data Link Escape, změna významu následujícího znaku). Ten se ovšem může vyskytovat i mezi vlastními daty, a proto se zde každý jeho výskyt zdvojuje - viz obr. 29.1. Příjemce se pak vždy po přijetí znaku DLE rozhoduje podle následujícího znaku - je-li jím další znak DLE, jednoduše jej vypustí (a přijme předchozí znak DLE jako "užitečná" data). Je-li naopak dalším znakem znak ETX, příjemce si z toho odvodí, že se dostal na konec bloku (viz obr. 29.1. b/.

Jednou z nevýhod asynchronního způsobu přenosu je vkládání nezbytných start a stop bitů, čímž se dosti podstatně snižuje efektivní přenosová rychlost. Pro vyšší přenosové rychlosti se proto používá spíše přenos synchronní (viz 2. díl seriálu).

Obrázek 29.2.
Obr. 29.2.: Synchronní znakově orientovaný přenos
a/ formát rámce
b/ synchronizace na úrovni znaků
Synchronní přenos si lze představit jako spojitý proud bitů (bez start a stop bitů), ve kterém příjemce musí správně rozpoznávat hranice mezi jednotlivými znaky (což představuje synchronizaci na úrovni znaků, character synchronization). Té se dosahuje pomocí speciálních znaků SYN (viz opět 2. díl našeho seriálu), které uvozují každý synchronně přenášený blok znaků, viz obr. 29.2.

Synchronizace na úrovni rámců (tj. správné rozpoznání začátku a konce rámce) se při synchronním přenosu může dosahovat stejně, jako při přenosu asynchronním - pomocí řídících znaků přenosu. Pak jde o tzv. znakově orientovaný přenos (character-oriented transmission).

Vkládání celých řídících znaků do přenášených dat a jejich nezbytné zdvojování při přenosu binárních dat ale opět přináší snížení efektivní přenosové rychlosti. Proto se dnes stále více uplatňuje bitově orientovaný přenos (bit-oriented transmission). Je založen na myšlence indikovat začátek a konec rámců nikoli řídícím znakem, ale skupinou bitů. Označení "bitově orientovaný" přitom zdůrazňuje skutečnost, že přenášená data jsou vyhodnocována bit po bitu, dokud není nalezena hledaná skupina bitů, indikující začátek rámce resp. jeho konec. Počet bitů, které tvoří vlastní obsah rámce, pak nemusí nutně být násobkem osmi.

Jednou z možností pro bitově orientovaný přenos je použít stejnou skupinu bitů, tzv. křídlovou značku (flag) pro uvození i zakončení rámce - viz obr. 29.3. a/. Tato křídlová značka se pak ovšem nesmí vyskytovat "uvnitř" vlastního rámce. Obvykle je křídlová značka tvořena posloupností "01111110", a potřebná transparence dat se zajišťuje vkládáním bitů (bit stuffing), při kterém je za každých pět po sobě jdoucích jedničkových datových bitů automaticky vložen jeden nulový bit (který příjemce zase automaticky odstraňuje) - viz obr. 29.3. b/.

Další možností je uvození celého rámce (po tzv. preambuli neboli synchronizačním poli) tzv. příznakem začátku rámce (start-of-frame delimiter), za kterým následuje hlavička (header) předem stanoveného formátu, a údaj o délce rámce - viz obr. 29.3. c/. Tato varianta se používá především u lokálních sítí.

Obrázek 29.3.
Obr. 29.3.: Synchronní bitově orientovaný přenos
a/ formát rámce s křídlovou značkou
b/ představa vkládání bitů
c/ formát rámce s příznakem začátku a zadanou délkou

Podle používaného způsobu přenosu lze protokoly, používané na úrovni linkové vrstvy ISO/OSI modelu, rozdělit do dvou velkých skupin: na znakově orientované protokoly (character-oriented protocols) a bitově orientované protokoly (bit-oriented protocols).

Mezi znakově orientované protokoly patří především protokol, vyvinutý firmou IBM pod označením Binary Synchronous Protocol, zkráceně nazývaný Bisync, či jen BSC. V poslední době se však stále více prosazují spíše bitově orientované linkové protokoly. Nejvýznamnějším představitelem této skupiny je opět protokol, vyvinutý firmou IBM pro její síťovou architekturu SNA - protokol SDLC (Synchronous Data Link Control). Od tohoto protokolu jsou pak odvozeny téměř všechny ostatní používané bitově orientované protokoly - HDLC (High-Level Data Link Control), pocházející od organizace ISO, LAP (Link Access Procedure) a jeho různé varianty od CCITT, či ADCCP (Advanced Data Communications Control Procedure), který je standardem ANSI.