Packetový přenos, routing

Stránky: CZ.NIC Moodle
Kurz: Síťování v Linuxu
Kniha: Packetový přenos, routing
Vytiskl(a): Nepřihlášený host
Datum: pátek, 29. března 2024, 00.18

Přenos dat

Packety

Když mluvíme o přenosu dat přes počítačovou síť, myslí se tím zpravidla úkol přenést pole bytů nebo lépe oktetů (osmic bitů) z jednoho počítače na počítač druhý. Vyplatí se udělat předpoklady o datech a o postupu komunikace, které umožní úkol trochu zjednodušit. V první řadě tedy dat je konečně mnoho, i když mnohdy předem nevíme, kolik jich přesně bude. Dále jsou data k dispozici v minimálních kvantech - bitech nebo raději oktetech či v definovaných počtech (řádově desítkách či stovkách) oktetů.

Historicky se počítačové sítě vyčlenily od telefonních a dálnopisných sítí svou schopností přenášet packety - relativně krátké objemy dat, která se přenášejí v souvislých úsecích. Každý packet nese v hlavičce adresu cíle pro své doručení. Tím se liší přepínání packetů od spojování okruhů v telefonní síti, kde se sestaví spojení, které pak slouží jako jednosměrný a nebo obousměrný komunikační kanál bez nutnosti stále adresovat v každém kvantu dat příjemce.

Sériové porty a modem

Počítačové sítě byly ve svých začátcích realizovány pomocí sériových linek mezi počítači, které mají charakter pevně spojeného okruhu. Přidáním modemů a telefonní sítě mezi sériové porty došlo k prodloužení dosahu počítačové sítě z řádově stovek metrů na stovky kilometrů a také přišlo rozšíření o možnost vytočit spojení a tedy sestavit okruh dynamicky.

Přenos přes sériový port - ať už s pomocí a nebo bez pomoci modemu - znamenal schopnost dvou počítačů přenést data z výstupního bufferu odesílatele do vstupního bufferu příjemce. Ještě před počítačovými sítěmi v dnešním smyslu sloužila tato abstrakce různým aplikacím založeným na sémantice přepínání okruhů, jako jsou textové terminály (VT100) nebo přenos souborů protokolem zmodem.

