TakéDatagram, Síťový paket, IP paketZákladní

Definice

Paket je základní jednotka dat přenášená počítačovou sítí, složená z hlavičky s adresami a řídicími údaji a z užitečného obsahu. Odesílatel rozdělí zprávu na pakety, síť je doručuje nezávisle na sobě různými cestami a příjemce z nich původní data znovu poskládá do správného pořadí.

Kategorie: Sítě a protokolyAktualizováno

Nezaměňujte: V sítích jde o jednotku přenášených dat, v distribucích Linuxu naopak „balíček“ (package) znamená instalovatelný software.

Proč se data posílají po kouscích

Kdyby síť přenášela každý soubor jako jeden nedělitelný blok, jediné velké stahování by obsadilo linku na celé minuty a všechno ostatní by muselo čekat. Rozdělení na pakety umožňuje, aby se přenosy prokládaly: mezi dva kusy videa se vejde požadavek na webovou stránku. Zároveň se při poškození přenosu opakuje jen ztracený paket, ne celý soubor.

Z čeho se paket skládá

Paket má hlavičku a payload (užitečná data). Hlavička IPv4 nese zdrojovou a cílovou IP adresu, délku, protokol vyšší vrstvy, kontrolní součet a pole TTL, které se na každém směrovači sníží o jedničku; při nule se paket zahodí, což zabraňuje věčnému kroužení. Payload obvykle obsahuje celý TCP nebo UDP segment včetně jeho vlastní hlavičky s čísly portů.

Zapouzdření mezi vrstvami

Zapouzdření znamená, že každá vrstva přidá vlastní hlavičku okolo dat od vrstvy vyšší. Aplikační data zabalí TCP, výsledek zabalí IP do paketu a ten se vloží do ethernetového rámce. Přijímací strana obálky odloupává v opačném pořadí. Proto se stejnému kusu dat říká na různých vrstvách jinak: segment, paket, rámec.

MTU a fragmentace

MTU je největší velikost paketu, kterou daná linka unese; u Ethernetu bývá 1500 bajtů. Delší paket se musí rozdělit na fragmenty, které cíl znovu skládá. Fragmentace zvyšuje režii a ztráta jediného fragmentu znehodnotí celý původní paket, proto ji IPv6 na cestě nedovoluje a spoléhá na to, že odesílatel velikost sám zjistí.

Co síť nezaručuje

Paketová síť pracuje v režimu best effort. Paket může dorazit se zpožděním, v jiném pořadí, dvakrát, nebo vůbec. Spolehlivost je až úkolem TCP, které pomocí pořadových čísel, potvrzení a opakovaného vysílání složí souvislý proud dat. UDP tyhle záruky nemá, a právě proto se hodí pro hovory a hry, kde je pozdní data lepší zahodit než čekat.

Kdo paketům rozumí

Směrovač se dívá na cílovou adresu v hlavičce a podle směrovací tabulky vybere další skok. Firewall a NAT čtou i porty. Hlubší analýza obsahu je omezená tím, že payload bývá zašifrovaný pomocí TLS, takže i při odposlechu je vidět hlavně to, kdo s kým a kolik dat si vyměnil. Podrobnosti o krytí obsahu popisuje heslo Šifrování.

Kde se paket potkává s omezováním rychlosti

Fronty ve směrovačích mají konečnou kapacitu. Když příchod paketů překročí odchozí propustnost, fronta se naplní a další pakety se zahazují, což TCP interpretuje jako signál k zpomalení. Algoritmy tvarování provozu, například token bucket, rozhodují, který paket odejde hned, který počká a který padne.

