3.1 Pravidlá komunikácie, protokoly a štandardy
Komunikácia
V procese komunikácie vystupuje niekoľko prvkov, ktoré môžeme zreťaziť:
- zdroj správy → vysielač → prenosové médium → prijímač → cieľ správy
Správu je však potrebné prispôsobiť možnostiam vysielača, napríklad previesť do elektrických signálov, pulzov svetla alebo zvukových vĺn – tento proces nazývame kódovanie a vykonáva ho kódovač (encoder). A naopak, prijímač prijme nejaký signál, ktorý je potrebné najskôr dekódovať – to vykonáva dekodér. Podrobnejší proces teda bude vyzerať:
- zdroj správy → kódovač → vysielač → prenosové médium → prijímač → dekodér → cieľ správy
Do procesu však vstupujú aj rôzne nežiaduce rušenia a deformácie signálu, ktoré môžeme súhrnne nazvať šum. Ten sa neobjavuje len počas prenosu médiom, ale môže vznikať aj nepresnosťami kódovania a dekódovania.
Komunikačné protokoly
Komunikácia medzi akýmikoľvek dvoma zariadeniami je možná len v prípade, že sú kompatibilné (navzájom zlúčiteľné) v otázke spojenia, a to aj po stránke hardvéru, aj softvéru. Túto kompatibilitu dosiahnu vďaka implementácii protokolu.
Komunikačný protokol môžeme definovať ako súbor pravidiel, ktoré musia komunikujúce zariadenia dodržiavať, aby si mohli navzájom vymieňať informácie.
Analógiou z bežného života sú napríklad aj dopravné predpisy – vďaka nim každý vodič rozumie značkám a svetelným signálom, takže vie, čo má kedy robiť. Bez pravidiel by doprava nefungovala a nastal by chaos s množstvom kolízií.
Všeobecne akceptované protokoly označujeme ako otvorené štandardy, prípadne štandardné protokoly. Bez nich by univerzálna sieť nemohla fungovať, pretože výrobcovia zariadení a softvéroví vývojári by komunikáciu riešili „každý po svojom“. Ich výrobky by síce dokázali komunikovať navzájom medzi sebou, ale už nie s inými zariadeniami či s iným softvérom. Takéto výrobky a protokoly nazývame proprietárne – uzavreté, vlastné len konkrétnemu výrobcovi, bez zverejnenia špecifikácií.
Architektúra vrstiev
Zložitejšie protokoly, kam patria aj sieťové protokoly, využívajú rozdelenie svojich úloh do takzvaných vrstiev (layers), aby bolo možné definovať úlohy a pravidlá jednotlivých vrstiev samostatne. Vychádza to z troch základných myšlienok: abstrakcia, rozdelenie úloh a izolácia.
Jednotlivé časti systému nemusia o sebe navzájom vedieť nič z hľadiska implementácie, no napriek tomu môžu vzájomne spolupracovať. Myšlienkou abstrakcie je skrytie detailov o implementácii – vzájomne sa zdieľa len funkcionalita danej vrstvy. Riešime teda len to, čo má vrstva robiť, a nie to, ako to má robiť.
Každá vrstva by mala zodpovedať len za jednu alebo zopár špecifických operácií a nemala by riešiť nič iné. Tento princíp rozdelenia úloh zjednodušuje komplexné úlohy ich rozbitím do menších, ľahšie realizovateľných úloh.
Každá vrstva by mala byť ako samostatný ostrov bez prepojenia s ostatnými – prijme vstup a odovzdá výstup. Nevie nič o ostatných vrstvách a nerieši, čo sa deje v nich. Takáto izolácia umožňuje urobiť zmeny v ktorejkoľvek vrstve bez toho, aby to ovplyvnilo komponenty z iných vrstiev. Zároveň to uľahčuje testovanie, pretože je možné testovať každú vrstvu nezávisle.
Sústava protokolov
Sústava protokolov (alebo tiež „zásobník protokolov“, v angličtine protocol stack) obsahuje protokoly, ktoré využívajú architektúru vrstiev. Medzi dvoma zariadeniami môžeme riešiť komunikáciu pre každú vrstvu individuálne. Tradične vrstvy vyjadrujeme vo zvislom smere, pričom úplne dole je hardvér a úplne hore je používateľ.
Hoci reálny (fyzický) komunikačný kanál je vždy len na spodnej (prvej) vrstve, pri každej vrstve riešime virtuálny komunikačný kanál samostatným protokolom.