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.