Vyšlo v týdeníku CHIPweek č. 30/96, 23. července 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a630k150.php3

Filosofie TCP/IP (I.)

Síťový model TCP/IP je vystavěn na jiných předpokladech, než z jakých vychází referenční model ISO/OSI. Především z tohoto faktu pak vyplývají základní vlastnosti modelu TCP/IP a jeho odlišnosti od referenčního modelu. Ale jaké výchozí předpoklady to vlastně jsou? A jaká vůbec je celková filosofie TCP/IP?

Podobně jako referenční model, vychází i síťový model TCP/IP ze stejné výchozí představy o tom, že by síťové funkce měly být rozděleny do hierarchicky uspořádaných vrstev. I síťový model TCP/IP je tedy modelem vrstevnatým, stejně jako RM ISO/OSI (viz 2. díl 3. modulu, v CWK 24/95). Autoři TCP/IP však při svém počátečním rozhodování o počtu vrstev a jejich úloze vyšli z jiných předpokladů než autoři RM ISO/OSI, a proto také dospěli k odlišným závěrům, a mj. i k odlišnému počtu vrstev - ke čtyřem, zatímco referenční model ISO/OSI jich předpokládá sedm.

Vrstva síťového rozhraní je prázdná

Jedním ze základních požadavků, které byly nastoleny na samém začátku prací na celkové koncepci TCP/IP, byl požadavek na možnost vzájemného propojení různých sítí. Tedy požadavek na to, aby prostřednictvím protokolů TCP/IP bylo možné vzájemně propojit i takové sítě, které mohly být vybudovány i na dosti odlišných principech a základních přenosových technologiích (tedy například sítě Ethernet, Token Ring, dnes FDDI, ATM, sítě s dvoubodovými spoji atd.).

Po protokolech TCP/IP se tedy od začátku požadovalo, aby „běhaly" co možná nejlépe nad nejrůznějšími protokoly nejnižších vrstev (které v rámci referenčního modelu ISO/OSI spadají do fyzické a linkové vrstvy), a také aby se apriorně neuzavíraly možnosti využít i takové přenosové protokoly, které budou teprve v budoucnu vyvinuty. Takovýto požadavek přitom v sobě nutně nesl i akceptování faktu, že životaschopné (a uživateli skutečně používané) přenosové technologie mohou vznikat i mimo rámec světa TCP/IP. A také že není nutné znovu vynalézat již jednou vynalezené, ale že stačí již existující přenosové technologie pouze využít. Autoři RM ISO/OSI ve stejné situaci použili opačný přístup - považovali za nezbytné sami vyvinout i veškeré přenosové technologie, nebo alespoň formálně převzít a vydat jako svůj standard takové technologie, které přeci jen vznikly někde jinde (to je třeba případ Ethernetu a dalších technologií, pocházejících od společnosti IEEE - standardy IEEE řady 802 byly vydány současně i jako standardy ISO 8802). K tomu ale samozřejmě referenční model ISO/OSI potřeboval fyzickou a linkovou vrstvu, zatímco síťový model TCP/IP tyto vrstvy nepotřebuje a nemá.

Pro přesnost a formální správnost ale dodejme, že síťový model TCP/IP přeci jen má nejnižší vrstvu, která svým „dosahem" pokrývá současně fyzickou i linkovou vrstvu referenčního modelu ISO/OSI. Je to vrstva označovaná jako vrstva síťového rozhraní (network interface layer). Důležité je ale to, že TCP/IP tuto vrstvu ponechává prázdnou, a sám ji nijak „nezabydluje"konkrétními protokoly (nýbrž předpokládá, že na úrovni této vrstvy budou použita řešení vyvinutá mimo rámec TCP/IP).

Bohatost, nebo spíše skromnost?

Síťový model TCP/IP tedy nijak nevymezuje, jaká konkrétní přenosová technologie bude použita na úrovni vrstvy síťového rozhraní - a v důsledku toho pak ale nemůže sám nic předpokládat o vlastnostech této technologie. Nemůže tedy dopředu počítat s tím, že půjde o takovou technologii, která je relativně spolehlivá a nedochází u ní ke ztrátám či poškození dat příliš často, nebo že naopak jde o přenosovou technologii která ztrácí data častěji. Podobně nemůže předpokládat nic ani o dalších vlastnostech, jako třeba o rychlosti přenosu, přenosovém zpoždění, maximální velikosti přenášených bloků apod.

