Vyšlo v týdeníku Computerworld č. 8/94,
Vytištěno z adresy: http://www.earchiv.cz/a94/a408c502.php3

Co je dobré znát, než začnete komunikovat

Tento článek vyšel v tzv. tématu týdne v CW 8/94, jako druhý ze série článků věnovaných problematice počítačových komunikací.

Počítačové komunikace jsou do značné míry interdisciplinární záležitostí - vedle "čistě počítačových" znalostí vyžadují také určité penzum základních znalostí z elektrotechniky. V tomto článku se pokusíme o stručné nastínění některých důležitých aspektů, které mají zásadní vliv na principiální možnosti počítačových komunikací. Nepůjde nám přitom o přesný popis dané problematiky, ale jen o získání potřebného nadhledu a vhodné "tušení souvislostí".

Uživatelé počítačů, zvyklí na digitální technologie, žijí často v přesvědčení, že přenosové cesty jsou ideální, a dokáží přenášet nejrůznější signály bez jakýchkoli změn. Ve skutečnosti tomu tak ale není - žádná přenosová cesta nikdy není ideální. Vždy má určité reálné obvodové vlastnosti, které způsobují různé deformace přenášeného signálu.

Jako příklad si představme (v souladu s obrázkem 1) dvojici vodičů: jakmile jsou vedeny souběžně, chovají se vždy jako kondenzátor (resp. kapacita), a jakmile mají nenulovou délku, vykazují určitý odpor. Ve skutečnosti se tedy obyčejná dvojice souběžně vedených vodičů chová jako poměrně složitý elektrický obvod (viz pravá horní část obrázku 1), ve kterém se vedle kapacit a odporů uplatňuje ještě i indukčnost.

Obr. 1: Vliv obvodových vlastností na přenos signálu

Jaký vliv ale mají tyto reálné obvodové vlastnosti na přenášený signál? Odpor, který vodiče vykazují, způsobuje tzv. útlum, neboli zmenšení amplitudy přenášeného signálu (viz pravá střední část obrázku 1). Kapacita a indukčnost pak působí tak, jako kdyby chtěly bránit změnám přenášeného signálu - jestliže například změníme hodnotu přenášeného signálu skokem (tj. vytvoříme mu "ostrou" hranu), projeví se tendence působit proti změnám zkosením a zaoblením této hrany (viz levá střední část obrázku 1). Pokud bychom přenášeli pravidelně se měnící signál obdélníkového průběhu, vliv kapacity a indukčnosti z něj udělá spíše periodický signál sinusového průběhu, a útlum se pak postará ještě o zmenšení jeho amplitudy (maxima jednotlivých impulsů) - viz spodní část obrázku 1.

Šířka pásma (bandwidth)

Praktický důsledek reálných obvodových vlastností všech přenosových cest je pak následující: pro každou konkrétní přenosovou cestu existuje určitý rozsah frekvencí, takových že signály s frekvencí (kmitočtem) v tomto rozsahu přenosová cesta přenáší s přijatelným zhoršením jejich "kvality", zatímco signály s frekvencí mimo tento frekvenční rozsah již přenáší s neúnosně velkým zkreslením a útlumem.

Tomuto rozsahu frekvencí (kmitočtů) se říká šířka pásma (bandwidth). Příkladem může být šířka pásma komutovaného okruhu veřejné telefonní sítě, která je uměle omezena na 3100 Hz - tento okruh je schopen přenášet dostatečně věrně signály s frekvencí 300 až 3400 Hz (což vcelku postačuje pro srozumitelnost přenášeného lidského hlasu).

Jak ale souvisí šířka pásma s objemem dat, který můžeme po dané přenosové cestě přenést?

