9.6. Pakety a směrování

IP adresa říká, komu je zpráva určena. Mechanismus, který ji skutečně doručí, se nazývá směrování, a je to proces skok za skokem, kterým paket cestuje z místní sítě odesílatele do místní sítě příjemce, případně velmi vzdálené.

9.6.1. Paket, ve zkratce

Paket je pracovní jednotkou IP vrstvy – kus bajtů s malou hlavičkou a užitečným obsahem. Hlavička má dvě pole, na kterých pro směrování záleží:

  • Zdrojovou IP adresu (odkud paket přišel).

  • Cílovou IP adresu (kam směřuje).

Užitečným obsahem je cokoli, co transportní vrstva požádala síťovou vrstvu, aby doručila. Hlavička paketu obsahuje také čítač time-to-live, kontrolní součet hlavičky a několik řídicích příznaků. Žádné z nich není věc, které by se Python kód kamery dotýkal přímo.

Pakety neslibují nic víc než „pokusili jsme se“ – mohou být ztraceny, zdvojeny nebo doručeny mimo pořadí. Spolehlivost a uspořádání jsou problémy, které řeší transportní vrstva nad nimi; síťová vrstva se jen ze všech sil snaží přeposlat každý paket směrem k jeho cíli.

9.6.2. Skok za skokem

Paket opustí kameru a dorazí k prvnímu zařízení, které neleží na místním segmentu kamery: k výchozí bráně. (Předchozí stránka zmínila, že DHCP předá kameře adresu brány při navazování sítě.) Tímto zařízením je směrovač – krabička, jejímž úkolem je přijímat pakety, dívat se na jejich cíl a přeposílat je dál.

Schéma zobrazující pět krabiček. Vlevo kamera označená "10.0.0.42". Připojená ke směrovači označenému "10.0.0.1 / 203.0.113.5". Poté následuje řada dvou nepojmenovaných směrovačů uprostřed. Pak směrovač označený "198.51.100.1 / 198.51.100.x". Nakonec server označený "198.51.100.20". Šipka s popiskem "cíl: 198.51.100.20" putuje podél řetězce zleva doprava.

Paket z kamery do cíle přeskakuje mezi směrovači, každý o krok blíž.

Směrovač má směrovací tabulku – seznam „pro cíle odpovídající tomuto vzoru pošli paket ven tímto rozhraním“. Pro cíle ve stejné síti jako kamera záznam říká „pošli jej zpět dolů kabelem, kterým přišel“. Pro cíle v širším internetu záznam říká „pošli jej nadřazenému směrovači“. Pro známé vzory cílů (firemní VPN, síť konkrétního obchodního partnera, satelitní spoj) může mít směrovač konkrétnější záznam, který přepíše výchozí.

Nadřazený směrovač dělá totéž. A další. A další. A další. Každý skok má stejný tvar: přijmout paket, vyhledat cíl v tabulce, poslat jej ven správným rozhraním. Nakonec paket dorazí ke směrovači, který je na stejném místním segmentu jako cílová IP. Tento směrovač doručí poslední skok, cíl paket přijme a cesta je u konce.

9.6.3. Koncové body neznají trasu

Kamera odesílající paket vzdálenému serveru neví, jak se paket dostane na místo určení. Zná pouze cílovou IP a adresu vlastní výchozí brány. Vše mezi tím – které směrovače, která vlákna, které podmořské kabely – rozhodují směrovače podél cesty za běhu na základě vlastních tabulek. Samotné směrovače znají jen své bezprostřední sousedy a hrubý směr běžných cílů; žádné jediné zařízení na internetu nemá jeho úplnou mapu.

Tato decentralizace je důvodem, proč síť dál funguje, když jednotlivé cesty selžou. Přerušený kabel někde uprostřed se stane událostí přesměrování na několika směrovačích; koncové body si toho nikdy nevšimnou. Je to také důvod, proč paket z tokijské kamery na dublinský server může uspět, aniž by kterákoli strana věděla, jaké země leží mezi nimi.

9.6.4. Co to znamená pro Python skript

Úkol kamery na síťové vrstvě se scvrkává na:

  • Mít IP adresu.

  • Znát adresu výchozí brány (DHCP ji vyplní automaticky).

  • Předávat odchozí pakety adresované na libovolnou IP této bráně a důvěřovat zbytku cesty.

Skript nikdy nevolí trasu, nikdy nepojmenovává mezilehlý skok a nikdy nevidí směrovače uprostřed. Zapíše cílovou IP na paket a síťová vrstva to převezme. Z pohledu Python skriptu je celé směrování jen vlastností sítě, ke které se kamera připojila – „brána posílá pakety někam, kde mi to bude užitečné“.

Transportní vrstva, která přichází dále, předpokládá, že směrování prostě funguje, a nad tím buduje spolehlivost, uspořádání a adresování mezi programy.