Obrázek 1.
Nižší vrstvy TCP/IP vs. vrstvy ISO/OSI
Na druhé straně ale má TCP/IP za úkol nabídnout (na úrovni vyšších vrstev než je vrstva síťového rozhraní) stejné možnosti, podmínky i stejný způsob práce - tedy vlastně zakrýt případná specifika konkrétních síťových technologií a vytvořit nad nimi jednotné prostředí, nabízející jednotné služby, jednotný způsob adresování apod.

Jak ale má být voleno toto jednotné prostředí? Má být spíše bohatší, má oplývat funkcemi a schopnostmi, nebo má být naopak skromnější? Bude-li bohatší, bude složitější, náročnější a dražší této bohatosti dosáhnout pomocí „málo bohaté" přenosové technologie na úrovni vrstvy síťového rozhraní. Hlavně se pak ale může stát, že takováto „bohatost" bude zbytečná, a že vyšší vrstvy ji nebudou požadovat. Bude ale mít tato situace nějaké nepříjemné důsledky? Když někdo nebude chtít využít dostupné „bohatosti", bude nějak omezen i při použití těch „méně bohatých" prostředků a funkcí? Odpověď je bohužel kladná - s implementací „bohatosti" (například spolehlivého způsobu fungování) je vždy spojena určitá nenulová režie. Pokud vyšší vrstvy „bohatost" nepotřebují a nevyužívají, příslušnou režii nesou stále.

Autoři TCP/IP se proto rozhodli pro skromnost, která na druhé straně umožňuje dosahovat vyšší efektivnosti. Podobné rozhodnutí pak přijali i na dalších místech, resp. na úrovni dalších vrstev, takže jde spíše o obecnější princip, kterým je celý síťový model TCP/IP doslova prodchnut - zatímco třeba referenční model je prodchnut spíše opačným principem, neboli snahou o apriorní bohatost, byť za cenu méně efektivního fungování.

Síťová vrstva

Když měli autoři TCP/IP vymyslet koncepci síťové vrstvy, která by překryla všechny konkrétní přenosové technologie z vrstvy síťového rozhraní a vytvořila nad nimi jednotné prostředí, samozřejmě aplikovali výše popsaný princip „spíše skromnost, než bohatost". Pak jim zcela zákonitě vyšlo, že síťová vrstva by se měla soustředit především na co možná nejrychlejší přenos dat, a nikoli na zajištění spolehlivosti a případných dalších „bohatých" funkcí. Představa autorů, dobře korespondující s principem skromnosti, totiž byla taková, že právě spolehlivost si lépe a efektivněji zajistí ti, kdo ji budou skutečně potřebovat. Tedy až vyšší vrstvy, případně až jednotlivé aplikace.

Autoři TCP/IP proto zabydleli síťovou vrstvu protokolem, který funguje jako nespolehlivý - což je třeba chápat tak, že se sice snaží o bezchybný přenos, ale když se mu to nepodaří a někde se něco ztratí či poškodí, nepovažuje za svou povinnost postarat se o nápravu (a místo toho očekává, že o případnou nápravu se postarají vyšší vrstvy).

Zmíněný protokol dostal jméno Internet Protocol (zkratkou IP), což nesouvisí ani tak s Internetem jako takovým (který v době vzniku TCP/IP byl ještě zárodečným Arpanetem), jako spíše se skutečností, že má na starosti vzájemné propojení jednotlivých dílcích sítí (čímž vzniká obecný „internet", s malým „i").

Dalším charakteristickým rysem protokolu IP je jeho nespojovaný charakter - jde tedy o takový protokol, který při přenosu dat nepočítá s apriorním navázáním spojení mezi odesilatelem a příjemcem, a místo toho posílá všechna data „na blint", obdobně jako jsou odesílány jednotlivé dopisy běžnou listovní poštou. Však se také v této souvislosti hovoří o přenášených blocích dat jako o datagramech (IP datagramech), a o nespojovaném způsobu přenosu jako o datagramové službě.

Motivaci pro nespojovaný charakter protokolu IP je nutné hledat v celkovém požadavku na robustnost protokolů TCP/IP a jejich schopnost přežít nenadálé výpadky sítě - dojde-li totiž někde k náhlému přerušení nějaké přenosové cesty, přenos spojovaného charakteru to ovlivní zásadním způsobem (a je nutné provést složitější nápravné akce, vrcholící navázáním nového spojení). Naproti tomu přenos nespojovaného charakteru to ovlivní mnohem méně - zde je každý jednotlivý blok dat (datagram) přenášen samostatně, svou vlastní cestou, a tak jsou v případě výpadku jedné možné cesty další datagramy snadno směrovány jinudy.