9.5. IP adrese

Hardverska adresa izdvaja uređaj od ostalih na istom lokalnom kabelu ili radijskoj ćeliji. Za taj posao je u redu, ali je beskorisna izvan lokalnog segmenta: preklopnik u sljedećoj zgradi ne može usmjeravati prema njoj, jer osnovni mehanizam koji omogućuje preklopniku da nauči MAC adrese radi samo unutar jednog segmenta.

Mrežni sloj to rješava drugom vrstom adrese koja je neovisna o tome na koji je kabel uređaj priključen. Naziv za tu vrstu adrese je Internet Protocol adresa, ili IP adresa, a dio „Internet Protocol” imenuje skup pravila kojih se svako računalo na internetu pridržava kada je šalje ili prosljeđuje. Današnji internet usporedno koristi dvije verzije sheme adresiranja – IPv4 (stariji oblik, još uvijek dominantan na malim mrežama) i IPv6 (noviji oblik koji ga polako zamjenjuje).

9.5.1. Što je IP adresa

IP adresa je broj dovoljno velik da jedinstveno identificira bilo koji uređaj na internetu. Zapisuje se u ljudski čitljivom obliku koji ostatak ovog odjeljka koristi, ali je u zaglavlju paketa to samo cijeli broj fiksne veličine.

  • IPv4 adrese duge su 32 bita i zapisuju se kao četiri decimalna broja odvojena točkama, pri čemu je svaki broj jedan bajt:

    192.168.1.42
    8.8.8.8
    10.0.0.1
    

    Trideset i dva bita daju otprilike četiri milijarde mogućih adresa, što je zvučalo kao mnoštvo kada je IPv4 osmišljen 1970-ih, a nije bilo dovoljno do ranih 2010-ih.

  • IPv6 adrese duge su 128 bitova i zapisuju se kao osam skupina od četiri heksadecimalne znamenke odvojene dvotočkama:

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

    Nizovi nula mogu se skratiti na ::, a vodeće nule u skupini mogu se izostaviti, pa se gornja adresa obično zapisuje kao 2001:db8:85a3::8a2e:370:7334.

Dvije obitelji adresa inače su različiti jezici; IPv4 računalo ne može izravno poslati paket IPv6 računalu bez pomoći pristupnika. Moduli network i socket kamere podržavaju oba. Ovaj vodič u primjerima koristi IPv4 jer je većina lokalnih mreža kojima će se kamera pridružiti još uvijek samo IPv4, ali sve što slijedi radi na potpuno isti način za IPv6 nakon što se adrese zamijene.

9.5.2. Čemu IP adresa služi

IP adresa govori kojem je računalu na internetu paket namijenjen. Usmjernik koji ne zna kako izravno doprijeti do odredišta zna da neki drugi usmjernik vjerojatno zna, te tamo prosljeđuje paket. Paket skače između usmjernika, svaki malo bliže odredištu, sve dok usmjernik koji jest na lokalnom segmentu odredišta ne isporuči posljednji skok.

To ponašanje skok-po-skok ono je što omogućuje internetu da radi kao jedna velika mreža umjesto mnogo malih otoka. Sljedeća stranica obrađuje kako se skokovi biraju; ova je samo o adresi.

9.5.3. Kako je kamera dobiva

Kamera koja se upravo pridružila Wi-Fi mreži treba IP adresu prije nego što može s bilo čim komunicirati. Postoje dva uobičajena načina da se to dogodi.

Prvi je automatsko dodjeljivanje. Kamera od lokalne mreže traži adresu; uređaj koji je dodjeljuje je usmjernik – kutija koja povezuje lokalnu mrežu sa širim internetom. U većini kućnih i malih uredskih postavki ista fizička kutija ujedno djeluje i kao preklopnik na koji se priključuju žičani uređaji i kao Wi-Fi pristupna točka s kojom se povezuju bežični, pa „usmjernik”, „preklopnik” i „pristupna točka” mogu biti isti komad hardvera. Usmjernik pokreće malu uslugu zvanu DHCP (Dynamic Host Configuration Protocol), koja održava skup dostupnih adresa, bira jednu za svaki novopristigli uređaj i iznajmljuje je na određeno vrijeme. Dok je već u tome, usmjernik kameri usput dodjeljuje i još nekoliko korisnih dijelova konfiguracije:

  • adresu na koju treba slati odlazni promet kada je odredište izvan lokalne mreže (zadani pristupnik, što je usmjernikova vlastita adresa); i

  • adrese jednog ili više poslužitelja naziva koji ljudski čitljive nazive poput example.com pretvaraju u IP adrese. Usluga traženja naziva zove se DNS, Domain Name System, a Imena i DNS ju detaljno obrađuje.

Sve se to događa automatski dok se veza podiže. Kamera ne mora ništa od toga izričito tražiti; čim isconnected() vrati True u primjeru na prethodnoj stranici, kamera već ima svoju adresu, svoj pristupnik i svoje poslužitelje naziva.

Druga je mogućnost statička konfiguracija. Neke primjene žele poznatu adresu za kameru kako bi je drugi uređaji mogli dosegnuti bez prethodnog traženja. Metoda ipconfig() ručno postavlja adresu, pristupnik i poslužitelj naziva:

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

Statička konfiguracija je krhka (dva uređaja kojima je slučajno dodijeljena ista adresa dolaze u sukob). Posegnite za zadanim DHCP-om osim ako se ne pojavi konkretan razlog da ga premostite.

Kada kamera ima IP adresu, pridružila se internetu (ili barem njegovom dijelu na lokalnoj mreži). Drugi uređaji sada joj mogu adresirati pakete tom adresom, a ona može adresirati pakete njima.

9.5.4. Mrežna maska i /24

/24 na kraju adrese u gornjem statičkom primjeru je mrežna maska. IP adresa sama po sebi ne govori gdje lokalna mreža završava – 192.168.1.50 mogla bi biti jedna od nekoliko stotina adresa na maloj kućnoj mreži ili jedna od tisuća na većoj. Mrežna maska govori koliko adrese imenuje mrežu, a koliko računalo unutar nje.

/24 znači „prva 24 od 32 bita imenuju mrežu; posljednjih 8 imenuje računalo”. Za 192.168.1.50/24 to dijeli adresu na 192.168.1 za mrežu i .50 za računalo, ostavljajući prostora za otprilike 254 uređaja na istoj lokalnoj mreži. /16 bi ostavila više bitova za dio računala i smjestila daleko više uređaja na jednu mrežu; /30 bi ostavila samo dvije adrese računala i smjestila vezu od točke do točke.

Mrežna maska se također često zapisuje kao četverobajtni broj u istoj notaciji s točkama kao i adresa. /24 je ekvivalentno 255.255.255.0 – pročitajte svaki bajt kao „svi bitovi koji pripadaju mrežnom dijelu”. Dva su oblika zamjenjiva; čitač ipconfig() u sljedećem pododjeljku slučajno vraća četverobajtni oblik.

Zašto je podjela uopće važna – kako uređaj koristi mrežnu masku da odluči je li odredište na lokalnoj mreži ili treba izaći kroz pristupnik, i zašto većina kućnih mreža završava na /24 – obrađeno je u Privatne mreže i NAT.

9.5.5. Čitanje adrese natrag

Metoda ipconfig() bez argumenata vraća aktivnu konfiguraciju. Prikaz addr4 vraća IP adresu i mrežnu masku:

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