Dnes se sériový terminál stále používá pro připojení na konzole různých embedded zažízení a zmodem pro přenos obrazů na flashování firmwaru v embedded zařízeních. Software pro stranu klienta je například minicom (https://linux.die.net/man/1/minicom).

Odkazy:

Počítačové sítě

Packetově orientované sítě

Přepínání packetů umožňuje paralelně komunikovat jednou linkou i s více protistranami, umožňuje operativně přesměrovat tok dat v závislosti na výpadcích cest v síti a umožňuje emulovat různé komunikační abstrakce. Aniž bychom se zabývali detaily, hodí se zmínit alespoň dvě technologie, vydláždily cestu k dnešnímu Internetu a představovaly významný krok v chápání počítačové sítě.

WAN L2

První z nich je Frame Relay (https://cs.wikipedia.org/wiki/Frame_Relay). Frame Relay sice počítal s tím, že přes společnou packetovou síť budou konfigurované víceméně statické virtuální okruhy, ale nově umožnil multiplex okruhů přes fyzickou linku. Další iterací je PPP (https://cs.wikipedia.org/wiki/Point-to-Point_Protocol). PPP poskytuje podporu (nejen) pro protokoly z rodiny TCP/IP nad sériovými linkami různých druhů. PPP umožnil provoz protokolu IP, který je čistě packetově orientovaný, nad spojeným okruhem, který vycházel z abstrakce sériové linky. Zatímco Frame Relay v historii zapadl, potokol PPP se masivně používá jako adaptační vrstva pro protokol IP na všech DSL linkách a 2G až 4G mobilních sítích.

LAN L1+2

Pro drátové lokální sítě, které nejčastěji potkáváme v SOHO segmentu i v datacentrech je nejdůležitější sadou protokolů Ethernet (https://cs.wikipedia.org/wiki/Ethernet). Ethernet se vyvinul od poněkud neohrabaných začátků s koaxiálními fyzickými přenosovými médii a s dnes zcela zapomenutou vrstvou transceiverů (MAU) až k dnešním verzi Ethernetu, který používá strukturovanou kabeláž nebo optická vlákna a dosahuje rychlosti od 1Gbit/s až k 400 Gbit/s.

Ethernet představuje důležitý technologický skok tím, že se jedná o multi-access síť s možností broadcastu. Umožnil tedy komunikovat libovolné dvojici stanic na společném segmentu a také oslovit jedním rámcem (packetem v kontextu Ethenetu) všechny ostatní stanice v segmentu. S tím souvisí adresování v MAC (Media Access Control) a také zavedení řízení přístupu k přenosovému médiu na úrovni MAC.

Vrstevnatý model počítačové sítě

Zatím jsme popsali z čeho počítačové sítě vzešly a jaké byly hlavní milníky vývoje (pochopitelně zde velmi zanedbáváme obrovskou část historie, která se nakonec neprosadila do dnešních dnů, ale je i tak zajímavá, leč pro tento kurz nepodstatná).

Protokoly Ethernet a PPP jsou poměrně nízkoúrovňové. Až na naprosté výjimky se proto nepoužívají přímo pro komunikaci mezi aplikacemi. Místo toho je mezi uživatelskou aplikací a těmito protokoly první a druhé vrstvy ještě několik dalších vrstev. Každá vrstva implementuje konkrétní funkcionalitu, kterou poskytuje vrstvám nad sebou. V konečném důsledku pak dávají vrstvy síťového stacku aplikacím jednotný model sítě bez ohledu na technologii, jakou je která část sítě realizovaná a k tomu i jednotné API.

Teoreticky by měly packety/datagramy/rámce, zkrátka Protocol Data Units, proudit jen mezi sousedními vrstvami v síťovém modelu. Díky tomu by mělo být možné protokoly konkrétní vrstvy rozšířit nebo vyměnit, aniž by se to jakkoliv dotklo ostatních vrstev. Vskutku například L3 protokol IPv6 vznikl jako zamýšlená náhrada původního IPv4. Podobně na čtvrté vrstvě lze vedle sebe používat různé protokoly TCP, UDP a nebo třeba SCTP.

Představu vrstevnatého modelu ilustruje následující schéma, které ukazuje přenos dat, dejme tomu z HTTP klienta na server a odpovědi od serveru zpět klientovi přes jeden switch (zařízení operující na L2) a jeden router (L3 zaŕízení):

Přenos přes vrstevnatou síť

Terminologicky vyjdeme ze sedmi-vrstevnatého ISO/OSI modelu.

L1+2

Víme už, že první vrstva zahrnuje síťová média (kabely, eventuálně HW potřebný k bezdrátovému přenosu) a hardware pro připojení počítače do sítě (tedy síťová rozhraní). Druhá vrstva má za úkol odtransportovat datagramy z vyšších vrstev přes danou první vrstvu. První a druhá vrstva jsou spolu úzce spojeny podle média, které se k přenosu používá. Společně musí vyřešit kódování dat, detekci a opravy chyb při přenosu, řízení přístupu k médiu a v případě multi-access sítí, jako je třeba Ethernet, také adresování v rámci daného segmentu.

Odkazy:

L3

Třetí vrstva je reprezentovaná především protokoly IPv4 a IPv6. L3 přináší především globální adresování a routing. Tedy globální adresy, které lze (až na problém s malým adresním rozsahem IPv4) přidělit všem stanicím v celém Internetu a routing je metoda, jak potenciálně dopravit data z libovolné stanice v Internetu na jakoukoliv jinou libovolnou stanici (adresu) a to bez ohledu na délku cesty, počet přeskoků přes různá zařízení a různé přenosové technologie, které se cestou mohou použít.

Mimo to L3 přináší další důležité funkce - adaptaci MTU (Maximum Transfer Unit) - největší velikost packetu, kterou dovede doručit konkrétní L2 a která může být pro každou L2 technologii jiná. Nebo schopnost in-band signalizace o chybách, které se stanou kdekoliv cestou, pomocí protokolu ICMP, který je součástí rodiny protokolů IP a jeho implementace je povinná společně s IP.

Odkazy:

L4

Protokoly čtvrté vrstvy zajišťují multiplex (65535 TCP a UDP portů) a vedle toho ještě protokol TCP vytváří virtuální spojované okruhy a řídí rychlost odesílaní, aby využil dostupnou kapacitu optimálně. Protokol TCP je ve skutečnosti celkem složitý a stojí za to rozumět mu aspoň na úrovni toho, co se v jaké fázi spojení děje, a jak se to projevuje v hlavičkách TCP segmentů.

Odkazy:

L5-7

Vrstvy od L5 výše jsou zpravidla realizovány knihovnami v userspace. Některé aplikace (aplikace spadají do L7) používají přímo protokoly čtvrté vrstvy přes její API - BSD sockety. Obecně se zpravidla chápou problémy na L1-4 jako zodpovědnost síťařů a potíže a bugy na L5-7 spíše jako problém programátora aplikace nebo autora knihovny poskytující L5 či L6 funkce.

ISO/OSI model vs TCP/IP

Pro snadnou orientaci uvádíme tabulku vrstev v ISO/OSI modelu. Pro terminologickou přesnost ke každé vrstvě uvádíme i jméno PDU, které by se mělo používat pro data, která tato vrstva zpracovává či vytváří:

Vrstva Název PDU Příklad
L7 Aplikační data, dokument HTTP, SMTP, FTP
L6 Prezentační data SSL, XML
L5 Relační (session) data SSL, RPC
L4 Transportní segment, datagram TCP, UDP, SCTP
L3 Síťová datagram, packet IPv4, IPv6, IPX
L2 Linková frame Ethernet, PPP
L1 Fyzická symbol, bit Ethernet, WiFi

Smysl modelu je především terminologický, umožňuje tak mít společnou abstrakci pro chápání jednotlivých stavebních prvků sítí.

Alternativně k ISO/OSI modelu se používá TCP/IP model, který se skládá ze čtyř vrstev, které lze namapovat na ISO/OSI následovně:

ISO/OSI vrstva ISO/OSI název TCP/IP vrstva TCP/IP název
L7 Aplikační 4 Aplikační
L6 Prezentační ^ ^
L5 Relační (session) ^ ^
L4 Transportní 3 Transportní
L3 Síťová 2 Síťová
L2 Linková 1 Síťové rozhraní
L1 Fyzická ^ ^