Portál AbcLinuxu, 26. dubna 2024 17:14


Síťové protokoly

Rodina protokolů TCP/IP, kterou dnes používáme k realizaci naprosté většiny síťové komunikace, byla navržena na přelomu 70. a 80. let s cílem vytvořit robustnější model síťové komunikace, který by byl schopen se do určité míry vypořádat i s výpadky částí sítě. Základní (a v té době celkem revoluční) myšlenkou je packet switching (přepínání paketů): data nejsou posílána jako souvislý proud (stream), ale po samostatných blocích (paketech), a jednotlivé uzly sítě samy rozhodují, kudy budou pakety dále posílat.

V praxi je tato myšlenka realizována sadou protokolů, implementujících potřebné funkce. Protokoly obvykle rozdělujeme do několika úrovní (vrstev). Místo abstraktního ISO/OSI modelu, který pracuje se sedmi vrstvami, při výkladu TCP/IP většinou používáme zjednodušený pětivrstvý model (některé protokoly v TCP/IP modelu zastávají funkci více vrstev ISO/OSI modelu).

Vrstvám odpovídají ve struktuře paketu hlavičky jednotlivých protokolů. Základem paketu je blok aplikačních dat (podle okolností může mít ale i nulovou délku), před který postupně jednotlivé protokoly přidávají (v pořadí vrstev shora dolů) hlavičky se svými informacemi. Tyto hlavičky jsou pak moduly příslušných protokolů v opačném pořadí odebírány na straně příjemce.

Aplikační vrstva

Nejvýše je aplikační vrstva, tak označujeme data aplikačních protokolů jednotlivých síťových služeb. Takových protokolů existuje obrovské množství, z nejznámějších uveďme např. HTTP, SMTP, FTP, NTP. Z pohledu TCP/IP se jedná o data, která je třeba přenést k cílovému příjemci. O to se starají nižší vrstvy.

Fyzická vrstva

Nejníže je v modelu vrstva fyzická. Na rozdíl od vyšších vrstev se nejedná o softwarovou vrstvu (protokol), tímto označením rozumíme konkrétní fyzické médium, které používáme k přenosu dat. Příkladem může být např. twisted pair (kroucená dvoulinka) kabeláž ve většině lokálních ethernetových sítí, koaxiální kabel, optické vlákno nebo telefonní linka. Médium ale nemusí být hmotné - např. v případě bezdrátových sítí v mikrovlnném pásmu (wi-fi, breezenet) nebo optických pojítek.

Linková vrstva

Nejníže ze softwarových vrstev je linková vrstva. Jedná se o nejnižší komunikační protokol, sloužící k přenášení dat po fyzickém médiu. Tento protokol je většinou úzce svázán s konkrétní volbou média, ale tato korespondence nemusí být 1:1, např. ethernet bývá v praxi implementován nejen na twisted-pair kabeláži, ale můžeme se setkat s jeho implementacemi pomocí koaxiálního kabelu nebo naopak optických vláken. Jiným příkladem protokolu linkové vrstvy je PPP, protokol používaný k realizaci vytáčeného připojení (dial-up) nebo propojení počítačů přes sériovou linku. Podstatnou vlastností protokolů linkové vrstvy je skutečnost, že řeší pouze komunikaci mezi uzly, které jsou přímo spojeny (odtud i název).

Síťová vrstva

Globální adresaci a směrování má na starosti vrstva síťová, v praxi realizovaná téměř výhradně protokolem IP (vyskytujícím se ve dvou verzích, IPv4 a IPv6). Zatímco i u protokolů linkové vrstvy existují adresy a např. v případě ethernetových MAC adres jsou (nebo by aspoň měly být) dokonce globálně jednoznačné, nelze je použít ke směrování paketů, protože z takových adres nelze poznat, kde cíl hledat. Adresy protokolu IP (IP adresy) jsou ale přidělovány hierarchicky tak, že delegace jednotlivých rozsahů odpovídá topologii sítě. Z cílové IP adresy lze proto určit, kudy máme paket dále poslat, tedy alespoň následujícího prostředníka (hop) po cestě. Kromě této své základní funkce řeší protokol IP ještě některé další, např. fragmentaci (rozdělení příliš dlouhých paketů na několik kratších) nebo označení paketů podle typu provozu (ToS - type of service).

