9.1. Zašto mreže

Hardverska kontrola dala je kameri načine za razgovor s jednim određenim drugim uređajem na jednoj određenoj drugoj žici. UART između kamere i jedne pridružene pločice. I2C između kamere i senzora koji vise na istoj kratkoj sabirnici. CAN između manjeg skupa modula koji dijele jednu robusnu sabirnicu. Svaki slučaj prati isti obrazac: dvije strane (ili manja poznata skupina), jedan zajednički medij, dogovor među njima o tome što bajtovi na tom mediju znače.

9.1.1. Taj obrazac prestaje skalirati

Obrazac od točke do točke radi sve dok su oba kraja blizu, oba kraja poznata unaprijed i dok skripta bira kojom žicom razgovara. Čim se bilo koje od tih ograničenja prekrši, ožičenje prestaje biti dovoljno.

  • Mnogo sugovornika. Mreža od pedeset kamera koje izvještavaju jedan poslužitelj ne može biti ožičena jedan-na-jedan; nema dovoljno UART-ova na poslužitelju, a duljine kabela bile bi nemoguće.

  • Sugovornici koji nisu na istoj žici. Kamera u tvornici i nadzorna ploča u uredu na drugom kraju grada ne mogu dijeliti serijski kabel. Neki put mora postojati između njih kroz bilo koju infrastrukturu koja već postoji između dviju zgrada.

  • Sugovornici koji nisu poznati unaprijed. Kamera koja objavljuje svoje rezultate u oblak ne bira u shemi ožičenja s kojim poslužiteljem razgovara; adresu oblaka skripta pronalazi tijekom izvođenja i prema njoj usmjerava podatke.

  • Mnogo programa na jednom kabelu. Prijenosno računalo danas pokreće preglednik, aplikaciju za razgovor, videopoziv i sigurnosnu kopiju, sve istovremeno komunicirajući kroz isto mrežno sučelje. Žicu ne može „posjedovati” jedan razgovor onako kako je to slučaj s UART-om.

Svaki od tih neuspjeha drugačija je vrsta problema adresiranja. Rješavanje svih njih zajedno zahtijeva više od žice i brzine prijenosa.

9.1.2. Što je mreža

Mreža je infrastruktura koja omogućuje bilo kojem od velikog broja računala razmjenu poruka s bilo kojim drugim, bez potrebe da svaki par ima vlastitu namjensku vezu. Tri svojstva čine mrežu nečim više od velikog serijskog kabela:

  • Zajednički medij. Mnogo uređaja priključuje se na isti kabel, preklopnik ili radiokanal. Izmjenjuju se ili multipleksiraju tako da se više od jednog razgovora može smjestiti na istu fizičku vezu.

  • Logičke adrese. Svaki uređaj ima broj koji ga identificira neovisno o tome u koji je kabel uključen. Slanje poruke znači zapisivanje tog broja na poruku, a ne spajanje određene žice.

  • Usmjeravanje. Kada pošiljatelj i primatelj nisu na istom lokalnom segmentu, infrastruktura između njih prenosi poruku skok po skok. Krajnje točke ne poznaju rutu; znaju samo adrese jedna druge.

Prijenosno računalo na uredskom Wi-Fiju koje dosegne poslužitelj u udaljenom podatkovnom centru koristi sva tri. Wi-Fi veza je zajednički radiomedij; prijenosno računalo i poslužitelj svaki imaju svoju logičku adresu; poruka se provlači kroz bilo koju infrastrukturu između njih dvoje, prosljeđivana jedan skok po jedan. Korisnik klikne poveznicu, prijenosno računalo pošalje paket, a mreža obavi ostalo.

9.1.3. A što s kamerom?

Kamera igra potpuno istu ulogu na mreži kao prijenosno računalo. Preuzima logičku adresu kada se pridruži mreži, adresira odlazne poruke na logičke adrese drugih uređaja i prepušta infrastrukturi da ih usmjeri.

Ono što se mijenja u odnosu na poglavlja o hardverskoj kontroli jest sučelje. Umjesto otvaranja UART instance i pisanja bajtova u nju, skripta otvara socket i piše bajtove u njega. Socket je krajnja točka u mrežu, na isti način na koji je UART instanca krajnja točka u žicu. Dijelovi između socketa i žice – sličice, paketi, tablice usmjeravanja, preklopnici, radioveze – svi leže ispod i uglavnom su nevidljivi Python kodu.

Stranice koje slijede iznose te dijelove, sloj po sloj, tako da apstrakcija „otvori socket i pošalji bajtove” djeluje neizbježno umjesto kao čarolija.