9.1. Proč sítě

Hardwarové řízení dalo kameře způsoby, jak komunikovat s jedním konkrétním zařízením na jednom konkrétním vodiči. UART mezi kamerou a jednou doprovodnou deskou. I2C mezi kamerou a senzory visícími na stejné krátké sběrnici. CAN mezi malou sadou modulů sdílejících jednu robustní sběrnici. Každý případ má stejný tvar: dvě strany (nebo malá známá skupina), jedno sdílené médium, dohoda mezi nimi o tom, co bajty na tomto médiu znamenají.

9.1.1. Tento tvar přestává škálovat

Vzor bod-bod funguje, dokud jsou oba konce blízko sebe, oba konce jsou předem známé a skript si může vybrat, kterým vodičem komunikuje. Jakmile kterékoli z těchto omezení padne, kabeláž přestane stačit.

  • Mnoho protějšků. Síť padesáti kamer hlásících jednomu serveru nelze zapojit jedna ku jedné; na serveru není dost UARTů a vedení kabelů by bylo nemožné.

  • Protějšky, které nejsou na stejném vodiči. Kamera v továrně a řídicí panel v kanceláři na druhém konci města nemohou sdílet sériový kabel. Mezi nimi musí existovat nějaká cesta skrz jakoukoli infrastrukturu, která už mezi oběma budovami běží.

  • Protějšky, které nejsou předem známé. Kamera, která publikuje své výsledky do cloudu, si v zapojovacím schématu nevybírá, se kterým serverem komunikuje; adresa cloudu je něco, co skript za běhu vyhledá a kam směruje data.

  • Mnoho programů na jednom kabelu. Notebook dnes provozuje prohlížeč, chatovací aplikaci, videohovor a zálohu, vše komunikuje stejným síťovým rozhraním ve stejnou dobu. Vodič nemůže být „vlastněn“ jednou konverzací tak, jak je tomu u UARTu.

Každé z těchto selhání je jiný druh problému s adresováním. Vyřešit je všechny dohromady vyžaduje více než vodič a přenosovou rychlost (baud rate).

9.1.2. Co je síť

Síť je infrastruktura, která umožňuje kterémukoli z velkého počtu počítačů vyměňovat si zprávy s kterýmkoli jiným, aniž by každý pár potřeboval vlastní vyhrazené spojení. Tři vlastnosti dělají ze sítě něco víc než jen velký sériový kabel:

  • Sdílené médium. K témuž kabelu, přepínači nebo rádiovému kanálu je připojeno mnoho zařízení. Střídají se nebo multiplexují tak, aby se na stejné fyzické spojení vešlo více než jedna konverzace.

  • Logické adresy. Každé zařízení má číslo, které jej identifikuje nezávisle na tom, do kterého kabelu je zapojeno. Odeslání zprávy znamená napsat na ni toto číslo, nikoli připojit konkrétní vodič.

  • Směrování. Když odesílatel a příjemce nejsou na stejném lokálním segmentu, infrastruktura mezi nimi přenáší zprávu skok po skoku. Koncové body neznají trasu; znají jen vzájemné adresy.

Notebook na kancelářské Wi-Fi, který se dostává na server ve vzdáleném datovém centru, používá všechny tři. Spojení Wi-Fi je sdílené rádiové médium; notebook i server mají každý svou vlastní logickou adresu; zpráva se prokličkuje jakoukoli infrastrukturou, která se mezi nimi nachází, přeposílaná po jednom skoku. Uživatel klikne na odkaz, notebook odešle paket a o zbytek se postará síť.

9.1.3. Co kamera?

Kamera hraje v síti přesně stejnou roli jako notebook. Při připojení k síti získá logickou adresu, adresuje odchozí zprávy na logické adresy jiných zařízení a nechá infrastrukturu je směrovat.

Co se oproti kapitolám o hardwarovém řízení mění, je rozhraní. Místo otevření instance UART a zápisu bajtů do ní skript otevře socket a zapisuje bajty do něj. Socket je koncový bod do sítě, stejně jako instance UART je koncovým bodem do vodiče. Části mezi socketem a vodičem – rámce, pakety, směrovací tabulky, přepínače, rádia – všechny leží pod ním a jsou pro kód v jazyce Python z velké části neviditelné.

Následující stránky vysvětlují tyto části vrstvu po vrstvě, aby abstrakce „otevři socket a pošli bajty“ působila nevyhnutelně, nikoli jako kouzlo.