Některé důležité problémy ale protokol IP záměrně neřeší. Například adresování v IP hlavičce je pouze na úroveň konkrétního uzlu sítě, ale neumožňuje adresovat konkrétní proces. Nelze tak (podle IP hlavičky) např. rozlišit paket určený webovému serveru od paketu pro SMTP klienta. Dalším problémem může být skutečnost, že jednotlivé IP pakety jsou posílány a zpracovávány zcela samostatně a nelze poznat, zda dva pakety patří do téhož datového toku. Protokol IP také neřeší otázku ztracených paketů (nelze detekovat, zda se některé pakety neztratily) ani pořadí paketů (pakety mohou do cíle dorazit v opačném pořadí, než v jakém byly odeslány). U některých typů komunikace nemusí být tato skutečnost na závadu, tam, kde ano, musíme tyto problémy řešit na úrovni vrstvy transportní a aplikační.

Transportní vrstva

Nejpoužívanějšími protokoly transportní vrstvy jsou dnes UDP a TCP. UDP (User Datagram Protocol) lze chápat jako minimalistický transportní protokol, zavádějící pouze pojem portu, který lze chápat jako adresu konkrétního procesu (přesněji socketu) v rámci cílového uzlu. UDP je ale stále bezstavový protokol (nelze tady mluvit v pravém slova smyslu o spojení), neřeší otázku ztracených paketů ani jejich pořadí. Přesto se často používá pro svou jednoduchost a nižší režii, a to zejména tam, kde tyto otázky řešit nepotřebujeme.

Opačný přístup je reprezentován protokolem TCP (Transmission Control Protocol). Ten naopak zavádí spojení mezi dvěma porty na koncových uzlech. Z pohledu klientské aplikace se takové spojení chová podobně jako roura pro komunikaci mezi dvěma procesy (ale na rozdíl od roury je TCP spojení obousměrné), je zaručeno, že posloupnost bytů (stream), kterou jedna strana odešle, dostane ve stejné podobě druhá strana. Protokol TCP se stará o detekci a opakované odeslání ztracených dat, stejně jako o přerovnání dat z paketů, které dojdou ve špatném pořadí. TCP tak poskytuje aplikační vrstvě poměrně vysokou míru komfortu, většina komunikace proto dnes používá jako transportní protokol TCP. Nevýhodou ale může být vyšší režie a relativně pomalá reakce na výpadky, proto se pro některé účely (např. většina DNS dotazů nebo VoIP) dává přednost UDP.

ICMP

Ze struktury vrstev se trochu vymyká protokol ICMP (Internet Control Message Protocol). Pakety (message) tohoto protokolu jsou přenášeny přímo prostřednictvím IP protokolu, ICMP ale nelze považovat za transportní protokol, protože neslouží k přenášení aplikačních dat. Tento protokol slouží k diagnostickým a servisním účelům. Příkladem aplikací ICMP jsou zprávy o nedoručitelnosti paketu (destination unreachable), pakety generované příkazem echo (ICMP echo a echo reply) nebo některé servisní typy zpráv (redirect).

Velikost paketů

Maximální (teoretická) velikost IP paketu je 65535 B, ale limitujícím faktorem je většinou linková vrstva. Protože většina paketů aspoň jednou projde přes ethernet (nebo jeho ekvivalent), bývá většinou velikost paketů volena podle jeho limitu (1536 B), odtud nejobvyklejší hodnota 1500 B. To je ale samozřejmě pouze maximální hodnota, pakety často bývají i výrazně kratší, zejména u interaktivních aplikací. Hlavičky IP a TCP mají velikost 20-60 B (obvyklejší jsou hodnoty u dolní hranice), UDP a ICMP hlavičky mají 8 B, ethernetová hlavička 14 B (navíc 2 B na konci paketu kontrolní součet).

« Předchozí | Nahoru | Obsah | Další »

Dokument vytvořil: vladka, 29.8.2005 12:12 | Poslední úprava: Michal Kubeček, 18.3.2009 00:04 | Další přispěvatelé: Nicky726, Michal Kubeček | Historie změn | Zobrazeno: 19232×

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.