Vyšlo v týdeníku Computerworld č. 31/92 v roce 1992
Vytištěno z adresy: http://www.earchiv.cz/a92/a231c110.php3

Síťový model TCP/IP

Referenční model ISO/OSI, kterým jsme se v našem seriálu dosud zabývali, je všeobecně považován za koncepci resp. síťovou architekturu, která do budoucna převládne a stane se dominující. Není ale zdaleka koncepcí jedinou, a své budoucí postavení si musí teprve vybojovat. V současné době je největším "rivalem" referenčního modelu ISO/OSI soustava protokolů TCP/IP.

Řekne-li se dnes TCP/IP, je to obvykle chápáno jen jako označení dvou přenosových protokolů, používaných v počítačových sítích s počítači na bázi Unixu, konkrétně protokolů TCP (Transmission Control Protocol) resp. IP (Internet Protocol). Ve skutečnosti ale zkratka TCP/IP označuje celou soustavu protokolů, ne nutně vázanou na operační systém Unix, přičemž TCP a IP jsou sice nejznámější protokoly této soustavy, ale zdaleka ne protokoly jediné. Správnější je ale považovat TCP/IP za ucelenou soustavu názorů o tom, jak by se počítačové sítě měly budovat, a jak by měly fungovat. Zahrnuje totiž i vlastní představu o tom, jak by mělo být síťové programové vybavení členěno na jednotlivé vrstvy, jaké úkoly by tyto vrstvy měly plnit, a také jakým způsobem by je měly plnit - tedy jaké konkrétní protokoly by na jednotlivých úrovních měly být používány. Ve smyslu definice, kterou jsme si zavedli ve 23. dílu našeho seriálu, je tedy TCP/IP síťovou architekturou.

Pohled do historie

Počátky TCP/IP se datují do konce 60. let, a jsou úzce spojeny s činností účelové agentury ARPA (Advanced Research Projects Agency) ministerstva obrany USA, která si nové protokoly nechala vyvinout pro svou počítačovou síť ARPANET. Na vývoji celé soustavy protokolů, financovaném prostřednictvím tzv. grantů ministerstva obrany (účelových dotací na výzkum) se pak podílela počítačově orientovaná pracoviště předních univerzit USA. Svou dnešní podobu získaly nové protokoly zhruba v letech 1977-79, a brzy poté na ně začala postupně přecházet i vlastní síť ARPANET, která se posléze stala zárodkem a páteří celého konglomerátu sítí, nazývaného dnes příznačně Internet.

Agentura ARPA (mezitím přejmenovaná na DARPA) se pak snažila prosadit nově vytvořené protokoly (a vlastně i celou ucelenou síťovou architekturu) do praktického života i mimo síť ARPANET, především pak do akademického prostředí. Většina univerzitních počítačových pracovišť v USA v té době provozovala nějakou verzi tzv. BSD Unixu, pocházející ze střediska Berkeley Software Distribution (BSD) na University of California v Berkeley. Agentura DARPA si proto nechala u přední americké firmy Bolt, Beranek and Newman (BBN) na zakázku vyvinout implementaci TCP/IP protokolů pod operační systém Unix, a univerzitě v Berkeley přispěla výzkumnými granty na začlenění těchto protokolů do univerzitou distribuovaných produktů. Tím se protokoly TCP/IP prosadily do BSD Unixu, a posléze pak i do ostatních verzí Unixu buď přímo jako jejich standardní součást, nebo jako volitelný doplněk (option). Díky své popularitě se však záhy dostaly i na jiné platformy, a dnes jsou implementovány snad ve všech výpočetních prostředích, od osobních počítačů PC s operačním systémem MS DOS až např. po sálové počítače (mainframes) firmy IBM a operační systém VM.

Pro svůj úzký vztah k síti Internet je soustava protokolů TCP/IP někdy označována také jako Internet protocol suite (doslova: soustava protokolů Internetu), nebo též Department of Defense (DoD) protocol suite, což naopak zdůrazňuje vztah k ministerstvu obrany USA.

Filosofie TCP/IP

Hlavní odlišnosti mezi referenčním modelem ISO/OSI a TCP/IP vyplývají především z rozdílných výchozích předpokladů a postojů jejich tvůrců. Jak jsme si již naznačili v předchozích dílech našeho seriálu, při koncipování referenčního modelu ISO/OSI měli hlavní slovo zástupci spojových organizací. Ti pak nově vznikajícímu modelu vtiskli svou vlastní představu - především spojovaný a spolehlivý charakter služeb, poskytovaných v komunikační podsíti (tj. až do úrovně síťové vrstvy, včetně). Jinými slovy: ISO/OSI model počítá se soustředěním co možná nejvíce funkcí, včetně zajištění spolehlivosti přenosů, již do komunikační podsítě, která v důsledku toho bude muset být poměrně složitá, zatímco k ní připojované hostitelské počítače budou mít relativně jednoduchou úlohu. Později se ale ukázalo, že například právě v otázce zajištění spolehlivosti to není nejšťastnější řešení - že totiž vyšší vrstvy nemohou považovat spolehlivou komunikační podsíť za dostatečně spolehlivou pro své potřeby, a tak se snaží zajistit si požadovanou míru spolehlivosti vlastními silami. V důsledku toho se pak zajišťováním spolehlivosti do určité míry zabývá vlastně každá vrstva referenčního modelu ISO/OSI.

