Hlavní navigace

Báječný svět počítačových sítí

1. 6. 2005

Sdílet

Síťovou architekturou se rozumí celkový pohled na to, jak by počítačové sítěměly být řešeny a jak by měly fungovat. Zahrnuje představu o celkovém počtu vrstev, představu o tom, co...
Síťovou architekturou se rozumí celkový pohled na to, jak by počítačové sítě
měly být řešeny a jak by měly fungovat. Zahrnuje představu o celkovém počtu
vrstev, představu o tom, co má každá vrstva dělat i jak má fungovat, resp. jaké
protokoly má ke svému fungování využívat. V současné době je nejrozšířenější
síťovou architektura ta, na níž je postaven a na níž funguje celosvětový
internet. Základní součástí této architektury jsou protokoly, souhrnně
označované jako "rodina protokolů TCP/IP".

Rodina protokolů TCP/IP je opravdu početná (má přes 100 "členů") a neustále se
rozrůstá o nově vznikající protokoly. Její základ však vznikl poměrně dávno,
alespoň podle "počítačových měřítek" - již v polovině sedmdesátých let. Důvodem
byla existence sítě ARPANET, kterou v USA nechali vybudovat (a také zaplatili)
tamní vojáci, aby na ní vyzkoušeli myšlenku tzv. paketového přenosu. Jednalo se
o přenos dat "po vhodně velkých kusech", označovaných právě jako pakety. Dnes
tak fungují snad všechny datové a počítačové sítě, ale tehdy to byla úplně
revoluční myšlenka, která se musela někde otestovat. A k tomu posloužila právě
síť ARPANET.
Pro nás je podstatné ještě to, že když síť ARPANET splnila svůj účel a
potvrdila životaschopnost paketového přenosu, její vlastnící (resort obrany
USA) ji nezrušili. Právě naopak, rozhodli se ji zachovat a ponechat akademické
sféře (univerzitám) k používání a k řešení výzkumných úkolů. Dokonce aktivně
podpořili to, aby se na ARPANET začaly napojovat další univerzity i celé
akademické sítě.
K tomu skutečně došlo a na zárodečný ARPANET se začaly postupně "nabalovat"
další a další sítě. Výsledné soustavě vzájemně propojených sítí se pak začalo
říkat internet...

Vznik TCP/IP
Jak s tím ale souvisí protokoly TCP/IP? Když se vojáci v USA rozhodli nerušit
ARPANET a předat ho akademické sféře, bylo zapotřebí vyvinout nové protokoly,
na nichž by tato síť fungovala. Původně totiž používala jen experimentální
protokoly (hlavně protokol NCP, Network Control Protocol), které se pro rutinní
provoz příliš nehodily. Resort obrany USA (DoD, Department of Defense) zadal
tamní akademické sféře další výzkumný úkol, který také zaplatil ze svých peněz:
vyvinout sadu nových protokolů, vhodných pro běžné používání ARPANETu.
Toto zadání přišlo v první polovině sedmdesátých let. V roce 1980 již byla
koncepce protokolů TCP/IP připravena a resort obrany ji odsouhlasil jako
"správnou" koncepci, na kterou musí celý ARPANET přejít. Uplynuly ještě dva
roky - a k 1. lednu 1983 přestal rodící se internet používat protokol NCP a
přešel již na výlučné používání protokolů TCP/IP.

