9.3. Kaapeli ja kehys¶
Pinon kaksi alinta kerrosta on kameran kohdalla helpointa pitää itsestäänselvyytenä, koska kaikki niiden toiminta tapahtuu piirin sisällä ja kamera hoitaa ne ilman mitään Python-koodia. Niihin kannattaa silti tutustua lyhyesti, sillä ne selittävät, mitä ”paikallisverkko” tarkoittaa ja missä raja muuhun infrastruktuuriin alkaa.
9.3.1. Fyysinen kerros¶
Alin kerros on varsinainen signalointi – johdot, valokuidut tai radioaallot, jotka kuljettavat bittejä kahden laitteen välillä. Kierretyn parikaapelin Ethernet koodaa kunkin bitin jännitteen muutoksena kiinteällä nopeudella. Wi-Fi moduloi samat bitit radiokantoaaltoon 2,4 GHz:n tai 5 GHz:n kaistalla. Molemmat tuottavat binäärinumerovirran kahden laitteistopalan välille; molemmat ovat sellaisia yksityiskohtia, jotka kameran piiri hoitaa ilman että ohjelmiston tarvitsee ajatella niitä.
Python-skriptin näkökulmasta fyysinen kerros on joko ”yhteys on pystyssä” tai ”yhteys on poikki”. network-moduuli raportoi tämän tilan Wi-Fi-rajapinnalla isconnected()-metodinsa kautta ja langallisella Ethernet-rajapinnalla yhteyden tilan kautta. Sen lisäksi kaikki muu tämän kerroksen toiminta on piilossa.
9.3.2. Linkkikerros¶
Yksi askel ylempänä on linkkikerros – säännöt sille, miten lähetetään tavuryhmä (kehys) kahden saman fyysisen segmentin jakavan laitteen välillä. Linkkikerros lisää raa’an signaloinnin päälle kaksi asiaa:
Laitteisto-osoitteet. Jokaisella verkkorajapinnalla on yksilöllinen 48-bittinen tunniste, jota kutsutaan MAC-osoitteeksi (Media Access Control). Ethernetissä se on poltettu piiriin; Wi-Fissä se on samanlainen tunniste poltettuna langattomaan moduuliin. MAC-osoitteita käyttää kytkin – laite, jossa on useita Ethernet-portteja, joihin lähellä olevat laitteet kytkeytyvät – päättääkseen, mistä portista tietty kehys lähetetään ulos. Wi-Fi-tukiasema hoitaa saman roolin kanavansa langattomille laitteille.
Kehystäminen. Ylemmältä kerrokselta tulevat tavut paketoidaan kehykseen, jossa on pieni otsake, hyötykuorma ja tarkistussumma lopussa. Otsake kantaa lähde- ja kohde-MAC-osoitteet; tarkistussumman avulla vastaanottaja havaitsee kehyksen, jonka tavut vioittuivat siirron aikana. Tarkistuksen hylkäävät kehykset hylätään hiljaisesti – kenen tahansa, joka välittää luotettavuudesta, on rakennettava se uudelleen ylemmällä kerroksella.
Paikallinen segmentti on mikä tahansa laiteryhmä, joka näkee toistensa kehykset suoraan – yhden kytkimen langalliset portit, kaikki yhteen Wi-Fi-tukiasemaan liittyneet laitteet tai pieni verkko toisiinsa kytkettyjä kytkimiä. Linkkikerros ei ulotu tuon segmentin ulkopuolelle. Heti kun kohde sijaitsee eri segmentissä, viesti on luovutettava ylemmälle kerrokselle.
9.3.3. Mitä kamera tarjoaa¶
Kameralla on MAC-osoite jokaiselle verkkorajapinnalleen – Wi-Fi-osoite, jos kamerassa on langaton tuki, ja Ethernet-osoite, jos levyllä on vastaava portti. network-moduuli antaa siihen pääsyn network_interface.config("mac")-kutsulla sillä rajapintaoliolla, jota sovellus käyttää, kun sen tarvitsee lukea osoite. Joidenkin sovellusten on niin tehtävä, esimerkiksi rekisteröidäkseen laitteen laitekannan hallintajärjestelmään. Muussa tapauksessa tämä on ainoa säädin, jonka linkkikerros luovuttaa Pythonille.
Kaikki muu – kehystäminen, varsinainen MAC-liikenne johdolla tai ilmassa, kameran ja tukiaseman välinen neuvottelu käytettävästä kanavasta ja nopeudesta – tapahtuu kokonaan langattoman tai Ethernet-laitteiston sisällä. Seuraava sivu käsittelee sitä yhtä paikkaa, jossa Python-skriptillä on sananvaltaa linkkikerroksessa: kameran kertominen, mihin verkkoon liitytään.