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.