Zkusme si nejprve ukázat, jaký vliv má omezená šířka pásma na přenos signálu obdélníkového průběhu. Zde je možné využít jeden zajímavý teoretický výsledek francouzského matematika a fyzika J.B.J. Fouriera (1768-1830): tento výsledek říká, že každý periodický signál lze složit z harmonických signálů (tj. signálů např. sinusového průběhu) o frekvencích, které jsou celistvými násobky určité základní frekvence. Tento výsledek lze ovšem interpretovat i takto: každý periodický signál je možné rozložit na jednotlivé harmonické složky (harmonické signály). Problém je ovšem v tom, že pro obecný periodický signál - a například také pro námi uvažovaný signál obdélníkového průběhu - vychází při takovémto rozkladu nekonečný počet harmonických složek. Složky s vyššími frekvencemi sice budou zastoupeny jen v relativně malé míře (a s rostoucí frekvencí bude toto jejich zastoupení ještě rychle klesat), ale z konečného počtu složek nelze zrekonstruovat původní signál zcela přesně. Nyní ale zpět k vlivu šířky pásma: je-li tato omezena, pak není schopna přenášet harmonické složky od určité frekvence výše. Neboli: je schopna přenášet jen určitý počet nižších harmonických složek, které dokáží pouze aproximovat původní signál s určitou mírou věrnosti. S jakou, o tom rozhoduje jak samotný tvar přenášeného signálu, tak i konkrétní šířka pásma. Celou situaci názorně ukazuje obrázek 2.


Obr. 2: Vliv omezené šířky pásma na přenos signálu

Poučení, které z právě vyslovených skutečností vyplývá, je následující: má-li být příjemce schopen zrekonstruovat z přijatého signálu s dostatečnou věrností původní vysílaný signál, pak tento nesmí mít příliš velkou frekvenci. Ovšem jaká je míra onoho "příliš"? Samozřejmě závisí jak na šířce přenosového pásma, která je k dispozici, tak i na míře věrnosti, s jakou je potřeba původní signál rekonstruovat, a v neposlední řadě i na charakteru změn samotného signálu (zda se např. mění skokem či pozvolna atd.).

Modulační rychlost

Nás však tak dalece nezajímá přenášený signál jako takový, jako spíše jeho informační obsah. Jak ale může spojitý (a tudíž analogový) signál reprezentovat nespojité (diskrétní, digitální) hodnoty? Nejlépe tak, že nespojitým (diskrétním) hodnotám budou odpovídat nějaké vhodně rozlišitelné stavy přenášeného signálu - definované nejčastěji tím, že určitá charakteristika analogového signálu (amplituda, frekvence, fáze apod.) bude spadat do určitého intervalu svých možných hodnot. Tímto způsobem může např. záporné napětí reprezentovat jednu diskrétní hodnotu a nezáporné napětí druhou.

Budeme-li pak chtít přenést co nejvíce diskrétních hodnot, necháme náš analogový signál co možná nejčastěji přecházet mezi jednotlivými stavy, které reprezentují diskrétní hodnoty. Můžeme ale frekvenci těchto přechodů libovolně zvyšovat, nebo někdy narazíme na určitou hranici?

Odpověď našel v roce 1928 pracovník Bellových laboratoří (Bell Labs) pan Harry Nyquist. Zjistil, že má-li být na straně příjemce možné "vydolovat" z přijatého signálu veškerou v něm obsaženou informaci, pak rychlost změn tohoto signálu nesmí být vyšší, než dvojnásobek šířky pásma spoje, kterým je přenášen. Přesněji: tzv. modulační rychlost (neboli rychlost, s jakou dochází k přechodům analogového signálu mezi stavy, reprezentujícími jednotlivé diskrétní hodnoty), může být maximálně rovna dvojnásobku šířky přenosového pásma.

Přenosová rychlost

Modulační rychlost (měřenou v Baudech) tedy můžeme zvyšovat jen k hranici, kterou dokážeme poměrně přesně stanovit. Jak ale souvisí informační obsah přenášeného signálu s jeho modulační rychlostí? Kolik bitů informace vlastně mohou představovat jednotlivé stavy, mezi kterými přenášený signál přechází svou modulační rychlostí? To z Nyquistova výsledku nijak nevyplývá, a tak by se mohlo na první pohled zdát, že zde žádné omezení neplatí. Pokud bychom u přenášeného signálu rozlišovali jen dva diskrétní stavy (reprezentující dvě diskrétní hodnoty), přenesli bychom s každou změnou jeden bit informace, a za sekundu pak tolik, kolik činí (číselně) modulační rychlost. Pokud bychom rozlišovali čtyři různé stavy přenášeného signálu, pak by každý z nich mohl reprezentovat dvoubitovou informaci, a počet bitů přenesených za sekundu (představující tzv. přenosovou rychlost) by byl číselně roven dvojnásobku modulační rychlosti. Pro dosažení libovolně vysoké přenosové rychlosti by pak stačilo dostatečně zvýšit počet rozlišovaných stavů přenášeného signálu ......

