9.6. Paketit ja reititys

IP-osoite kertoo, kenelle viesti on tarkoitettu. Mekanismia, joka todella toimittaa sen, kutsutaan reititykseksi, ja se on hyppy hypyltä -prosessi, jolla paketti matkaa lähettäjän paikallisverkosta vastaanottajan paikallisverkkoon, mahdollisesti hyvin kaukana.

9.6.1. Paketti lyhyesti

Paketti on IP-kerroksen työyksikkö – tavujoukko, jossa on pieni otsikko ja hyötykuorma. Otsikossa on kaksi reitityksen kannalta tärkeää kenttää:

  • Lähde-IP-osoite (mistä paketti tuli).

  • Määränpää-IP-osoite (minne se on menossa).

Hyötykuorma on mitä tahansa, mitä siirtokerros pyysi verkkokerrosta toimittamaan. Pakettiotsikko sisältää myös time-to-live -laskurin, otsikon yli lasketun tarkistussumman ja muutamia ohjauslippuja. Mihinkään näistä kameran Python-koodi ei koske suoraan.

Paketit eivät lupaa mitään muuta kuin ”me yritimme” – ne voivat kadota, kahdentua tai saapua väärässä järjestyksessä. Luotettavuus ja järjestys ovat ongelmia, jotka yläpuolinen siirtokerros ratkaisee; verkkokerros tekee vain parhaansa välittääkseen kunkin paketin kohti määränpäätään.

9.6.2. Hyppy hypyltä

Paketti lähtee kamerasta ja saapuu ensimmäiselle laitteelle, joka ei sijaitse kameran paikallisessa segmentissä: oletusyhdyskäytävälle. (Edellinen sivu mainitsi DHCP:n antavan kameralle yhdyskäytävän osoitteen verkon tullessa pystyyn.) Tuo laite on reititin – laite, jonka tehtävänä on vastaanottaa paketteja, katsoa niiden määränpäätä ja välittää ne eteenpäin.

Kaavio, jossa on viisi laatikkoa. Vasemmalla kamera nimeltä "10.0.0.42". Yhdistettynä reitittimeen nimeltä "10.0.0.1 / 203.0.113.5". Sitten kaksi nimeämätöntä reititintä keskellä. Sitten reititin nimeltä "198.51.100.1 / 198.51.100.x". Lopuksi palvelin nimeltä "198.51.100.20". Nuoli, jonka otsikkona on "määränpää: 198.51.100.20", kulkee ketjua pitkin vasemmalta oikealle.

Kameralta määränpäähän kulkeva paketti hyppii reitittimeltä toiselle, kukin askel lähempänä.

Reitittimellä on reititystaulu – luettelo muotoa ”tähän kuvioon täsmääville määränpäille lähetä paketti tämän liitännän kautta”. Kameran kanssa samassa verkossa oleville määränpäille merkintä sanoo ”lähetä se takaisin samaa kaapelia pitkin, jota pitkin se tuli”. Laajemman internetin määränpäille merkintä sanoo ”lähetä se ylävirran reitittimelle”. Tunnetuille määränpääkuvioille (yrityksen VPN, tietyn liikekumppanin verkko, satelliittiyhteys) reitittimellä voi olla tarkempi merkintä, joka ohittaa oletuksen.

Ylävirran reititin tekee saman asian. Ja seuraava. Ja seuraava. Jokainen hyppy on samanmuotoinen: vastaanota paketti, etsi määränpää taulusta, lähetä se ulos oikean liitännän kautta. Lopulta paketti saapuu reitittimelle, joka on samassa paikallisessa segmentissä kuin määränpään IP-osoite. Tuo reititin toimittaa viimeisen hypyn, määränpää vastaanottaa paketin, ja matka on ohi.

9.6.3. Päätepisteet eivät tunne reittiä

Kamera, joka lähettää paketin etäpalvelimelle, ei tiedä, miten paketti pääsee perille. Se tietää vain määränpään IP-osoitteen ja oman oletusyhdyskäytävänsä osoitteen. Kaiken siltä väliltä – mitkä reitittimet, mitkä valokuidut, mitkä merenalaiset kaapelit – päättävät polun varrella olevat reitittimet matkan edetessä omien tauluidensa perusteella. Reitittimet itse tuntevat vain välittömät naapurinsa ja yleisten määränpäiden karkean suunnan; yhdelläkään yksittäisellä laitteella internetissä ei ole siitä täydellistä karttaa.

Tuo hajautus on syy siihen, miksi verkko jatkaa toimintaansa, kun yksittäiset polut pettävät. Katkennut kaapeli jossakin keskellä muuttuu uudelleenreititystapahtumaksi muutamalla reitittimellä; päätepisteet eivät koskaan huomaa sitä. Se on myös syy siihen, miksi paketti tokiolaiselta kameralta dublinilaiselle palvelimelle voi onnistua ilman, että kumpikaan osapuoli tietää, mitkä maat ovat välissä.

9.6.4. Mitä tämä merkitsee Python-skriptille

Kameran tehtävä verkkokerroksella tiivistyy seuraavaan:

  • Sillä on IP-osoite.

  • Se tuntee oletusyhdyskäytävän osoitteen (DHCP täyttää tämän automaattisesti).

  • Se luovuttaa lähtevät paketit, jotka on osoitettu mihin tahansa IP-osoitteeseen, tuolle yhdyskäytävälle ja luottaa polun loppuun.

Skripti ei koskaan valitse reittiä, ei koskaan nimeä välihyppyä eikä koskaan näe keskellä olevia reitittimiä. Se kirjoittaa määränpään IP-osoitteen pakettiin, ja verkkokerros ottaa vastuun. Python-skriptin näkökulmasta koko reititys on vain ominaisuus verkossa, johon kamera on liittynyt – ”yhdyskäytävä lähettää paketit jonnekin minulle hyödylliseen suuntaan”.

Seuraavaksi tuleva siirtokerros olettaa reitityksen vain toimivan ja rakentaa luotettavuuden, järjestyksen ja ohjelmasta ohjelmaan -osoituksen sen päälle.