Riešiť určitý problém ako celok je obvykle
možné len po určitú hranicu - dokiaľ rozsah roblému resp.
jeho zložitosť nepresiahne schopnosti riešiteľa či riešiteľov
a možnosti nástrojov a metód, ktoré pritom používajú.
Akonáhle sa určitý problém stáva príliš
zložitým, je vhodné previesť jeho dekompozíciu - rozdeliť
ho na niekoľko ďalších problémov, ktoré by bolo možné riešiť
samostatne a nezávisle na sebe.
Dobrým príkladom problému, ktorý je príliš
veľký na to, aby bolo únosné ho riešiť ako jediný veľký problém,
je otázka zaistenia základných funkcií počítačovej siete.
Iste si tu ľahko predstaviť, že sa jedná predovšetkým o otázku
základného programového vybavenia siete, ktoré bezprostredne
ovláda technické prostriedky siete - sieťový hardware, tj.
najrôznejšie komunikačné vybavenie, uzlové počítače atd. -
a ich prostredníctvom zaisťuje chod celej siete ako
takej.
Vzhľadom k charakteru počítačových sietí a k povahe úkolov,
ktoré je treba zaistiť, sa ako najvhodnejšie ukázala byť dekompozícia
základného programového vybavenia siete na hierarchicky usporiadané
vrstvy (layers). Každá vrstva má na starosti zaistenie presne
vymedzeného okruhu úkolov. Mechanizmy, pomocou ktorých tieto
úkoly zaisťuje, potom ponúkajú k využitiu ako svoje služby
vrstve bezprostredne vyšší. Napríklad vrstva, ktorá zaisťuje
prenos jednotlivých bitov, môže ponúkať svoje služby bezprostredne
vyššej vrstve, ktorá s jej pomocou prenáša celé bloky dát
a pod. V obecnom prípade teda každá vrstva ponúka určitý repertoár
služieb vrstve bezprostredne vyššej, a k realizácii týchto
služieb sama využíva služby vrstvy bezprostredne nižšej.
Predstava o tom, koľko samostatných vrstiev
vymedziť a aké im zveriť úkoly, tvorí tzv. vrstvový model
(layered model). Názorov na to, ako by taký vrstvový model
mal vypadať, môže byť samozrejme celá rada.
Rozdelenie na hierarchické vrstvy v rámci
vrstvového modelu ešte samo o sebe nezaisťuje hlavný efekt
dekompozície jedného veľkého problému na niekoľko ďalších
problémov - možnosť riešiť tieto ďalšie problémy samostatne
a nezávisle na sebe. K tomu je nutné ešte stanoviť presné
pravidla vzájomnej súčinnosti susedných vrstiev - teda definovať
presné rozhranie (interface) medzi jednotlivými vrstvami.
Súčasťou tejto definície musí byť napr. presné vymedzenie
jednotlivých služieb, spôsob ich volania, počty parametrov
atď.
Akonáhle sú známe úkoly, ktoré má určitá
vrstva riešiť, a je tak isto presne definované jej rozhranie
s dvoma susednými vrstvami, je možné začať uvažovať o spôsobe,
ako zaistiť tie úkoly, ktoré boli vrstve zverené. Tu je dobré
si uvedomiť, že každá vrstva síce využíva služby vrstvy bezprostredne
nižší a sama ponúka svoje služby vrstve bezprostredne vyššej,
jej partnerom pri komunikácii v sieti je ale tá vrstva, ktorá
sa na inom uzlovom počítači nachádza na rovnakej úrovni hierarchie
vrstiev . Tieto rovnako rozľahlé vrstvy musia byť spolu dohovorené
na spoločných pravidlách vzájomnej komunikácii, ktoré tak
isto musia dôsledne dodržovať.
Súbor pravidiel, ktoré rovnako rozľahlé
vrstvy vrstvového modelu používajú pri vzájomnej komunikácii,
tvorí tzv. protokol.
Ku každej vrstve v rámci určitého vrstvového
modelu sa teda vzťahuje určitý protokol, podľa ktorého príslušná
vrstva pracuje. Pre vrstvu však môže pripadať v úvahu viacej
rôznych protokolov - rovnaké úkoly totiž môžu byť často zaisťované
rôznymi spôsobmi.
K určitému vrstvovému modelu, ktorý definuje
spôsob rozčlenení na vrstvy, teda môže existovať celá sústava
protokolov (protocol suite), v rámci ktorej môže pre niektoré
vrstvy pripadať v úvahu niekoľko vzájomne alternatívnych protokolov.
Napríklad pre naše dve citované vrstvy bude obvykle existovať
viacej rôznych protokolov podľa toho, či sú k prenosu využívané.
Akonáhle je pre každú vrstvu vybraný jeden
konkrétny protokol, vzniká tzv. sústava protokolov (protocol
stack), ktorá presne odpovedá hierarchickému členeniu na jednotlivé
vrstvy.
Navrhnúť rozčlenenie základného programového
vybavení na jednotlivé vrstvy, vymedziť úkoly, ktoré by tieto
vrstvy mali vykonávať a stanoviť protokoly, ktoré by sa pritom
mali používať - to všetko dáva dosť ucelenú predstavu o tom,
ako by počítačová sieť mala vypadať a ako by mala fungovať.
Na základe tejto ucelenej predstavy, ktorá tvorí architektúru
siete (network architecture), je len možné uvažovať o konkrétnej
implementácii.
Rozdelenie základného programového vybavenia
siete na vrstvy a ich samostatné a nezávislé realizácie má
vedľa rozdelenia jedného veľkého problému na niekoľko menších,
ľahšie zvládnuteľných častí, ešte jednu veľmi významnou výhodu.
Tou je možnosť jednoduchšie prispôsobenie zmenám - stačí vždy
vymeniť jen tie vrstvy, ktorých sa zmena týka, a ostatné ponechať
nezmenené.