Vyšlo v týdeníku CHIPweek č. 19/95, 6. září 1995
Vytištěno z adresy: http://www.earchiv.cz/a95/a519k130.php3

Frame a Packet

Mezi zajímavosti počítačové terminologie bezesporu patří i nejčastěji zaměňované termíny. Schválně, kolikrát jste již slyšeli, jak si lidé pletou například takové bity za sekundu s baudy? Že jde o srovnávání „jablek s hruškami", to mnoha lidem vůbec nevadí - často ani obchodníkům s modemy, kteří tím nepřímo signalizují, že vlastně ani netuší co prodávají. Mohu-li ale soudit z vlastní zkušenosti, pak problémy se zaměňováním bitů za sekundu za baudy blednou před tím, jak moc se pletou jiné dva termíny z oblasti počítačových sítí - pojmy rámec (anglicky: frame) a paket (anglicky: packet). Zkusme si do tohot vnést jasno.

Již v minulém vydání této rubriky, věnované pojmu „protocol stack", jsme si řekli že sítě si libují ve vrstvách - že své činnosti zařazují do vrstev, a že na každé vrstvě jsou definovány určité protokoly, říkající jak realizovat úkoly dané vrstvy. Dnes si k této představě přidáme ještě jednu podstatnou informaci - každý protokol by měl přesně definovat způsob, jakým se budou vzájemně dorozumívat implementace dvou stejnolehlých vrstev na různých počítačích sítě (tedy dvě vrstvy, které jsou v rámci hierarchického uspořádání vrstev ve stejné „výšce", ale každá z nich na jiném uzlu). Do toho nutně musí spadat i přesná definice tvaru (formátu) a významu dat, které si v rámci té které vrstvy budou dva různé uzly vzájemně vyměňovat. Je snad vcelku zřejmé, že jedna strana musí být schopna správně porozumět tomu, co jí pošle její partner na druhé straně.

Nyní to zřejmě nejpodstatnější: na úrovni každé vrstvy (s výjimkou té nejnižší, fyzické vrstvy) se data přenáší nikoli po jednotlivých bytech či dokonce bitech, ale rovnou po větších skupinách , kterým bychom asi mohli obecně říkat bloky. Konkrétní specifické pojmenování těchto bloků je pak závislé na tom, o kterou konkrétní vrstvu jde - alespoň v případě dvou dalších vrstev, které se nacházejí nad nejnižší fyzickou vrstvou. Bezprostředně vyšší vrstvou (nad vrstvou fyzickou, která přenáší jednotlivé bity a byty) je vrstva, označovaná jako linková (též: spojová vrstva, vrstva síťového rozhraní). Blokům dat, přenášeným na úrovni této vrstvy, se říká rámce (frames). Pokud bychom si to chtěli přiblížit na konkrétních příkladech, pak v dnešních lokálních sítích bývá linková vrstva nejčastěji „obydlena" technologií Ethernet a z ní vyplývajícími přenosovými protokoly. Takže zde je na místě mluvit o Ethernetových rámcích (rámcích Ethernetu, Ethernet frames). Podobně pro další technologie, zasahující do úrovně linkové vrstvy - například Arcnet, Token Ring, či FDDI. V případě technologií Frame Relay, ATM a obdobných technologií je situace maličko komplikovanější, a povíme si o ní někdy příště (zde se pojem „rámec" nepoužívá).

O patro výše, tedy na úrovni bezprostředně vyšší vrstvy (nad vrstvou linkovou), je situace opět o trochu jiná. Zde se nachází vrstva, které se říká síťová (někdy též: internetová vrstva). Blokům dat, přenášeným na úrovni této vrstvy, se již neříká rámce, ale pakety (packets). Přitom typickými „obyvateli" síťových vrstev dnes bývají protokoly IP (z rodiny TCP/IP) a IPX/SPX (z rodiny „Novellských" protokolů) - proto je správné mluvit o IP paketech, IPX paketech (resp. paketech IPX/SPX) apod. Kombinace typu „Ethernetové pakety" „IP rámce" a podobné pak patří do kategorie přeřeknutí, a jsou-li vážně míněny, pak bohužel svědčí o nepříliš velké erudici toho kdo je pronáší.

Pro správné pochopení rozdílu mezi pakety a rámci si ještě vypomůžeme oblíbenou analogií s obálkami, která snad nesmí chybět při žádném výkladu způsobu fungování vrstvových síťových modelů. Představa, že jednotlivé bloky dat se na úrovni každé konkrétní vrstvy skutečně přenášejí, je poněkud nepřesná - ke skutečnému (fyzickému) přenosu dochází až na úrovni nejnižší, fyzické vrstvy. Na úrovni všech ostatních vrstev to vypadá tak, že tato vrstva připraví svůj blok dat k odeslání (ať již jde o rámec, paket, či blok na úrovni jiné vyšší vrstvy), a pak jej předá své bezprostředně nižší vrstvě k doručení. Pokud tato bezprostředně nižší vrstva není ještě vrstvou fyzickou, která něco skutečně přenáší, postupuje analogicky - data, převzatá k doručení, „zabalí" tak, aby vznikl „její" typ bloku, a ten pak zase předá své bezprostředně nižší vrstvě k doručení. Ne nadarmo to celé připomíná postupné vkládání obálek do sebe - vyšší vrstva vezme to, co potřebuje odeslat, a vloží to do „své" obálky. Tu pak předá své bezprostředně nižší vrstvě, která převzatou obálku vloží do jiné větší obálky, a vše se opakuje. Z tohoto pohledu je pak rámec větší obálkou, a paket obálkou menší, která se pro potřeby přenosu vkládá do větší obálky. Už je vám jasné, proč se hovoří například o vkládání IP paketů do Ethernetových rámců?