Vyšlo v týdeníku CHIPweek č. 32/96, 6. srpna 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a632k150.php3

Protokoly TCP/IP (I.)

V minulých dílech tohoto modulu jsme se seznámili s celkovou koncepcí a filosofií síťového modelu TCP/IP. Pojďme si nyní doplnit náš obrázek o tomto uceleném „síťovém světovém názoru" ještě alespoň základním výčtem nejvýznamnějších protokolů, které patří do rodiny protokolů TCP/IP.

Jak jsme si již několikrát zdůraznili, síťový model TCP/IP sám nespecifikuje žádné konkrétní přenosové technologie „pod" síťovou vrstvou, tj. žádné konkrétní protokoly na úrovni vrstvy síťového rozhraní. Zde se skutečně používají taková řešení, jaká jsou k dispozici resp. jaká si vyberou provozovatelé konkrétních sítí. Například v lokálních sítích to bývá nejčastěji Ethernet, a z tohoto důvodu také bývá samotná vrstva síťového rozhraní někdy označována jako Ethernetová vrstva.

Skutečnost, že TCP/IP sám nijak „nenaplňuje" svou vrstvu síťového rozhraní, však rozhodně neznamená, že by bylo zcela lhostejné jakou konkrétní technologii uživatelé skutečně použijí. Problém je totiž v tom, že protokol IP, provozovaný na úrovni síťové vrstvy, musí být vhodným a koordinovaným způsobem „posazen" na konkrétní protokol, používaný na úrovni vrstvy síťového rozhraní. Ukažme si to na příkladu: jestliže se v určité síti používá jako přenosová technologie Ethernet, musí odesilatel „balit" jednotlivé pakety protokolu IP do Ethernetových rámců takovým způsobem, aby příjemce na druhé straně byl schopen je zase zpětně „vybalit". Jinými slovy: oba musí být předem dohodnuti na konkrétním způsobu, jakým bude protokol IP využívat k přenosu svých paketů protokoly Ethernetu. Úplně stejně je tomu i v případě jiných přenosových technologií, jako třeba Token Ring, ATM, FDDI apod. Součástí „standardizační mašinérie TCP/IP" (ke které se také ještě dostaneme) proto musí být soustava doporučení o tom, jak tu kterou konkrétní přenosovou technologii (na úrovni vrstvy síťového rozhraní) využívat pro přenos paketů protokolu IP.

Protokoly síťové vrstvy

Obrázek 1.
Nejvýznamnějším protokolem síťové vrstvy TCP/IP je bezesporu samotný protokol IP (Internet Protocol), který zajišťuje vlastní přenos datových paketů (i když ve skutečnosti k tomu sám využívá přenosové technologie na úrovni vrstvy síťového rozhraní). Připomeňme si, že protokol IP funguje na nespojovaném a nespolehlivém principu, tj. nepočítá s navazováním spojení mezi příjemcem a odesilatelem, a neusiluje o zajištění spolehlivosti přenosu - ne že by sám z vlastní iniciativy nějaká data zahazoval, ale když zjistí že přeci jen došlo k nějaké chybě při přenosu a k poškození dat, nepovažuje za svou povinnost postarat se o nápravu.

