9.3. Kabel a rámec#
Dvě nejnižší vrstvy zásobníku jsou na kameře nejsnáze přehlédnutelné, protože vše, co dělají, se odehrává uvnitř čipu a kamera je obstará bez jakéhokoli zásahu kódu v Pythonu. Přesto stojí za to si je krátce projít, protože vysvětlují, co znamená „místní síť“ a kde začíná hranice se zbytkem infrastruktury.
9.3.1. Fyzická vrstva#
Nejnižší vrstvou je samotné přenášení signálu – vodiče, optická vlákna nebo rádiové vlny, které přenášejí bity mezi dvěma zařízeními. Ethernet po kroucené dvojlince kóduje každý bit jako přechod napětí s pevnou rychlostí. Wi-Fi tytéž bity moduluje na rádiovou nosnou v pásmu 2,4 GHz nebo 5 GHz. Obojí mezi dvěma kusy hardwaru produkuje proud binárních číslic; obojí je druh detailu, který křemík kamery zvládne, aniž by o tom software musel přemýšlet.
Z pohledu skriptu v Pythonu je fyzická vrstva buď „spoj je aktivní“, nebo „spoj je neaktivní“. Modul network tento stav hlásí prostřednictvím své metody isconnected() na rozhraní Wi-Fi a prostřednictvím stavu spoje na drátovém ethernetovém rozhraní. Kromě toho je vše ostatní, co tato vrstva dělá, skryté.
9.3.2. Linková vrstva#
O úroveň výš leží linková vrstva – pravidla pro odesílání bloku bajtů (rámce) mezi dvěma zařízeními, která sdílejí tentýž fyzický segment. Linková vrstva přidává nad surové přenášení signálu dvě věci:
Hardwarová adresace. Každé síťové rozhraní má jedinečný 48bitový identifikátor zvaný MAC adresa (Media Access Control). U Ethernetu je vypálena přímo v čipu; u Wi-Fi je to tentýž druh identifikátoru vypálený v bezdrátovém modulu. MAC adresy jsou to, podle čeho se switch – krabice s několika ethernetovými porty, do nichž se připojují blízká zařízení – rozhoduje, kterým portem má daný rámec odejít. Wi-Fi přístupový bod hraje stejnou roli pro bezdrátová zařízení na svém kanálu.
Skládání do rámců (framing). Bajty, které předá vyšší vrstva, se zabalí do rámce s krátkou hlavičkou, užitečnými daty a kontrolním součtem na konci. Hlavička nese zdrojovou a cílovou MAC adresu; kontrolní součet umožňuje příjemci rozpoznat rámec, jehož bajty se při přenosu poškodily. Rámce, které kontrolou neprojdou, jsou tiše zahozeny – kdo dbá na spolehlivost, musí ji znovu zajistit na vyšší vrstvě.
Místní segment je libovolná skupina zařízení, která vidí navzájem své rámce přímo – drátové porty na jednom switchi, všechna zařízení připojená k jednomu Wi-Fi přístupovému bodu nebo malá síť vzájemně propojených switchů. Linková vrstva nedosáhne za tento segment. Jakmile cíl leží na jiném segmentu, musí být zpráva předána vrstvě výše.
9.3.3. Co kamera zpřístupňuje#
Kamera má MAC adresu pro každé síťové rozhraní, které má – jednu pro Wi-Fi, pokud má kamera bezdrátovou podporu, a jednu pro Ethernet, pokud má deska odpovídající port. Modul network k ní poskytuje přístup přes network_interface.config("mac") na tom rozhraní, které aplikace používá, když potřebuje adresu přečíst. Některé aplikace to potřebují, například k registraci zařízení v systému pro správu flotily zařízení. Jinak je to jediný ovládací prvek, který linková vrstva předává Pythonu.
Vše ostatní – skládání do rámců, vlastní MAC provoz na drátu nebo ve vzduchu, vyjednávání mezi kamerou a přístupovým bodem o tom, který kanál a rychlost použít – se odehrává zcela uvnitř bezdrátového nebo ethernetového hardwaru. Další stránka pokrývá jediné místo, kde skript v Pythonu do linkové vrstvy zasahuje: říká kameře, k jaké síti se má připojit.