Technologie internetu (5.): Modely, vrstvy a hlavičky

3. 9. 2007

Sdílet

Datová komunikace představuje v celé své šíři pěkně složitý problém, který začíná u fyzikálních aspektů přenosu signálu a končí třeba u webové stránky, která se zobrazí ve vašem prohlížeči.

Datová komunikace představuje v celé své šíři pěkně složitý problém, který začíná u fyzikálních aspektů přenosu signálu a končí třeba u webové stránky, která se zobrazí ve vašem prohlížeči.

Mezitím nadto ještě prošla identifikací účastníků, směrováním paketů a opravou chyb. Takto košaté úlohy lze efektivně vyřešit jen aplikací principu „rozděl a panuj“. V případě datových komunikací se velmi osvědčilo rozdělení spektra potřebných funkcí do několika vrstev. V takovém uspořádání každá vrstva využívá služeb nabízených spodními vrstvami a zároveň vytváří vyšší úroveň abstrakce pro všechny vrstvy, které leží nad ní.

Referenční modely

Prakticky všechny moderní komunikační technologie vycházejí z modelu OSI, který je blíže popsán v rámečku. Byl původně vytvořen pro stejnojmenný soubor protokolů, které měly jakožto vycizelované standardy ISO nahradit nedokonalé a živelně vznikající protokoly TCP/IP. Jenže život, ten poťouchlý zlatý strom, se zase zazelenal trochu jinak a jinde než šedá teorie předpovídala…

Referenční model, stejně tak jako celá rodina protokolů ISO OSI, obsahuje některé důležité principy a mechanismy, které najdeme i v základech současného internetu. Jako celek je však poněkud teoretický a zbytečně složitý, a proto se s ním setkáme spíše v případech, kdy se o internetu mluví nebo píše.

Praktické implementace protokolů TCP/IP bohatě vystačí s jednodušším čtyřvrstvým modelem:

1. Nejnižší vrstva síťového rozhraní sdružuje funkce fyzické a linkové vrstvy modelu OSI. Patří do ní mnoho různorodých technologií, například Ethernet včetně Wi-Fi nebo GPRS ve spojení s protokolem PPP.
2. Internetová vrstva přesně odpovídá třetí, tedy síťové vrstvě podle OSI. Jejím hlavním reprezentantem je protokol IP.
3. Transportní vrstva, jak už název napovídá, má také svůj přesný ekvivalent ve čtvrté vrstvě OSI. Spadají sem protokoly TCP a UDP.
4. Nejvyšší aplikační vrstva není podrobněji členěná a zahrnuje vše ostatní, co komunikační aplikace pro svou činnost potřebuje. Je na jejím programátorovi, zda ji bude strukturovat podle vzoru páté až sedmé vrstvy OSI, anebo použije jinou logiku. Mezi protokoly aplikační vrstvy patří HTTP, SMTP či třeba XMPP pro instant messaging.

Konkrétní realizace tohoto uspořádání – kupříkladu Ethernet/IP/TCP/HTTP – se v internetové hantýrce nazývá sloupec protokolů (protocol stack).

Hlavičky paketů

O tom, že čtyřvrstvý model architektury protokolů TCP/IP není žádnou teoretickou abstrakcí, se můžeme snadno přesvědčit, pokud nahlédneme dovnitř datových paketů, které dostáváme z internetu anebo sami odesíláme. Doporučuji čtenáři, aby si takové cvičení opravdu vyzkoušel, třeba pomocí znamenitého a volně dostupného programu Ethereal. Typický výsledek ukazuje příklad na obrázku: k datům aplikace, od níž paket pochází, jsou vepředu přilepeny hlavičky všech tří nižších vrstev: transportní, internetové a síťového rozhraní.

Odesílající aplikace – řekněme webový server – se stará pouze o svá vlastní data, která obvykle také opatří formalizovanou hlavičkou. Tato data spolu s informacemi o adresátovi apod. předává operačnímu systému, který obstará potřebné funkce všech tří nižších vrstev.

Transportní vrstva před aplikační data přidá hlavičku použitého transportního protokolu (většinou TCP nebo UDP) a posune výsledek internetové vrstvě, která mu předřadí hlavičku IP, a vytvoří tak datagram. Ten je konečně předán vrstvě síťového rozhraní, jež stejně jako obě předchozí na začátek přidá svou hlavičku (např. Ethernet). Tím je celý paket – odborně se mu říká rámec (frame) – hotov a může být předán síťové kartě k odeslání.

Přijímající strana – v našem případě to bude webový prohlížeč – zpracovává přijatý rámec ve svém operačním systému v obráceném pořadí: nejdřív přijde na řadu vrstva síťového rozhraní, po ní internetová a pak transportní. Každá z nich odloupne svou hlavičku a podle dat, která v ní nalezne, se zbytkem dále naloží. Speciálně v hlavičce transportního protokolu TCP nebo UDP je zapsáno číslo označované jako cílový port, podle něhož transportní vrstva pozná, pro kterou aplikaci jsou přijatá data určena.

Většina funkcí vrstvy síťového rozhraní je nejčastěji „zadrátována“ do hardwaru a firmwaru síťových karet, takže programátor síťových protokolů s nimi pracuje jen jako s černou skříňkou. Internetová a transportní vrstva bývá u uživatelských počítačů a serverů implementována v softwaru operačního systému, zatímco u směrovačů a jiných specializovaných prvků síťové infrastruktury se převážná část funkcí internetové vrstvy kvůli zvýšení výkonu realizuje v hardwaru.


Referenční model ISO OSI

Standard ISO 7498 z roku 1984 obsahuje specifikaci základního referenčního modelu OSI (Open System Interconnection). Datově komunikační funkce rozděluje do následujících sedmi vrstev, které jsou zde uvedeny odspodu, tedy v pořadí od nejnižší k nejvyšší:
1. Fyzická vrstva definuje fyzikální charakteristiky komunikačního média a signálu, který se v něm přenáší, tedy mimo jiné způsob kódování bitů a rychlost přenosu.
2. Linková vrstva určuje způsob výměny informačních jednotek (paketů) mezi stanicemi, které spolu mohou prostřednictvím přenosového média přímo komunikovat. Dále stanovuje například metody řešení kolizí při současném vysílání dvou či více stanic, pokud k takové situaci může dojít.
3. Síťová vrstva má za úkol vytvořit podmínky pro komunikaci mezi stanicemi, které na sebe přímo „nevidí“. Této funkci se souhrnně říká směrování (routing).
4. Transportní vrstva odpovídá za přenos zpráv, tedy logických datových celků mezi účastníky komunikace. Je vhodným místem pro řízení toku dat a zajištění jejich integrity.
5. Relační vrstva se stará o výměnu řídících informací mezi komunikujícími procesy, například oznámení změny stavu, žádosti o služby, změna směru přenosu („přepínám“) apod.
6. Prezentační vrstva řeší některé „kosmetické“ problémy, jako je třeba rozdílné kódovaní znaků nebo zakončení řádků v textových souborech.
7. Aplikační vrstva vykonává konkrétní funkce, které jsou specifické pro daný program, tedy například přenos souborů, synchronizaci času či distribuovanou hru.