Bohužel ani tudy cesta nevede. Již při intuitivním pohledu na věc musí být zřejmé, že počet různých stavů přenášeného signálu nemůžeme zvyšovat donekonečna. Někdy musíme narazit na hranici, za kterou již nebudeme schopni spolehlivě rozlišit různé stavy přenášeného signálu. Kde ale tato hranice leží?

Našel ji v roce 1948 další vědec z Bellových laboratoří, Claude Shannon. Ukázal, jakým konkrétním způsobem je maximální dosažitelná přenosová rychlost závislá nejen na šířce přenosového pásma, ale i na "kvalitě" přenášeného signálu - přesněji na jeho odstupu od šumu. Konkrétní závislost, kterou zjistil, vyjádřil Shannon vztahem

 max. přenosová rychlost =  šířka pásma * log(1 + odstup signál/šum)

Ukažme si na malém příkladu, jaké má tento Shannonův vztah zajímavé praktické důsledky: má-li běžný komutovaný okruh veřejné telefonní sítě šířku pásma 3100 Hz, a dosáhneme-li na něm odstupu signál/šum 30 dB (neboli 1000/1), pak podle Shannonova vzorce vychází maximální přenosová rychlost přibližně kolem 30 000 bitů za sekundu. To v praxi znamená například to, že žádný výrobce nikdy nemůže z principu vyrobit modem, který by tuto přenosovou rychlost překročil (při daném odstupu signál/šum).

Přesto ale již dnes existují takové modemy, které dokáží přenést po komutovaném okruhu za jednu sekundu více jak 30 000 bitů. Jak je to možné?

Přenosový výkon

Otázka, vyslovená z závěru předchozího odstavce, přestane být paradoxní v okamžiku, kdy si uvědomíme následující skutečnost: rychlost přenosu dat není zdaleka totéž, co objem dat, přenesených za určitý časový úsek. V čem je ale rozdíl?

Pomožme si malou analogií z reálného života: dokáže-li například průměrný člověk chodit rychlostí 4 km za hodinu, znamená to, že vzdálenost 100 kilometrů ujde za 25 hodin, vzdálenost 1000 km za 250 hodin atd.? Jistě ne - i sebelepší chodec musí někdy jíst, odpočívat, spát atd. Pro jeho celkový výkon (počet kilometrů, které ujde za určitou dobu), je tedy podstatná nejen rychlost jeho chůze, ale i nezbytná režie, která je s dosažením výkonu spojena (připadající na odpočinek, spánek atd.).

Stejně tak je tomu i s přenosem dat. Přenosovou rychlost (jako analogii rychlosti chůze) je třeba chápat jako veličinu, určijící dobu přenosu jednoho bitu. O tom, kolik datových bitů se přenese například za jednu sekundu, pak rozhoduje také veškerá režie, která je s jejich přenosem spojena.

Režie, spojená s přenosem dat, má více různých složek, které stojí za to si podrobněji rozebrat.

Předně je třeba si uvědomit, že data jsou obvykle přenášena po blocích. Každý takovýto blok musí být vhodným způsobem uvozen, aby bylo možné správně rozpoznat jeho začátek, a stejně tak musí být jednoznačně detekovatelný i jeho konec. To je možné zajistit různými způsoby (například hlavičkou a údajem o délce bloku, hlavičkou a "patičkou" apod.) - vždy je s tím ale spojena určitá nenulová režie. Opatříme-li například každý přenášený blok hlavičkou, pak všechny bity, které tuto hlavičku tvoří, představují režii, a nepočítají se do celkového počtu přenesených "užitečných" bitů. Další režii pak představuje i zabezpečení přenášených bloků dat, řešené například kontrolními součty, paritou či pomocí CRC.

