Vyšlo v týdeníku: | COMPUTERWORLD |
Číslo: | 50/92 |
Ročník: | 1992 |
Rubrika/kategorie: | Co je čím ... v počítačových sítích |
Díl: | 54 |
Pro správné pochopení podstaty celého problému je třeba si uvědomit, že realizace spolehlivých služeb je spojena s větší režií, než jakou jsou zatíženy nespolehlivé přenosové služby. Nejde přitom jen o větší výpočetní náročnost, ale také o větší nároky na přenosovou kapacitu. Spolehlivost přenosů po ne zcela spolehlivých přenosových cestách se totiž musí zajišťovat vhodnou formou potvrzování (viz 30. díl seriálu), což je ale vždy spojeno s přenosem určitého objemu služebních dat, ke kterému samozřejmě dochází na úkor "užitečných dat".
Jestliže tedy TCP/IP model požaduje na síťové vrstvě pouze nespolehlivou přenosovou službu (realizovanou protokolem IP, viz minulý díl), umožňuje tím současně, aby síťová vrstva pracovala s menší režií, a tudíž rychleji.
Zařadit potřebné mechanismy pro zajištění spolehlivosti do transportní vrstvy má četné výhody. Především pak tu, že tyto prostředky mohou být v transportní vrstvě realizovány právě jednou, a sdíleny všemi entitami aplikační vrstvy. Pokud bychom naopak tyto prostředky umístili až do vrstvy aplikační, vlastně by to znamenalo, že by si je musela každá entita aplikační vrstvy zajišťovat vždy znovu a sama.
Mohlo by se tedy zdát, že vše hovoří ve prospěch první možnosti. Ale i ta druhá může mít své opodstatnění - existují totiž i takové druhy aplikací, které buď vůbec nepotřebují spolehlivé přenosové služby, nebo naopak nepovažují "spolehlivost" na úrovni transportní vrstvy za dostatečnou, a tak si ji musí zajišťovat samy a znovu. Jinou motivací mohou být otázky efektivnosti - některé aplikace si dokáží zajistit samy takovou míru spolehlivosti, jakou skutečně potřebují, a vykazují přitom menší režii, než jakou na zajištění "úplné" spolehlivosti vyžaduje vrstva transportní. Příkladem takovéhoto druhu aplikací může být distribuovaný systém souborů NFS (Network File System) firmy Sun, velmi oblíbený a značně rozšířený v prostředí operačního systému Unix. Umožňuje, aby jeden uzlový počítač zcela transparentně sdílel soubory jiného uzlového počítače, tedy aby k nim přistupoval naprosto stejně, jako ke svým vlastním souborům. Nemá-li ale docházet k výraznějším časovým rozdílům při přístupu k lokálním a vzdáleným souborům, musí systém NFS pracovat maximálně rychle. Nemůže si proto dovolit používat spolehlivé, zato ale "pomalé" přenosové služby na úrovni transportní vrstvy.
![]() |
Protokol UDP tak vlastně poskytuje na úrovni transportní vrstvy služby stejného charakteru, jaké na úrovni vrstvy síťové poskytuje protokol IP (viz minule), tedy nespolehlivé a nespojované služby. Naproti tomu protokol TCP implementuje pomocí nespolehlivých a nespojovaných služeb na úrovni síťové vrstvy spolehlivé a spojované transportní služby. Jak jsme si již naznačili výše, činí tak s pomocí mechanismu potvrzování (acknowledgement), a tudíž i s nezanedbatelnou režií.
Každý uživatelský datagram (user datagram) - jak je označován blok dat, přenášený na úrovni transportní vrstvy protokolem UDP - je považován za samostatný celek, a vzhledem k nespojovanému charakteru protokolu UDP je také tak přenášen - samostatně, nezávisle na jiných uživatelských datagramech, a bez předchozího navázání spojení mezi příjemcem a odesilatelem. Stejně tak i příjemce chápe uživatelský datagram jako jediný celek, a ne jako součást většího celku. Tomu pak odpovídá i skutečnost, že příjemce nemění svůj stav v závislosti na průběhu komunikace - po přijetí datagramu se nachází ve stejném stavu, v jakém byl před jeho přijetím. Jde tedy o způsob přenosu, který je možné charakterizovat jako bezestavový (stateless).
Naproti tomu každá spojovaná služba má vždy nutně stavový charakter, neboť již pouhým navázáním spojení se příjemce dostává do jiného stavu, než v jakém byl předtím.
Bezestavový způsob komunikace je vzhledem ke své podstatě dobře odolný vůči různým nestandardním situacím, především pak výpadkům a ztrátám dat. Dojde-li například k výpadku přenosových cest či k výpadku příjemce (a je nutné jej znovu spustit, provést tzv. reboot), nejsou nutná žádná specifická opatření pro obnovu původního stavu - v přenosu dat se jednoduše pokračuje dál. Naproti tomu v případě stavového způsobu komunikace mohou být určité nápravné akce zapotřebí, má-li být zachována konzistence právě probíhajících činností, a znovu navázáno přerušené spojení.
S tím pak také souvisí i otázka spolehlivosti - zatímco bezestavové protokoly si mohou dovolit být nespolehlivé (jako UDP), pro jejich stavové protějšky je výhodnější pracovat s dostatečnou mírou spolehlivosti, a tedy nabízet spolehlivé přenosové služby (jako protokol TCP).