9.5. IP-osoitteet

Laitteisto-osoite erottaa laitteen muista samassa paikallisessa kaapelissa tai radiosolussa olevista laitteista. Siihen tehtävään se sopii hyvin, mutta paikallisen segmentin ulkopuolella se on hyödytön: viereisen rakennuksen kytkin ei voi reitittää sen perusteella, koska taustalla oleva mekanismi, jolla kytkin oppii MAC-osoitteet, toimii vain yhden segmentin sisällä.

Verkkokerros ratkaisee tämän toisenlaisella osoitteella, joka on riippumaton siitä, mihin kaapeliin laite on kytketty. Tämän osoitetyypin nimi on Internet Protocol -osoite eli IP-osoite, ja ”Internet Protocol” -puolisko nimeää säännöstön, jota jokainen internetin isäntä noudattaa lähettäessään tai välittäessään osoitetta. Nykyinen internet käyttää osoitusmallin kahta versiota rinnakkain – IPv4 (vanhempi muoto, edelleen vallitseva pienissä verkoissa) ja IPv6 (uudempi muoto, joka hitaasti korvaa sen).

9.5.1. Mikä IP-osoite on

IP-osoite on luku, joka on riittävän suuri yksilöimään minkä tahansa laitteen internetissä yksiselitteisesti. Se kirjoitetaan ihmisluettavaan muotoon, jota tämän osion loppuosa käyttää, mutta pakettiotsikossa se on vain kiinteäkokoinen kokonaisluku.

  • IPv4 -osoitteet ovat 32 bittiä pitkiä ja kirjoitetaan neljänä pisteillä erotettuna desimaalilukuna, joista kukin on yksi tavu:

    192.168.1.42
    8.8.8.8
    10.0.0.1
    

    Kolmekymmentäkaksi bittiä antaa noin neljä miljardia mahdollista osoitetta, mikä kuulosti runsaalta IPv4:ää suunniteltaessa 1970-luvulla, mutta ei riittänyt enää 2010-luvun alkupuolella.

  • IPv6 -osoitteet ovat 128 bittiä pitkiä ja kirjoitetaan kahdeksana neljän heksadesimaalinumeron ryhmänä, jotka on erotettu kaksoispisteillä:

    2001:0db8:85a3:0000:0000:8a2e:0370:7334
    

    Peräkkäiset nollat voidaan lyhentää muotoon ::, ja ryhmän alkunollat voidaan jättää pois, joten yllä oleva osoite kirjoitetaan tavallisesti 2001:db8:85a3::8a2e:370:7334.

Muuten nämä kaksi osoiteperhettä ovat eri kieliä; IPv4-isäntä ei voi suoraan lähettää pakettia IPv6-isännälle ilman yhdyskäytävän apua. Kameran moduulit network ja socket tukevat molempia. Tämä opastus käyttää esimerkeissä IPv4:ää, koska useimmat paikallisverkot, joihin kamera liittyy, ovat edelleen pelkkää IPv4:ää, mutta kaikki seuraava toimii täsmälleen samalla tavalla myös IPv6:lle, kun osoitteet vaihdetaan.

9.5.2. Mihin IP-osoite on tarkoitettu

IP-osoite kertoo, mille internetin isännälle paketti on tarkoitettu. Reititin, joka ei tiedä, miten määränpää tavoitetaan suoraan, tietää, että jokin toinen reititin todennäköisesti tietää, ja välittää paketin sinne. Paketti hyppii reitittimeltä toiselle, kukin hieman lähempänä määränpäätä, kunnes reititin, joka on määränpään paikallisessa segmentissä, toimittaa viimeisen hypyn.

Tuo hyppy hypyltä -toiminta on se, mikä saa internetin toimimaan yhtenä suurena verkkona monen pienen saaren sijaan. Seuraava sivu käsittelee, miten hypyt valitaan; tämä sivu käsittelee vain osoitetta.

9.5.3. Miten kamera saa osoitteen

Kameran, joka on juuri liittynyt Wi-Fi-verkkoon, täytyy saada IP-osoite ennen kuin se voi puhua minkään kanssa. Tähän on kaksi yleistä tapaa.