Jsou-li data přenášena po blocích, pak přenos těchto bloků obvykle nemůže bezprostředně navazovat na sebe. Místo toho bývá mezi jednotlivými bloky určitý povinný odstup, který je dalším zdrojem režie. Tento odstup se dále zvyšuje v případě používání různých druhů potvrzování (kdy odesilatel čeká s odesláním dalšího bloku až na potvrzení příjemce, že předchozí blok v pořádku přijal).

Snad největším zdrojem režie je pak zajištění spolehlivosti přenosů - realizované prostřednictvím zabezpečení přenášených dat, které umožňuje detekovat chybu, a pomocí potvrzování, které příjemci umožňuje vyžádat si opakované vyslání chybně přeneseného bloku.

Chceme-li kvantitativně vyjádřit schopnost přenosu dat, a vzít přitom do úvahy také režii, která je s tím spojena, nemůžeme již vystačit s přenosovou rychlostí. Místo ní musíme zavést tzv. přenosový výkon (throughput), který již tuto režii uvažuje.

Přenosový výkon tedy můžeme neformálně chápat jako rychlost přenosu "užitečných" dat. Formální definice je již poněkud problematičtější, neboť samotný pojem "užitečná data" je v různých situacích a souvislostech různý. Také přesné stanovení přenosového výkonu je dosti problematické - ovlivňují jej totiž takové faktory, které mají náhodný či zcela nepredikovatelný charakter. Například v lokální síti typu Ethernet je značně závislý na celkovém zatížení sítě (vlivem kolizí i samotnou podstatou přístupové metody CSMA/CD, která má stochastický charakter).

Stanovení přenosového výkonu je tedy spíše empirickou než exaktní záležitostí. I empiricky získané hodnoty jsou však do značné míry orientační, závislé na konkrétním prostředí, konkrétní situaci a dalších specifických okolnostech. Přesto je ale dobré mít alespoň řádovou představu o tom, "jak dalece" se přenosový výkon může lišit od přenosové rychlosti. Určitým vodítkem zde mohou být údaje z tabulky č. 1 (i ty je však nutné brát jen jako orientační)

Jak naznačuje tabulka 1, a stejně tak jako "zdravý rozum", přenosový výkon by v obecném případě měl být menší než přenosová rychlost, a v optimálním případě se jí může rovnat. Všechny faktory, které jsme si až dosud uváděli, skutečně působí tímto směrem - snižují přenosový výkon oproti přenosové rychlosti. Je zde ovšem i jeden nezanedbatelný faktor, který působí právě opačně: je jím průběžná komprese přenášených dat. Ta dokáže zmenšit objem dat pro potřeby přenosu na polovinu (v případě protokolu MNP verze 5), či dokonce na čtvrtinu (v případě protokolu V.42bis), a tím vlastně zvyšovat přenosový výkon oproti přenosové rychlosti na dvojnásobek, resp. čtyřnásobek.

Skutečnost je tedy taková, že díky kompresi může být přenosový výkon vyšší než přenosová rychlost. V praxi ovšem záleží na tom, jak se jednotlivé faktory (režie přenosu vs. komprese) uplatní ve svém vzájemném souběhu.

zařízení/druh přenosu přenosová rychlost přenosový výkon
modem V.22bis (bez komprese) 2,4 kbps 2,22 až 2,26 kbps
přenos souborů po sériovém kabelu 115,2 kbps 20 až 80 kbps
řadič pružného disku 250 až 1000 kbps 250 až 1000 kbps
řadič pevného disku 8 až 320 Mbps 4 až 80 Mbps
paralelní port 400 až 1200 kbps 90 až 1200 kbps
rozšířený paralelní port (EPP, Extended Parallel Port) 16 až 64 Mbps 3 až 5 Mbps
síťový adaptér pro síť Ethernet 10 Mbps 1 až 3 Mbps
síťový adaptér pro síť Token Ring 4 nebo 16 Mbps 1 až 8 Mbps
síťový adaptér pro síť FDDI 100 Mbps 25 až 70 Mbps
podle: M.Cohn: Comparing signaling speed and throughput, PC Magazine, 31. března 1992, str. 264
Tabulka 1: Srovnání přenosových rychlostí a výkonů

