Synchronizace
Přijít někam či s něčím pozdě není dobré. Existují na to dokonce i výstižná úsloví, jako třeba „přijít s křížkem po funuse" apod. Stejně tak je ale špatné dělat věci příliš brzy, když na to ještě vhodná doba. Zkrátka: věci se mají dělat ve správnou dobu, ani ne dříve, ani ne později. Jak ale efektivně rozpoznat onu „správnou chvilku"?
Přesně stejný problém existuje i v oblasti přenosu dat. Zkusme si ho nastínit: představme si přenosový kanál mezi příjemcem a odesilatelem jako rouru, skrz kterou je něco doslova „protlačováno". Vzhledem k délce roury a konečné rychlosti „protlačování" existuje určitý časový posun mezi tím, kdy odesilatel něco vloží do pomyslné roury, a okamžikem kdy to z druhé strany příjemci z roury „vyleze". Teď si ale ještě představme, že to co prochází pomyslnou rourou je blíže nestrukturovaný proud nul a jedniček, či spíše něčeho jiného (například stejnosměrného proudu či napětí, harmonického signálu apod.), co má pouze dva význačné stavy, a co nijak explicitně neříká „tady je začátek", a „tady je konec". Pak si jistě dovedete představit, jak důležité je aby příjemce odebíral výstup z pomyslné roury ve správnou dobu, ani dříve ani později, a dokonce i správnou rychlostí, a ne pomaleji či rychleji. Kdyby například z naší roury vystupoval stejnosměrný signál, jehož úroveň napětí by reprezentovala nulu či jedničku, pak by velmi záleželo na tom, v jakém časovém okamžiku by příjemce sejmul první vzorek tohoto napětí, v jakém druhý, třetí atd. Pokud by se již s prvním „vzorkováním" nestrefil správně, bylo by to od začátku špatně a přijímal by nesprávná data. I kdyby se ale poprvé strefil správně, ale pak nesprávně volil interval mezi jednotlivými vzorky (který by měl přesně odpovídat „délce" jednoho bitu), bylo by to také špatně - časem by „ujel", a vzorkoval napětí na přenosovém kanálu v době, kdy je přenášen jiný bit než si příjemce myslí.
Právě jsme si nastínili problém, kterému se v praxi říká synchronizace, konkrétněji „udržení synchronizace mezi příjemcem a odesilatelem". Cílem synchronizace je tedy zajistit, aby „obě strany dělaly věci ve správnou dobu", což je při přenosu dat vcelku triviální na straně odesilatele, ale mnohem obtížnější na straně příjemce.
Pro zajištění a udržení synchronizace při datových přenosech existuje více různých metod a technik. Nejjednodušší je to na krátké vzdálenosti, například několika metrů, kde je možné vybudovat další přenosový kanál či lépe několik dalších přenosových kanálů a využívat je pro potřeby synchronizace. Většinou jde o řídící a stavové signály, kterými si příjemce s odesilatelem navzájem sdělují, že právě něco odesílají resp. něco v pořádku převzali. Již dávno si lidé všimli, že takováto vzájemná signalizace prostřednictvím řídících a stavových signálů připomíná v jistém smyslu potřásání rukou, a tak to nazvali handshaking.
S handshakem, realizovaným hardwarovými prostředky (samostatnými signály) se můžeme setkat hlavně při propojování sériovými či paralelními kabely na velmi krátkou vzdálenost (několika metrů), kdy není problém použít vícežilový kabel s dostatečným počtem vodičů. Na větší vzdálenosti to ovšem již problém je - zde obvykle existuje jen jediná „roura", neboli jediný přenosový kanál, a souběžný přenos řídících a stavových signálů dalšími kanály zde jednoduše nepřipadá v úvahu. Zde tedy musí být synchronizace zajištěna jiným způsobem, tj. jinými technikami a postupy. Pokud je i v rámci těchto technik potřeba přenášet nějaké režijní údaje povely či pokyny, pak tyto nutně musí být „přimýchány" k vlastním užitečným datům, a přenášeny jediným existujícícm přenosovým kanálem. Stále zde ještě existuje značná variabilita těchto metod a technik dosažení synchronizace, ale o konkrétních možnostech si povíme zase až příště.