Vedle protokolu IP však síťovou vrstvu TCP/IP „obývají" ještě mnohé další protokoly. Podle jejich významu je lze rozdělit do následujících skupin:

  • protokoly sloužící potřebám vzájemné návaznosti protokolu IP a přenosových technologií vrstvy síťového rozhraní. Sem patří například protokol ARP (Address Resolution Protocol), používaný hlavně v prostředí Ethernetovských sítí, a sloužící potřebám převodu 32-bitových IP adres na 48-bitové Ethernetové adresy. Dále sem patří například protokol RARP („reverzní" ARP), umožňující opačný převod, a používaný hlavně bezdiskovými stanicemi k počátečnímu zjištění jejich IP adresy.
  • protokoly sloužící potřebám správy a řízení. Sem patří zejména protokol ICMP (Internet Control Message Protocol), který se používá k signalizaci chyb a různých nestandardních situací (ale pouze potřebám signalizace, ICMP sám nezajišťuje jejich nápravu). Dále sem patří např. protokol IGMP (Internet Group Management Protocol), podporující tzv. skupinového vysílání (multicasting).
  • protokoly zajišťující aktualizaci směrovacích informací. Samotné směrování, neboli rozhodování o dalším směru jednotlivých paketů a jejich následné odeslání, sice zajišťuje protokol IP, ale i ten přitom vychází z obsahu směrovacích tabulek v jednotlivých uzlech. Obsah těchto směrovacích tabulek však musí být pravidelně aktualizován, tak aby odpovídal reálné situaci a skutečné topologii soustavy vzájemně propojených sítí. No a to už je úkol pro specializované protokoly, mezi které patří zejména protokoly RIP (Routing Information Protocol) a OSPF (Open Shortest Path First).

Protokoly transportní vrstvy

Jak jsme si již uvedli v minulém dílu, autoři TCP/IP „osadili" transportní vrstvu hned dvěma základními transportními protokoly, a to protokoly TCP a UDP. Logika tohoto kroku je geniálně jednoduchá - nelze-li jednoznačně stanovit, zda aplikace budou po transportní vrstvě požadovat spíše spolehlivé přenosové služby, byť poněkud méně efektivní, nebo naopak přenosové služby co možná nejrychlejší, byť nespolehlivé - pak nechť jsou na úrovni transportní vrstvy k dispozici obě možnosti, a nechť má každá aplikace možnost výběru.

Protokol TCP (Transmission Control Protocol) zajišťuje první z obou variant - zajišťuje spolehlivou přenosovou službu, navíc na spojovaném principu. Tomu, kdo ji využívá (tj. příslušné aplikaci) přitom vytváří iluzi „přenosové roury": odesilatel na jedné straně zadává k odeslání postupně jednotlivé byty („strká je do přenosové roury"), a příjemce si je na druhém konci pomyslné roury zase může postupně odebírat. Ve skutečnosti se data samozřejmě přenáší po blocích (a ne jako souvislý proud jednotlivých bytů), ale to je před koncovými aplikacemi efektivně skryto. Samotný protokol TCP přitom ke svému fungování využívá takové přenosové služby, jaké mu na úrovni síťové vrstvy nabízí protokol IP (tj. služby nespolehlivé a nespojované).

Protocol UDP (User Datagram Protocol) zajišťuje druhou variantu - tedy nespolehlivou a nespojovanou přenosovou službu na úrovni transportní vrstvy. Protokol UDP je ve své podstatě pouze velmi jednoduchou nadstavbou nad protokolem IP, která v zásadě nijak nemění charakter přenosových služeb, poskytovaných přímo samotných protokolem IP. Jediné, co protokol UDP „přidává navíc", je rozlišování mezi jednotlivými příjemci a odesilateli v rámci konkrétních uzlů - zatímco protokol IP předpokládá, že adresátem paketů je vždy uzel jako takový, protokol UDP (stejně jako TCP) již „vidí" v rámci jednotlivých uzlů i konkrétní příjemce (např. různé aplikace, systémové procesy atd.), a dokáže jim přijímaná data rozdělovat. Na rozdíl od protokolu TCP se ale protokol UDP nesnaží vytvářet vyšším vrstvám (aplikacím) iluzi přenosu souvislého proudu dat. Místo toho jim předkládá stejnou vizi, jakou jemu samému předkládá protokol IP - tedy vizi přenosu členěného na bloky (tzv. blokovaného přenosu). Protokol UDP tedy očekává, že mu aplikace budou předávat data již „nařezaná" (rozdělená do bloků), a on je bude pouze vkládat, stylem 1:1, do svých bloků (označovaných jako „uživatelské datagramy", odsud také pojmenování protokolu).

Kam patří SLIP a PPP?

Zajímavou výjimkou z celkové koncepce TCP/IP, tak jak jsme si ji až doposud popisovali, jsou dva relativně mladé protokoly, SLIP (Serial Line IP) a PPP (Point-to-Point Protocol). Oba slouží potřebám přenosu protokolu IP po dvoubodových spojích (sériových linkách), a dnes jsou velmi rozšířené zejména díky připojování jednotlivých počítačů k Internetu přes komutované (vytáčené) linky veřejné telefonní sítě - jsou to vlastně jediné dva protokoly z rodiny protokolů TCP/IP, které pro takovýto způsob připojení připadají v úvahu.

Výjimkou z celkové koncepce TCP/IP jsou tyto dva protokoly proto, že v sobě zahrnují i konkrétní přenosovou technologii - patří sice do vrstvy síťové (neboť implementují protokol IP), ale současně s tím zasahují i do vrstvy síťového rozhraní. Jinými slovy: na rozdíl od samotného protokolu IP (který využívá existující přenosovou technologii na úrovni vrstvy síťového rozhraní) si protokoly SLIP a PPP svá data skutečně přenáší samy.