Příklady z praxe

  1. Načtení stránky se rozpadne na stovky paketů

    Stránka o velikosti 400 kB se při typickém MTU 1500 bajtů rozdělí přibližně na tři stovky paketů. Prohlížeč je dostane v pořadí, jaké určí síť, a TCP je podle pořadových čísel poskládá zpět. Pokud se jeden paket cestou ztratí, přenos se nezopakuje celý: server pošle znovu jen ten chybějící kus.

  2. Sledování cesty paketu příkazem traceroute

    Traceroute posílá pakety s postupně rostoucím TTL. Paket s TTL 1 zahodí hned první směrovač a ohlásí to zprávou ICMP, takže se odhalí jeho adresa; TTL 2 odhalí druhý skok a tak dále. Výsledkem je seznam zařízení, kterými pakety k cíli procházejí, včetně doby odezvy.

    $ traceroute -n 1.1.1.1
     1  192.168.1.1     1.2 ms
     2  10.0.0.1        8.4 ms
     3  195.146.x.x    12.7 ms

Časté omyly

MýtusVšechny pakety jedné zprávy jdou stejnou cestou.
Ve skutečnostiSměrovač rozhoduje o každém paketu zvlášť podle aktuální směrovací tabulky. Při změně topologie nebo rozkládání zátěže mohou pakety téže relace projít různými trasami a dorazit v jiném pořadí, než byly odeslány.
MýtusPaket a rámec jsou totéž.
Ve skutečnostiPaket je jednotka síťové vrstvy s IP adresami, rámec je jednotka linkové vrstvy s MAC adresami. Jeden paket se cestou vloží do mnoha různých rámců, protože každý úsek trasy má vlastní linkovou technologii.
MýtusZtráta paketu znamená chybu v síti, kterou je třeba opravit.
Ve skutečnostiZahazování paketů je běžný a záměrný mechanismus. Přeplněná fronta ve směrovači paket zahodí, čímž TCP dá najevo, že má snížit rychlost odesílání. Bez ztrát by se přetížené linky neregulovaly.

Časté dotazy

Jak velký může být paket?
Velikost paketu je shora omezena hodnotou MTU dané linky, která u Ethernetu obvykle činí 1500 bajtů včetně hlaviček. Hlavička IPv4 zabírá typicky 20 bajtů, hlavička TCP dalších 20, takže na užitečná data zbývá zhruba 1460 bajtů. Teoretické maximum IPv4 paketu je 65535 bajtů, v praxi se ale takové pakety neposílají, protože by se musely fragmentovat. Některé datacentrové sítě používají jumbo rámce až 9000 bajtů, což snižuje režii při velkých přenosech.
Co se stane s paketem, který se ztratí?
Ztracený paket síťová vrstva nijak neřeší, protože IP nezaručuje doručení. Pokud data nese TCP, odesílatel nedostane potvrzení, po vypršení časovače nebo po přijetí duplicitních potvrzení paket odešle znovu a zároveň zpomalí tempo vysílání. U UDP se nestane nic: ztracená data jsou pryč, pokud si opakování neřeší sama aplikace. Právě proto hlasové hovory při ztrátě jen krátce zaskřípou, místo aby se zastavily a čekaly.
Lze z paketu vyčíst, co uživatel dělá?
Z paketu jsou vždy čitelné adresy odesílatele a příjemce, čísla portů a velikost, protože podle nich síť směruje. Obsah je u dnešního provozu zpravidla chráněný TLS, takže konkrétní stránky nebo zprávy vidět nejsou. Metadata ale prozrazují dost: s kým zařízení komunikuje, kdy a kolik dat přenáší. Analýza časování a objemů dokáže odhadnout typ provozu i bez rozšifrování obsahu.
Proč se pojmu paket říká někdy datagram?
Datagram označuje paket posílaný bez navázaného spojení a bez záruky doručení, tedy přesně způsob, jakým funguje IP a UDP. Slovo paket je obecnější a používá se pro jakoukoli ohraničenou jednotku dat na síťové vrstvě. V běžné praxi se oba výrazy zaměňují a rozdíl hraje roli hlavně ve standardizačních textech, kde se rozlišuje mezi datagramovou a spojovanou službou.

Zdroje

  1. Internet Protocol(otevře se v novém okně)RFC Editor, 1981
  2. Internet Protocol, Version 6 (IPv6) Specification(otevře se v novém okně)RFC Editor, 2017
  3. Transmission Control Protocol (TCP)(otevře se v novém okně)RFC Editor, 2022
  4. Network packet(otevře se v novém okně)Wikipedia

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.