Tvůrci protokolů TCP/IP naopak vycházeli z předpokladu, že zajištění spolehlivosti je problémem koncových účastníků komunikace, a mělo by tedy být řešeno až na úrovni transportní vrstvy. Komunikační podsíť pak podle této představy nemusí ztrácet část své přenosové kapacity na zajišťování spolehlivosti (na potvrzování, opětné vysílání poškozených paketů atd.), a může ji naopak plně využít pro vlastní datový přenos. Komunikační podsíť tedy podle této představy nemusí být zcela spolehlivá - může v ní docházet ke ztrátám přenášených paketů, a to bez varování a bez snahy o nápravu. Komunikační síť by ovšem neměla zahazovat pakety bezdůvodně. Měla by naopak vyvíjet maximální snahu přenášené pakety doručit (v angličtině se v této souvislosti používá termín: best effort), a zahazovat pakety až tehdy, když je skutečně nemůže doručit - tedy např. když dojde k jejich poškození při přenosu, když pro ně není dostatek vyrovnávací paměti pro dočasné uložení, v případě výpadku spojení apod. Na rozdíl od referenčního modelu ISO/OSI tedy TCP/IP předpokládá jednoduchou (ale rychlou) komunikační podsíť, ke které se připojují inteligentní hostitelské počítače.

Další odlišnost od referenčního modelu ISO/OSI spočívá v názoru na to, jak má komunikační síť vlastně fungovat. Zatímco model ISO/OSI počítá především se spojovaným přenosem - tedy s mechanismem virtuálních okruhů, TCP/IP naopak předpokládá nespojovaný charakter přenosu v komunikační podsíti - tedy jednoduchou datagramovou službou - což ostatně vyplývá i z představy co možná nejjednodušší komunikační podsítě.

Čtyři vrstvy TCP/IP

Obrázek 42.1.
Obr. 42.1.: Čtyři vrstvy síťového modelu TCP/IP vs. RM ISO/OSI
Zatímco referenční model ISO/OSI vymezuje sedm vrstev síťového programového vybavení, TCP/IP počítá jen se čtyřmi vrstvami - viz obrázek 42.1.

Nejnižší vrstva, vrstva síťového rozhraní (Network Interface Layer) (někdy též: linková vrstva resp. Link Layer) má na starosti vše, co je spojeno s ovládáním konkrétní přenosové cesty resp. sítě, a s přímým vysíláním a příjmem datových paketů. V rámci soustavy TCP/IP není tato vrstva blíže specifikována, neboť je závislá na použité přenosové technologii.

Vrstvu síťového rozhraní může tvořit relativně jednoduchý ovladač (device driver), je-li daný uzel přímo připojen například k lokální síti či ke dvoubodovému spoji, nebo může tato vrstva představovat naopak velmi složitý subsystém, s vlastním linkovým přenosovým protokolem (např. HDLC apod.). Vzhledem k velmi častému připojování jednotlivých uzlů na lokální sítě typu Ethernet je vrstva síťového rozhraní v rámci TCP/IP často označována také jako Ethernetová vrstva (Ethernet Layer).

Bezprostředně vyšší vrstva, která již není závislá na konkrétní přenosové technologii, je vrstva síťová, v terminologii TCP/IP označovaná jako Internet Layer (volněji: vrstva vzájemného propojení sítí), nebo též IP vrstva (IP Layer) podle toho, že je realizována pomocí protokolu IP. Úkol této vrstvy je v prvním přiblížení stejný, jako úkol síťové vrstvy v referenčním modelu ISO/OSI - stará se o to, aby se jednotlivé pakety dostaly od odesilatele až ke svému skutečnému příjemci, přes případné směrovače resp. brány. Vzhledem k nespojovanému charakteru přenosů v TCP/IP je na úrovni této vrstvy zajišťována jednoduchá (tj. nespolehlivá) datagramová služba.

Třetí vrstva TCP/IP je označována jako transportní vrstva (Transport Layer), nebo též jako TCP vrstva (TCP Layer), neboť je nejčastěji realizována právě protokolem TCP (Transmission Control Protocol). Hlavním úkolem této vrstvy je zajistit přenos mezi dvěma koncovými účastníky, kterými jsou v případě TCP/IP přímo aplikační programy (jako entity bezprostředně vyšší vrstvy). Podle jejich nároků a požadavků může transportní vrstva regulovat tok dat oběma směry, zajišťovat spolehlivost přenosu, a také měnit nespojovaný charakter přenosu (v síťové vrstvě) na spojovaný.

Přestože je transportní vrstva TCP/IP nejčastěji zajišťována právě protokolem TCP, není to zdaleka jediná možnost. Dalším používaným protokolem na úrovni transportní vrstvy je například protokol UDP (User Datagram Protocol), který na rozdíl od TCP nezajišťuje mj. spolehlivost přenosu - samozřejmě pro takové aplikace, které si to (na úrovni transportní vrstvy) nepřejí.

Nejvyšší vrstvou TCP/IP je pak vrstva aplikační (Application Layer). Jejími entitami jsou jednotlivé aplikační programy, které na rozdíl od referenčního modelu ISO/OSI komunikují přímo s transportní vrstvou. Případné prezentační a relační služby, které v modelu ISO/OSI zajišťují samostatné vrstvy, si zde musí jednotlivé aplikace v případě potřeby realizovat samy.