Ensimmäinen on automaattinen osoitteenanto. Kamera pyytää osoitetta paikallisverkolta; osoitteen jakava laite on reititin – laite, joka yhdistää paikallisverkon laajempaan internetiin. Useimmissa koti- ja pienitoimistokokoonpanoissa sama fyysinen laite toimii myös kytkimenä, johon langalliset laitteet kytkeytyvät, ja Wi-Fi-tukiasemana, johon langattomat laitteet liittyvät, joten ”reititin”, ”kytkin” ja ”tukiasema” voivat kaikki olla samaa laitteistoa. Reititin ajaa pientä palvelua nimeltä DHCP (Dynamic Host Configuration Protocol), joka ylläpitää käytettävissä olevien osoitteiden poolia, valitsee yhden kullekin uudelle laitteelle ja vuokraa sen kiinteäksi ajaksi. Samalla reititin antaa kameralle myös pari muuta hyödyllistä asetustietoa:

  • osoitteen, johon lähtevä liikenne lähetetään, kun määränpää on paikallisverkon ulkopuolella (oletusyhdyskäytävä, joka on reitittimen oma osoite); ja

  • yhden tai useamman nimipalvelimen osoitteet, jotka muuntavat ihmisluettavat nimet, kuten example.com, IP-osoitteiksi. Tätä nimihakupalvelua kutsutaan nimellä DNS, Domain Name System, ja Nimet ja DNS käsittelee sitä yksityiskohtaisesti.

Kaikki tämä tapahtuu automaattisesti yhteyden tullessa pystyyn. Kameran ei tarvitse pyytää mitään tästä erikseen; sillä hetkellä, kun isconnected() palauttaa True edellisen sivun esimerkissä, kameralla on jo osoitteensa, yhdyskäytävänsä ja nimipalvelimensa.

Toinen vaihtoehto on staattinen määritys. Jotkin käyttöönotot haluavat kameralle tunnetun osoitteen, jotta muut laitteet voivat tavoittaa sen ilman, että ne ensin selvittävät sen. ipconfig() -metodi asettaa osoitteen, yhdyskäytävän ja nimipalvelimen käsin:

wlan.ipconfig(addr4=("192.168.1.50/24", "192.168.1.1"))
wlan.ipconfig(dns="192.168.1.1")

Staattinen määritys on hauras (kaksi laitetta, joille annetaan vahingossa sama osoite, joutuvat ristiriitaan). Turvaudu DHCP-oletukseen, ellei ilmaannu erityistä syytä ohittaa sitä.

Kun kameralla on IP-osoite, se on liittynyt internetiin (tai ainakin sen paikallisverkon osaan). Muut laitteet voivat nyt osoittaa paketteja sille tuon osoitteen perusteella, ja se voi osoittaa paketteja niille.

9.5.4. Verkkopeite ja /24

Yllä olevan staattisen esimerkin osoitteen lopussa oleva /24 on verkkopeite. IP-osoite ei itsessään kerro, mihin paikallisverkko päättyy – 192.168.1.50 voisi olla yksi muutamasta sadasta osoitteesta pienessä kotiverkossa tai yksi tuhansista suuremmassa. Verkkopeite kertoo, kuinka suuri osa osoitteesta nimeää verkon ja kuinka suuri osa nimeää sen sisällä olevan isännän.

/24 tarkoittaa ”32 bitistä ensimmäiset 24 nimeävät verkon; viimeiset 8 nimeävät isännän”. Osoitteen 192.168.1.50/24 kohdalla tämä jakaa osoitteen osiin 192.168.1 verkolle ja .50 isännälle, jolloin samaan paikallisverkkoon jää tilaa noin 254 laitteelle. /16 jättäisi enemmän bittejä isäntäpuolelle ja sovittaisi yhteen verkkoon paljon enemmän laitteita; /30 jättäisi vain kaksi isäntäosoitetta ja sopisi kahden pisteen väliselle yhteydelle.

Verkkopeite kirjoitetaan myös yleisesti neljän tavun lukuna samalla pistemerkinnällä kuin osoite. /24 vastaa arvoa 255.255.255.0 – lue kukin tavu ”kaikkina verkkopuoliskolle kuuluvina bitteinä”. Nämä kaksi muotoa ovat keskenään vaihdettavissa; seuraavan alaosion ipconfig() -lukija sattuu palauttamaan neljän tavun muodon.

Miksi jako ylipäätään on tärkeä – miten laite käyttää verkkopeitettä päättääkseen, onko määränpää paikallisverkossa vai pitääkö sen kulkea ulos yhdyskäytävän kautta, ja miksi useimmat kotiverkot päätyvät /24 -peitteeseen – käsitellään sivulla Yksityiset verkot ja NAT.

9.5.5. Osoitteen lukeminen takaisin

Ilman argumentteja kutsuttu ipconfig() -metodi palauttaa aktiivisen määrityksen. addr4 -näkymä palauttaa IP-osoitteen ja verkkopeitteen:

>>> wlan.ipconfig("addr4")
('192.168.1.50', '255.255.255.0')