4 vrstvy TCP/IP
S rodinou protokolů TCP/IP je úzce spojena i představa o počtu a struktuře
vrstev, do nichž jsou tyto protokoly "zapasovány". Tuto představu zachycuje
následující obrázek, který ji srovnává se sedmivrstvým referenčním modelem
ISO/OSI.
Protokoly TCP/IP předpokládají existenci pouze čtyř vrstev:
( aplikační,
( transportní,
( síťové (označované též jako "IP vrstva"),
( vrstvy síťového rozhraní.
Z těchto čtyř vrstev však protokoly TCP/IP "obsazují" jen tři nejvyšší. U
nejnižší vrstvy (vrstvy síťového rozhraní) se počítá s tím, že zde budou
využity takové přenosové mechanismy, které jsou k dispozici a "pochází odjinud"
(tj. nejsou součástí TCP/IP). Může jít třeba o Ethernet, o Wi-Fi, o technologie
ATM či FR nebo o xDSL (ADSL) atd.

Síťová vrstva - IP vrstva
Přenosové služby, které zajišťuje vrstva síťového rozhraní, umožňují přenášet
"kusy dat" (označované jako rámce) mezi sousedními uzly. To jsou počítače,
které mezi sebou mají přímé spojení. Na něm pak staví síťová vrstva, která již
zajišťuje přenos "kusů dat" (nyní označovaných jako pakety) nejen mezi přímými
sousedy, ale mezi libovolnými dvěma uzly.
Musí tedy hledat nejvhodnější cestu od odesilatele až ke koncovému příjemci
(zajišťovat tzv. směrování, anglicky routing). Když vhodnou cestu najde,
zajistí postupný přenos paketu přes případné mezilehlé uzly. To dělá tak, že
pro každý "přeskok" vloží svůj paket do rámce a požádá vrstvu síťového rozhraní
o přenesení rámce i s jeho obsahem k přímému sousedovi. Zde je obsah rámce
(paket) vybalen, předán zdejší síťové vrstvě a ta znovu rozhodne, kterým směrem
jej bude předávat dál. Tento princip naznačuje obrázek.
Rodina protokolů TCP/IP "obsazuje" síťovou vrstvu především protokolem IP
(Internet Protocol). Ten je pro celou rodinu protokolů natolik významný a
charakteristický, že se postaral i o její pojmenování. Ve zkratce TCP/IP je za
lomítkem jméno právě tohoto protokolu.
Podle protokolu IP jsou také pojmenovány pakety, přenášené na úrovni síťové
vrstvy - říká se jim IP pakety nebo také IP datagramy.

Transportní vrstva
Síťová vrstva, alias IP vrstva, je poslední vrstvou (počítáno odspodu), která
se ještě vyskytuje ve všech uzlech - jak ve vnitřních uzlech přenosové sítě (v
tzv. směrovačích), tak i v koncových uzlech (což mohou být například pracovní
stanice uživatelů). Vyšší vrstvy, konkrétně vrstva transportní a vrstva
aplikační, pak jsou přítomné již jen v koncových uzlech sítě.
Transportní vrstva má na starosti vzájemnou komunikaci koncových uzlů. Pokud se
to po ní požaduje, zajišťuje např. spolehlivost přenosů. Tedy to, aby se
přenášená data po cestě neztratila nebo nějak nepoškodila. Kromě toho
transportní vrstva rozlišuje i mezi různými entitami v rámci jednoho uzlu. To
znamená, že příchozí data rozděluje těm aplikacím, běžícím na daném počítači,
kterým jsou určeny. Obdobně přejímá data, určená k odeslání, od jednotlivých
počítačů a předává je k přenosu síťové vrstvě. Ta již nerozlišuje mezi
jednotlivými odesilateli a příjemci a každý uzel sítě považuje za dále
nedělitelný celek.
Na úrovni transportní vrstvy jsou v rámci TCP/
/IP provozovány dva hlavní transportní protokoly.
( UDP (User Datagram Protocol),
( TCP (Transport Control Protocol).
Právě protokol TCP je vedle protokolu IP tím, který dal název celé rodině
protokolů TCP/IP.

Aplikační vrstva
Na úrovni aplikační vrstvy jsou provozovány jednotlivé aplikace. Nikoli ovšem
celé, ale jen ty jejich části, které musí být navzájem kompatibilní. Třeba u
elektronické pošty jde o celé poštovní servery a ty části poštovních klientů,
které zajišťují odesílání, přenos a příjem jednotlivých zpráv. Uživatelské
rozhraní, jež uživatelům umožňuje zprávy číst, tisknout, různě třídit,
archivovat atd., není součástí aplikační vrstvy a nemusí být standardizováno.
Díky tomu pak mohou být uživatelská rozhraní jednotlivých aplikací různá, s
různým rozsahem funkcí a různým uživatelským komfortem.
Naopak třeba formát zpráv a jejich přenos musí být důsledně sjednoceny
(standardizovány), aby je bylo možné přenášet mezi jednotlivými poštovními
servery a aby jim "rozuměli" všichni poštovní klienti.

Filosofie TCP/IP
Chceme-li správně pochopit základní vlastnosti síťové architektury, založené na
protokolech TCP/IP, musíme si nejprve něco říci o základní filozofii, z níž
vyšli či ji zvolili autoři TCP/IP. Pomůže nám to i k pochopení toho, proč se
právě TCP/IP tak dobře ujalo v reálné praxi a vydrželo bez zásadnějších změn až
do dnešních dnů.
Vraťme se znovu do doby, kdy protokoly TCP/IP teprve vznikaly. Když resort
obrany USA zadával akademické sféře úkol vyvinout protokoly TCP/IP, staly se
součástí zadání některé konkrétní požadavky. Třeba ten, aby se nepočítalo s
žádným centrálním prvkem, na němž by fungování sítě stálo, ale se kterým by
také celé padalo. To je ostatně typické pro uvažování vojáků, kteří se bojí
toho, že by nepřítel jako první napadl právě centrální bod, zničil ho a tím
vyřadil z provozu celou soustavu sítí.
Pravdou je, že ani dnešní internet nemá žádný centrální bod, který by jej řídil
a bez něhož by nemohl existovat. Je značně distribuovaný a díky tomu dokáže
fungovat jako celek, i když některé jeho dílčí části jsou právě vyřazeny z
provozu (nejspíše z důvodu technické závady). Nás ale zajímají protokoly
TCP/IP, které nejsou přesně to samé jako internet. Vznikly sice pro potřeby
internetu a v něm se také nejvíce rozšířily, ale mohou být použity i mimo něj,
v jakékoli třeba i samostatné počítačové síti.

Nespojovaný způsob fungování
I samotné protokoly TCP/IP předpokládají distribuované řešení nejrůznějších
funkcí, důležitých pro fungování celé soustavy sítí. Asi nejlépe je to vidět na
způsobu, jak je v rámci protokolu IP (tj. na úrovni síťové vrstvy) řešeno tzv.
směrování, neboli hledání cest v síti pro potřeby přenosu jednotlivých paketů.
Neexistuje zde žádná centrální autorita, která by mezilehlým uzlům (tzv.
směrovačům) říkala, kam mají dále předávat jednotlivé pakety, aby se dostaly ke
svému cíli. Místo toho potřebné směrovací informace získávají jednotlivé
směrovače ve vzájemné spolupráci. Když některý z nich vypadne nebo se nějaký
spoj stane neprůchodným, ostatní najdou cestu, jak výpadek obejít, resp. jak
dopravit pakety na místo jejich určení jinudy. Odpovídá to tzv. nespojovanému
(anglicky connectionless) způsobu fungování, při kterém nedochází k navazování
spojení mezi odesilatelem a příjemcem a k vytyčení trasy, po níž by se následně
přenášela všechna data. Pokud by tomu tak bylo a došlo by k nějaké změně v síti
(třeba k výpadku nějakého dílčího spoje), muselo by se to nejprve zjistit a pak
napravit - ukončením existujícího spojení a navázáním nového spojení.
U nespojovaného spojení se jednoduše "jede dál" a pro každý paket se
nejvhodnější cesta jeho přenosu hledá vždy znovu, podle momentální situace.
Díky tomu se může stát, že jednotlivé pakety budou protokolem IP přenášeny ke
svému cíli různou cestou a třeba i dorazí v jiném pořadí, než v jakém byly
původně odeslány. Ale to už je na vyšších vrstvách, aby si je správně
poskládaly zpátky.
Nespojovaný způsob přenosu jednotlivých paketů velmi připomíná fungování běžné
pošty. Ta také přenáší jednotlivé dopisy (zásilky) nezávisle na sobě, aniž by
předem "navazovala spojení" a dopředu zjišťovala, zda adresát vůbec existuje.
Místo toho dopis od odesilatele nejprve převezme a pak se jej snaží doručit
tak, jak nejlépe umí. Také se klidně může stát, že dva současně odeslané dopisy
jdou jinou cestou a přijdou svému adresátovi v různou dobu.
Právě kvůli této podobnosti s klasickou poštou se také pakety protokolu IP
přirovnávají k datagramům a jsou označovány jako IP datagramy.

Princip maximální snahy, ale nezaručeného výsledku
Velmi významnou charakteristikou síťového protokolu IP, který má na starosti
přenos jednotlivých paketů (IP paketů, resp. IP datagramů), je, že negarantuje
jejich doručení. Nedokáže totiž vždy zaručit, že bude mít pokaždé dostatek
kapacit (přenosových i výpočetních) k přenesení všech paketů, které by přenést
měl. Dokud mu tyto kapacity budou stačit, bude pochopitelně přenášet všechny
pakety. Jakmile jich ale bude příliš mnoho a jemu se nebude dostávat kapacit,
má právo zahazovat ty pakety, které již nedokáže přenést.
Říká se tomu také princip "maximální snahy..." (anglicky best effort), a to
kvůli tomu, že protokol IP se snaží využít všech prostředků a zdrojů, jež má k
dispozici. Dodatkem pak je "...ale nezaručeného výsledku", kvůli tomu, že když
maximální snaha protokolu IP nestačí, dochází k zahazování paketů. Z pohledu
jejich odesilatelů a příjemců je pak výsledek skutečně nezaručený.
Alternativou k fungování podle principu "maximální snahy, ale nezaručeného
výsledku..." by bylo garantování kvality přenosových služeb. Tedy situace, kdy
konkrétní přenos by měl garantováno, že pro něj budou k dispozici takové a
takové zdroje, včetně přenosových a výpočetních kapacit. Pak by se nemělo
stávat, že na něj zdroje nevystačí a bude nutné některé jeho pakety zahazovat.
Na principu garancí a garantovaných přenosových služeb funguje tzv. přepojování
okruhů, které je alternativou k přepojování paketů a používá se hlavně v
telekomunikačních sítích. Jeho nevýhodou je ale velmi nehospodárné využití
dostupných zdrojů. Ty jsou totiž vyhrazeny pro potřeby jednotlivých přenosů,
bez ohledu na to, zda jsou či nejsou skutečně využity. Pokud využity nejsou,
nemohou být přenechány ostatním přenosům, které by je naopak mohly potřebovat.
Princip paketového přenosu, označovaný také jako "přepojování paketů", je na
rozdíl od přepojování okruhů velmi efektivní právě proto, že účelně hospodaří s
dostupnými zdroji, právě výše popsaným způsobem, na principu "maximální
snahy...".
Protokol IP, který funguje na principu "maximální snahy...", navíc měří všem
přenosům stejně. To znamená, že v situaci, kdy se mu již nedostávají dostatečné
zdroje, zahazuje pakety bez ohledu na to, co jsou zač - od koho pochází, komu
mají být doručeny, či co v sobě nesou (jaký typ dat) atd.

Nespolehlivost místo spolehlivosti
Další významnou charakteristikou protokolu IP je, že funguje způsobem, kterému
se říká "nespolehlivý". Ne snad proto, že by se protokol IP nesnažil přenášet
data spolehlivě, to opravdu ne. Otázkou spíše je, jak se má zachovat, když
dostane nějaká data, která se při přenosu poškodila, obvykle v důsledku nějaké
chyby při přenosu. Protokol IP, který přijal poškozený paket a měl by jej dále
zpracovat, má v principu dvě možnosti:
( Postarat se sám o nápravu, obvykle tak, že si stejný paket nechá znovu
zaslat. Tato varianta přenosu se označuje jako "spolehlivá".
( Nestarat se o nápravu a poškozený paket zahodit. Právě tato varianta je
označována jako "nespolehlivá" .
Nespolehlivá varianta přenosu na první pohled nevypadá příliš smysluplně.
Autoři protokolů TCP/IP ale byli jiného názoru a protokol IP koncipovali právě
jako nespolehlivý. Tedy tak, že když narazí na poškozený paket, smí jej zahodit
a nemusí se starat o nápravu.
Tento přístup má logiku v tom, že se zajištěním spolehlivosti by byla spojená
nemalá režie. Hlavně opakovaný přenos, který by si příjemce poškozeného paketu
vyžádal, by nejen spotřeboval další přenosovou kapacitu, ale hlavně by oddálil
přenos dalších dat a tím zvýšil nerovnoměrnost (nepravidelnost) v jejich
doručování. Některým aplikacím přitom právě takovéto zpoždění a nerovnoměrnost
může vadit více než poškození či dokonce ztráta určitých dat.
Například při přenosu multimediálních dat (např. digitalizovaného zvuku či
obrazu) je pravidelnost doručování jednotlivých částí dat podstatně důležitější
než jejich občasný výpadek. Lidské ucho či oko většinou ani nezaznamená nějaké
drobné zkreslení zvuku či malou chybu v obraze, které velmi rychle odezní.
Naopak by zaznamenalo jakoukoli změnu v rychlosti (pravidelnosti) přehrávání
zvuku či obrazu. Lze to přirovnat k efektu zrychlování či naopak zpomalování
magnetofonového pásku či filmového pásu. To je znát podstatně více, než občasný
drobný kaz na médiu.
Autoři protokolů TCP/IP navíc vyšli z předpokladu, že protokol IP by se měl
soustředit na to, co je jeho hlavní úkolem - tedy na přenos dat - a už by se
neměl zabývat dalšími věcmi, které pro něj nejsou klíčové. Lze to vyjádřit i
oblíbeným sloganem: protokol IP by se měl soustředit na svůj hlavní byznys a
neztrácet čas s podružnými věcmi. Mezi tyto "podružné věci" bylo zařazeno i
zajišťování spolehlivosti.

Transportní demokracie
Protokol IP, zajišťující přenos paketů na úrovni síťové vrstvy, tedy funguje
nespolehlivě a také nespojovaně. Skutečně se maximálně soustřeďuje "na svůj
byznys" a nedělá nic jiného, než že přenáší jednotlivé IP pakety. Počítá přitom
s tím, že pokud budou vyšší vrstvy (resp. aplikace) potřebovat něco jiného - ať
již spojovaný či spolehlivý způsob fungování, stále tu je ještě transportní
vrstva, která může jejich přání splnit. Autoři TCP/IP skutečně zabydleli
transportní vrstvu dvěma vzájemně alternativními transportními protokoly, mezi
nimiž si aplikace mohou vybírat.
Mohou zvolit protokol UDP (User Datagram Protocol), který je jen drobnou
nadstavbou nad protokolem IP a zachovává jeho způsob fungování - tedy
nespojovaný a nespolehlivý. Prakticky to jediné, co k funkčnosti protokolu IP
přidává, je rozlišování jednotlivých příjemců a odesilatelů v rámci daného uzlu
(podle tzv. čísel portů, na rozhraní mezi transportní a aplikační vrstvou).
Naproti tomu druhý transportní protokol, protokol TCP (Transport Control
Protocol), už funguje spolehlivě a spojovaně. Sám sice využívá nespolehlivých a
nespojovaných služeb protokolu IP, ale zajišťuje navazování spojení mezi
komunikujícími stranami (na úrovni transportní vrstvy) a stará se také o
spolehlivost. Jinými slovy, pokud protokol IP něco nedoručí tak jak má,
protokol TCP se postará o nápravu (vyžádá si opakované odeslání poškozených či
úplně ztracených dat).
Hlavně všechny aplikační protokoly mají na výběr, zda v rámci transportní
vrstvy využijí služeb transportního protokolu TCP nebo protokolu UDP. Vybírat
si mohou například podle toho, zda je pro ně důležitější spolehlivost přenosu
(pak asi sáhnou po TCP), nebo zda před spolehlivostí dají přednost spíše
rychlosti a pravidelnosti doručování (pak sáhnou po protokolu UDP).

IP over everything
Vraťme se ale ještě k protokolu IP a jeho fungování. Jak jsme si již uvedli, na
samém počátku, kdy protokoly TCP/IP teprve vznikaly, měly americké univerzity
velký zájem připojovat se na zárodečnou síť ARPANET i se svými již existujícími
sítěmi. Ty ale byly dosti různorodé, založené na různých přenosových
technologiích (odpovídajících vrstvě síťového rozhraní).
Proto autoři protokolů TCP/IP dostali v rámci svého zadání ještě jeden úkol:
vyjít podobnému připojování (resp. propojování) maximálně vstříc a umožnit
připojení a provoz protokolů TCP/IP nad jakýmikoli přenosovými technologiemi,
schopnými přenášet data.
Dnes (s odstupem 30 let) lze konstatovat, že se to autorům povedlo nadmíru
dobře. Protokol IP, který "zabydluje" síťovou vrstvu, je skutečně velmi pružný
a dokáže fungovat "nad čímkoli". Ostatně vystihuje to i slogan "IP over
everything". Nad přenosovými technologiemi vrstvy síťového rozhraní přitom
vytváří jakousi "jednotnou pokličku", která zastírá jejich specifické rozdíly a
vytváří nad nimi jednotné přenosové prostředí. Díky tomu se pak protokoly
vyšších vrstev (transportní vrstvou počínaje) nemusí vůbec zabývat tím, nad
jakou technologií nižších vrstev vlastně fungují.
V době vzniku a rozvoje internetu to mělo zásadní význam pro připojování
dalších sítí k ARPANETu. Dnes se této vlastnosti s úspěchem využívá k tomu, aby
se lidé mohli připojovat k celosvětovému internetu opravdu nejrůznějšími
způsoby, jaké mají právě k dispozici třeba přes vytáčenou telefonní linku,
ADSL, Wi-Fi, přes kabelovou televizi atd. Ve všech případech je nad uvedenými
přenosovými technologiemi nejnižší vrstvy (vrstvy síťového rozhraní) provozován
"jednotný" protokol IP a nad ním již standardním způsobem ostatní protokoly.

IP verze 6
Protokoly TCP/IP byly navrženy opravdu dobře a v praxi se velmi úspěšně ujaly.
Prakticky bez jakýchkoli zásadnějších změn vydržely až do dnešní doby.
Samozřejmě se dále vyvíjely, ale "inkrementálním" způsobem, tj. postupným
přidáváním dalších a dalších vlastností a schopností, nikoli zahazováním celých
předchozích řešení a přepracováním protokolů "od základů". Snad jedinou
výjimkou jsou adresy, používané na úrovni síťové vrstvy (tzv. IP adresy). Pro
ně bylo vyhrazeno 32 bitů, což ve své době představovalo značnou redundanci
(nadbytečnost). Později ale, vzhledem k fenomenálnímu úspěchu celosvětového
internetu, se spotřeba IP adres zvýšila natolik, že začalo hrozit jejich brzké
vyčerpání. Našla se ale různá "úsporná" řešení, která úbytek IP adres výrazně
zpomalila.
Přesto se muselo hledat i celkové řešení, které přišlo v podobě zcela nového
síťového protokolu IP verze 6 (IPv6). Ten bohužel již není vůči stávajícímu
protokolu IP (též: IP verze 4) inkrementální, ale musí jej nahradit. Existují
však i scénáře pro jejich vzájemnou koexistenci a pro postupný přechod od
jednoho protokolu ke druhému.

Everything over IP
Velký úspěch protokolů TCP/IP vedl ještě k jednomu zajímavému jevu: snad
všechny úspěšné aplikace a služby, které kdy vznikly v nějakém jiném prostředí
než pro TCP/IP a internet, byly časem převedeny (portovány) právě na platformu
TCP/IP. Je to ostatně logické, když jde o aplikace, které byly původně vyvinuty
pro jiné přenosové sítě, že již nejsou rozvíjeny a jsou naopak čím dál tím více
nahrazovány právě sítěmi na bázi TCP/IP. Dnes je stav takový, že snad
neexistuje žádná alespoň trochu smysluplná a uživatelná aplikace, která by
ještě nebyla přenesena na platformu TCP/IP. Platí to ostatně i pro tak
"odlišné" aplikace a služby, jako je přenos živého hlasu a obrazu. Ty byly
dlouhou dobu doménou telekomunikačních sítí, fungujících na principu
přepojování okruhů. Dnes se ale čím dál tím více prosazují i do síti s
přepojováním paketů a nejvíce právě do sítí na bázi protokolů TCP/IP.
Nepříliš správně se pro celý tento trend ujal slogan "Everything over IP"
(doslova "cokoli nad IP"), což není úplně pravda, protože mezi protokolem IP a
samotnými aplikacemi jsou ještě transportní protokoly (TCP nebo UDP). Nicméně i
zkratky typu "něco nad IP" jsou dnes již běžně zažité a také používané.
Příkladem může být zkratka VOIP (Voice over IP), označující přenos hlasu
prostřednictvím protokolu IP.