Potřeba synchronizace

Jedním z nejdůležitějších úkolů při přenosech dat je správná synchronizace mezi příjemcem a odesilatelem. V čem ale spočívá?

Představme si, v souladu s obrázkem 3, že odesilatel vysílá příjemci posloupnost datových bitů. Odesilatel přitom postupuje určitou modulační rychlostí, kterou mění vysílaný signál, a nechává jej přecházet mezi stavy, reprezentujícími jednotlivé bity. Doba mezi dvěma po sobě následujícími změnami je pak vlastně "dobou trvání" jednoho bitu, neboli tzv. bitovým intervalem (předpokládáme-li, že každý stav přenášeného signálu reprezentuje právě jeden bit). Příjemce naopak postupuje tak, že v určitých okamžicích snímá stav přijímaného signálu (tzv. jej vzorkuje), a ze získaných hodnot usuzuje na to, jaký bit mu byl vyslán. Problém je ovšem v tom, že příjemce se musí se svým vzorkováním správně "trefit" do jednotlivých bitových intervalů.


Obr. 3: Vliv nesprávné synchronizace na přenos dat

Zajistit, aby příjemce vzorkoval přenášený signál ve správných časových okamžicích vlastně znamená zajistit, aby příjemce dokázal s dostatečnou přesností rozpoznat začátek i konec každého jednotlivého bitu (resp. bitového intervalu). Tomu se pak říká synchronizace na úrovni bitů. Stejně tak je ale nutné, aby si příjemce dokázal jednotlivé bity správně "poskládat" do celých bytů či znaků - neboli aby dokázal správně rozpoznat začátek a konec jednotlivých bytů či znaků. Zde pak jde o synchronizaci na úrovni znaků (bytů). Ani ta však ještě není postačující k tomu, aby příjemce korektně rozpoznal také začátek a konec přenášených bloků. Kromě synchronizace na úrovni bitů a celých znaků je proto nutné zajistit také korektní synchronizaci na úrovni bloků (rámců).

Asynchronní a arytmický přenos

Vraťme se ale k jednotlivým bitům a podívejme se, jak je možné dosáhnout synchronizace na této úrovni.

Jednou z možností je zajistit, aby si jednotlivé bity (bitové intervaly) nesly informaci o své délce přímo v sobě. To je možné zařídit tak (viz obrázek 4), že se mezi jednotlivé bitové intervaly vloží vhodné oddělovací značky. Výhodou je pak to, že délka jednotlivých bitových intervalů, a tím i modulační rychlost, nemusí být pevná. Vysílající zde nemusí dbát na to, aby jednotlivé bity vysílal se stejnou modulační rychlostí - tu může měnit podle toho, jak sám potřebuje. Nevýhodou je ale skutečnost, že oddělovací značky představují další možný stav přenášeného signálu, který nereprezentuje žádná "užitečná" data, ale jde zcela na konto režie, snižující přenosový výkon.


Obr. 4: Představa asynchronního přenosu

Další metoda zajištění synchronizace na úrovni bitů se snaží minimalizovat režii přenosu a oddělovací značky nepoužívat. Místo toho předpokládá konstantní modulační rychlost, a dále jednu velmi důležitou skutečnost: že příjemce i odesilatel jsou vybaveni samostatnými "hodinami", podle kterých si sami odměřují jednotlivé bitové intervaly, a které "jdou" nezávisle na sobě.

Takovéto hodiny však nikdy nebudou ideální, a nebudou "tikat" naprosto shodně - je vždy jen otázkou času, kdy se "rozejdou" natolik, že v důsledku toho příjemce začne vzorkovat přenášený signál v nesprávných okamžicích. Obě zúčastněné strany se této nežádoucí situaci brání tím, že vždy na začátku přenosu jednoho znaku (bytu) si své hodiny společně seřídí (tzv. zasynchronizují), a dále počítají s tím, že alespoň po dobu přenosu daného znaku (bytu) se nerozejdou natolik, aby to zapříčinilo nekorektní vzorkování přenášeného signálu na straně příjemce.

Tím, na čem si obě strany seřídí své hodiny, je tzv. start bit (též: rozběhový prvek), který uvozuje jednotlivé datové bity každého přenášeného znaku (zatímco konec znaku vymezuje tzv. stop bit, též: závěrný prvek).


Obr. 5: Představa arytmického (nesprávně: asynchronního) přenosu

Existence rozběhového prvku umožňuje dosáhnout kromě synchronizace na úrovni bitů také potřebnou synchronizaci i na úrovni celých znaků (tj. správně rozpoznat začátek znaku). Dále umožňuje i to, aby mezi jednotlivými znaky byly různě velké odstupy (prodlevy) - příjemce je na začátek každého jednotlivého znaku explicitně upozorněn (start bitem).

Oba právě naznačené druhy přenosů ukazují obrázky 4 a 5. Situace na obrázku číslo 5 odpovídá tzv. arytmickému přenosu, který je ale v praxi nesprávně označován jako asynchronní (protože asynchronním přenosem je ve skutečnosti přenos na obrázku č. 4).

Synchronní přenos

Režie, která u asynchronního (správně: arytmického) přenosu připadá na jednotlivé start bity a stop bity, není rozhodně zanedbatelná. Jde přitom hlavně na vrub skutečnosti, že příjemce i odesilatel zůstávají ve vzájemné synchronizaci jen po dobu právě přenášeného znaku, po jeho přenesení synchronizaci ztrácejí, a znovu ji získávají až na začátku přenosu dalšího znaku. Takovéto řešení je zřejmě vhodné v situacích, kdy přenos probíhá po jednotlivých znacích, a tyto na sebe příliš nenavazují (tj. jsou mezi nimi různě velké odstupy).

Alternativou, výhodnější pro dávkový charakter přenosů (tj. pro přenosy větších bloků dat) by bylo udržet potřebnou synchronizaci mezi příjemcem a odesilatelem po delší dobu - například po dobu přenosu celého bloku, nebo ještě lépe trvale.

S touto možností počítá tzv. synchronní přenos. Jeho podstatu nejlépe vystihuje představa na obrázku 6 b/, naznačující, že příjemce i odesilatel sdílí jedny a tytéž hodiny, a díky tomu mohou být trvale synchronizováni (zatímco u asynchronního přenosu dle obrázku 6 a/ má každý z nich své vlastní hodiny).


Obr. 6: Představa časování v případě
a/ asynchronního (správně arytmického) přenosu
b/ synchronního přenosu

Jak ale tuto představu realizovat? Jednou z možností by bylo umístit společné hodiny například u odesilatele, a k příjemci přenášet jejich "tikání" (ve formě pravidelně se měnícího, tzv. hodinového signálu) po samostatném kanálu - jak ukazuje obrázek 7 a/. Takovýto samostatný kanál však většinou nebývá k dispozici, a tak je nutné hodinový signál vhodným způsobem "zamíchat" mezi vlastní data. To lze dělat různými způsoby, z nichž jeden ukazuje obrázek 7 b/. Nevýhodou tohoto uspořádání je ale skutečnost, že modulační rychlost (tj. rychlost změn přenášeného signálu) bude dvojnásobná oproti přenosové rychlosti, a na udržování synchronizace tak bude připadat režie ve výši 100 procent.


Obr. 7: Možnosti zajištění synchronního přenosu
a/ samostatným přenosovým kanálem pro hodinový signál
b/ smícháním hodinového signálu a dat

Další principiální možností je nepřidávat k vlastním datům hodinový signál, ale umožnit příjemci, aby si jej odvozoval od samotných dat. Tato představa odpovídá tomu, že příjemce opět bude mít vlastní hodiny, ale bude si je průběžně seřizovat (synchronizovat) na každém datovém bitu, který přijme. Tato představa ovšem naráží na jeden nepříjemný problém - vyžaduje, aby se přenášený signál pravidelně měnil (resp. aby nevznikaly velké časové úseky, v rámci kterých by se přenášený signál neměnil). I tomuto požadavku však lze vyhovět - například kombinací vhodného kódování datových bitů a používáním paritních bitů.