selitetty.com

Miten netti toimii

Mikä on protokolla? Näin verkon kerrokset toimivat yhdessä

Protokolla ei ole ohjelma vaan kirjoitettu sopimus siitä, missä muodossa tieto liikkuu ja miten vastapuoli siihen vastaa. Kun ymmärrät kerrosten työnjaon, ymmärrät myös miksi vika löytyy yleensä yhdeltä kerrokselta kerrallaan.

Lyhyt vastaus

Protokolla on tarkka sopimus siitä, missä muodossa laitteet lähettävät tietoa ja miten ne vastaavat toisilleen. Yhtä isoa sopimusta ei ole, vaan työ on jaettu kerroksiin: linkkikerros siirtää bitit seuraavalle laitteelle, IP vie paketin oikeaan laitteeseen maailmassa, TCP tai UDP vie sen oikealle ohjelmalle ja HTTP kertoo mitä osapuolet oikeasti sanovat toisilleen. Jokainen kerros lisää lähetettävään tietoon oman otsikkonsa ja luottaa siihen, että alempi kerros hoitaa oman osuutensa.

Sisällys
  1. Protokolla on sopimus, ei ohjelma
  2. Miksi yhtä isoa sopimusta ei ole
  3. Kerrosten työnjako lyhyesti
  4. Kapselointi: kirjekuori kirjekuoren sisällä
  5. Yksi sivulataus kerros kerrokselta
  6. Mistä protokolla tulee: RFC ja karkea yksimielisyys
  7. Kerrosajattelu paikantaa vian
  8. Mitä tästä kannattaa muistaa
  9. Usein kysytyt kysymykset
  10. Lähteet ja lisälukemista

Sana protokolla kuulostaa tekniseltä, mutta se tarkoittaa verkossa samaa kuin diplomatiassa: etukäteen sovittua tapaa toimia, jota kaikki osapuolet noudattavat. Verkossa sopimus koskee sitä, missä muodossa bitit lähetetään, missä järjestyksessä ne tulevat ja mitä vastaanottajan kuuluu tehdä saatuaan ne.

Yleisin väärinkäsitys on, että protokolla olisi jokin ohjelma tai palvelu. HTTP ei ole ohjelma. Se on julkinen määritelmä, jota selaimesi ja palvelin molemmat noudattavat. Juuri siksi kolmen eri valmistajan selain toimii saman palvelimen kanssa, vaikka niiden koodissa ei ole yhtään yhteistä riviä. Sopimus on yhteinen, toteutukset ovat erillisiä.

Toinen väärinkäsitys on, että protokollia pitäisi opetella luettelona lyhenteitä. Lyhenteiden ulkoa opettelu ei auta mitään. Hyötyä on siitä, että hahmotat työnjaon: mikä osa ketjusta ratkaisee minkäkin kysymyksen. Sen jälkeen uusi lyhenne asettuu itsestään paikalleen, ja mikä tärkeämpää, osaat päätellä mistä vika johtuu.

Protokolla on sopimus, ei ohjelma

Ajattele kirjettä. Jotta kirje menee perille, moni asia pitää sopia etukäteen. Osoite kirjoitetaan tiettyyn kohtaan kuorta ja tietyssä muodossa. Postimerkki on tietyssä kulmassa. Sisällä oleva kieli pitää olla sellainen, jota vastaanottaja osaa lukea. Kukaan ei valvo, että näin tehdään, mutta jos poikkeat sopimuksesta, kirje ei mene perille.

Verkossa sopimus on kirjoitettu paljon tarkemmin, koska osapuolet ovat koneita eivätkä osaa arvata. Määritelmä kertoo bitin tarkkuudella, mitä missäkin kohdassa viestiä on. Se kertoo myös miten toimitaan poikkeustilanteissa: mitä tehdään, jos viesti on vialla, jos vastausta ei kuulu tai jos vastapuoli puhuu vanhempaa versiota samasta sopimuksesta.

Protokollaan kuuluu siis kolme asiaa: muoto eli miltä viesti näyttää, merkitys eli mitä kukin kenttä tarkoittaa, ja menettely eli missä järjestyksessä viestejä lähetetään ja mitä kunkin jälkeen odotetaan tapahtuvan.

Miksi yhtä isoa sopimusta ei ole

Voisi kuvitella, että olisi selkeämpää sopia kaikesta kerralla: yksi määritelmä, joka kertoo miten sähköpostiviesti kulkee kotisi wifistä toiselle mantereelle. Käytännössä se olisi mahdotonta ylläpitää. Kun wifin nopeus paranee, koko sopimus jouduttaisiin avaamaan uudelleen. Kun uusi sovellus keksitään, sekin pitäisi kirjoittaa samaan asiakirjaan.

Siksi työ on jaettu kerroksiin. Jokainen kerros ratkaisee yhden kysymyksen, käyttää alapuolellaan olevaa kerrosta palveluna ja tarjoaa oman palvelunsa ylöspäin. Kerros ei tarvitse tietää, miten naapuri toimii sisältä, kunhan rajapinta pysyy samana.

Kerrosjaossa on toinenkin etu, joka näkyy suoraan hinnassa ja valinnanvarassa. Koska kerrokset ovat vaihdettavissa, sama sovellus toimii kuituliittymän, mobiiliverkon ja julkisen wifin päällä ilman muutoksia. Laitteen valmistajan ei tarvitse sopia mistään verkkosi operaattorin kanssa, koska molemmat noudattavat samaa julkista määritelmää.

Tämän ansiosta wifin tekniikka on vaihtunut useaan kertaan ilman että selainta on tarvinnut muuttaa. Samasta syystä IP-osoitteen siirtymä vanhasta osoiteavaruudesta IPv6:een voidaan tehdä vaiheittain: se on yhden kerroksen muutos, ei koko internetin uudelleenkirjoitus.

Kerrosmalleja on esitetty kahdella tavalla. Oppikirjojen OSI-malli jakaa työn seitsemään kerrokseen. Käytännön internet noudattaa neljän kerroksen jakoa, joka on paljon lähempänä sitä mitä koneissa oikeasti tapahtuu. Tässä artikkelissa käytetään neljän kerroksen jakoa, koska sillä pääsee arjessa pitkälle.

Kerrosten työnjako lyhyesti

Kerros Kysymys johon se vastaa Tyypillisiä protokollia Mitä hajoaa, jos se pettää
Linkkikerros Miten bitit siirtyvät seuraavalle laitteelle samassa lähiverkossa Ethernet, wifi Mikään ei toimi, laite ei näe verkkoa
Verkkokerros Mihin laitteeseen maailmassa paketti viedään ja mitä reittiä IP, IPv6, ICMP Yhteys johonkin osoitteeseen ei muodostu lainkaan
Kuljetuskerros Mille ohjelmalle paketti kuuluu ja pitääkö perillemeno varmistaa TCP, UDP, QUIC Yhteys katkeilee tai jää roikkumaan
Sovelluskerros Mitä osapuolet oikeasti sanovat toisilleen HTTP, DNS, SMTP, IMAP Yhteys toimii mutta palvelu vastaa virheellä

Kuljetuskerroksella on kaksi vakiintunutta vaihtoehtoa, ja niiden ero on yksi verkon keskeisimmistä valinnoista. Toinen varmistaa perillemenon, toinen luopuu varmistuksesta nopeuden vuoksi, ja ero näkyy suoraan käyttäjälle. Tätä vaihtokauppaa käsitellään erikseen artikkelissa TCP:n ja UDP:n erosta.

Salaus ei ole omassa sarakkeessaan, koska se ei ole oma kerroksensa vaan asettuu kuljetuskerroksen ja sovelluskerroksen väliin. Kun luet HTTPS-yhteydestä ja varmenteista, kyse on juuri tästä välikerroksesta: sovellus puhuu edelleen HTTP:tä, mutta puhe kulkee salatun putken läpi.

Kapselointi: kirjekuori kirjekuoren sisällä

Kerrosjako toteutuu käytännössä kapseloinnilla. Kun lähetät jotain, jokainen kerros ottaa ylemmältä kerrokselta saamansa tiedon, kohtelee sitä pelkkänä sisältönä ja lisää siihen oman otsikkonsa.

Sovellus tuottaa HTTP-pyynnön. Kuljetuskerros laittaa sen sisään ja lisää eteen otsikon, jossa kerrotaan lähtö- ja kohdeportti sekä järjestystiedot. Verkkokerros laittaa tämän sisään ja lisää otsikon, jossa on lähde- ja kohdeosoite. Linkkikerros laittaa senkin sisään ja lisää otsikon, jossa on lähiverkon laiteosoitteet.

Perillä sama tehdään päinvastoin. Jokainen kerros lukee oman otsikkonsa, poistaa sen ja antaa loput ylöspäin. Olennaista on, että kerros ei lue sisältöä, joka kuuluu ylemmälle kerrokselle. Reititin matkan varrella katsoo IP-otsikkoa eikä ole kiinnostunut siitä, onko sisällä HTTP-pyyntö vai videokuvaa.

Jokainen kerros lisää oman kuorensa ja luottaa siihen, että alempi kerros hoitaa oman kysymyksensä. Tämä luottamus on koko internetin rakenteellinen perusta.

Kuorilla on hintansa. Otsikot vievät tilaa jokaisesta paketista, ja siksi hyötykuormaa mahtuu yhteen pakettiin vähemmän kuin paketin enimmäiskoko antaisi ymmärtää. Suuri tiedosto pilkotaan tuhansiin paketteihin, ja jokainen niistä kantaa saman otsikkokuorman. Tämä on yksi syy siihen, miksi todellinen siirtonopeus jää aina hieman liittymän nimellisnopeutta pienemmäksi.

Kapselointi selittää myös sen, miksi verkon eri osilla on eri näkymä samaan liikenteeseen. Operaattorin laitteet käsittelevät IP-otsikkoa, kotisi reititin katsoo lisäksi kuljetuskerroksen porttinumeroita, ja vasta kohdelaite avaa sovelluskerroksen sisällön. Mitä ylemmäs kuoressa mennään, sitä harvempi osapuoli näkee sisään.

Yksi sivulataus kerros kerrokselta

Kun kirjoitat osoitteen selaimeen, tapahtuu jotakuinkin tämä. Vaiheet ovat todellisia, mutta ne tapahtuvat sekunnin murto-osissa.

  1. Nimi muutetaan osoitteeksi. Selain ei osaa ottaa yhteyttä nimeen. Se pyytää nimipalvelua eli DNS:ää kertomaan, mikä IP-osoite nimeen kuuluu. Tämä on sovelluskerroksen kysely, joka itsekin kulkee kaikkien alempien kerrosten läpi.
  2. Kuljetuskerros avaa yhteyden. Laitteesi ottaa yhteyden saatuun osoitteeseen ja kertoo, mille numeroidulle ovelle se haluaa. Ovi eli portti kertoo, mikä ohjelma palvelimessa ottaa yhteyden vastaan.
  3. Salattu putki neuvotellaan. Ennen varsinaista sisältöä osapuolet sopivat salauksesta ja palvelin todistaa henkilöllisyytensä varmenteella.
  4. Sovellus esittää pyynnön. Vasta nyt lähtee varsinainen HTTP-pyyntö: anna minulle tämä sivu.
  5. Vastaus palaa samaa ketjua. Palvelin vastaa, vastaus pilkotaan paketeiksi, paketit kulkevat verkon läpi ja kootaan laitteessasi takaisin järjestykseen.
  6. Selain pyytää loput osat. Sivun kuvat, tyylit ja komentosarjat ovat erillisiä pyyntöjä, jotka toistavat saman kierroksen.

Huomaa, että vaiheessa 1 ja vaiheessa 4 puhutaan eri protokollaa, mutta alemmat kerrokset ovat samat. Se on kerrosjaon koko idea.

Mistä protokolla tulee: RFC ja karkea yksimielisyys

Internetin protokollia ei säädä valtio eikä yritys. Ne kirjoitetaan avoimessa prosessissa, jonka keskiössä on IETF eli Internet Engineering Task Force. Valmiit määritelmät julkaistaan RFC-dokumentteina. Lyhenne tulee sanoista Request for Comments, ja nimi on peräisin ajalta, jolloin dokumentit olivat kirjaimellisesti kommenttipyyntöjä.

RFC-dokumentteja voi lukea kuka tahansa maksutta. Jokaisella on pysyvä numero, eikä julkaistua dokumenttia muuteta jälkikäteen. Jos määritelmä vanhenee, kirjoitetaan uusi RFC, joka kertoo korvaavansa vanhan. Tämä on syy siihen, että vanhoihin numeroihin viitataan yhä: numero on osoite tiettyyn tekstiin, ei elävä ohjesivu.

Vanhan määritelmän voimassaolo on käytännön kysymys eikä pelkkä muodollisuus. Internetissä on aina käytössä laitteita, jotka puhuvat vanhempaa versiota, eikä niitä voi sammuttaa yhdellä päätöksellä. Siksi uusi versio suunnitellaan lähes aina niin, että vanhaa ymmärtävä osapuoli pystyy jatkamaan keskustelua, vaikka se jäisi paitsi uusista ominaisuuksista.

Kaikki RFC:t eivät ole standardeja. Osa on kokeellisia, osa kuvaa vain nykykäytäntöä ja osa on kirjoitettu vitsiksi aprillipäivänä. Dokumentin alussa kerrotaan sen asema.

IETF:n työtapaa kuvaa vakiintunut periaate karkeasta yksimielisyydestä ja toimivasta koodista. Päätöstä ei tehdä äänestämällä eikä yksimielisyyttä vaadita täydellisenä, ja toteutuksen toimivuus painaa enemmän kuin kaunis suunnitelma paperilla. Käytännössä tämä tarkoittaa, että protokollat kehittyvät hitaasti ja taaksepäin yhteensopivasti.

Kerrosajattelu paikantaa vian

Tavallisin syy ymmärtää kerrokset ei ole teoria vaan vianetsintä. Kun oire tunnetaan, kerros yleensä paljastuu, ja silloin tarkistuslista lyhenee ratkaisevasti.

Oire Todennäköinen kerros Mitä se yleensä tarkoittaa
Laite ei näe verkkoa lainkaan Linkkikerros Kaapeli, wifin salasana tai radioyhteys
Nimi ei aukea mutta suora numero-osoite toimii Sovelluskerros (DNS) Nimipalveluvika, ei yhteysvika
Yhteys avautuu mutta katkeilee kesken siirron Kuljetuskerros Pakettihäviö tai epävakaa linkki
Sivu vastaa virhesivulla Sovelluskerros (HTTP) Yhteys toimii, palvelu ei
Yksi palvelu ei toimi, muut toimivat Sovelluskerros tai portti Vika ei ole verkossa vaan yhdessä palvelussa

Sääntö on yksinkertainen: aloita alhaalta ja etene ylöspäin. Jos linkkikerros ei toimi, ylempien tutkiminen on ajanhukkaa. Sama järjestys toistuu käytännön ohjeissa, kun nettiyhteys ei toimi lainkaan tai kun vain yksi sivu jää aukeamatta.

Kerrosjako selittää myös sen, miksi jokin osa yhteydestä voi olla suojattu ja toinen ei. Kun luet päästä päähän -salauksesta, kyse on suojasta, joka tehdään ylimmällä kerroksella. Alemmat kerrokset näkevät silti, kuka puhuu kenen kanssa ja kuinka paljon.

Mitä tästä kannattaa muistaa

  • Protokolla on julkinen sopimus. Jos jokin toimii kahden eri valmistajan laitteen välillä, syy on siinä että molemmat noudattavat samaa tekstiä.
  • Kysy vian edessä ensin, millä kerroksella oire syntyy. Se karsii suurimman osan vääristä arvauksista pois.
  • Älä opettele lyhenteitä listana. Opettele kysymys, johon kukin protokolla vastaa.
  • Muista että salaus ja luotettavuus ovat eri asioita ja eri kerroksilla. Salattu yhteys voi olla epäluotettava, ja luotettava yhteys voi olla täysin salaamaton.
  • Kun haluat tarkistaa yksityiskohdan, alkuperäinen RFC on lähes aina saatavilla ilmaiseksi ja se kertoo asian täsmällisemmin kuin mikään opas.

Usein kysytyt kysymykset

Mitä protokolla tarkoittaa tietotekniikassa?

Se tarkoittaa tarkkaa sopimusta siitä, missä muodossa laitteet lähettävät tietoa toisilleen ja miten ne vastaavat. Sopimus kattaa viestin muodon, kenttien merkityksen ja sen järjestyksen, jossa viestejä vaihdetaan. Protokolla ei ole ohjelma vaan määritelmä, jota ohjelmat noudattavat.

Montako kerrosta verkossa on?

Riippuu mallista. Oppikirjojen OSI-malli jakaa työn seitsemään kerrokseen, kun taas käytännön internetiä kuvataan yleensä neljällä kerroksella: linkki, verkko, kuljetus ja sovellus. Kumpikaan ei ole väärä, ne ovat eri tarkkuudella piirrettyjä karttoja samasta asiasta.

Mitä ero on protokollalla ja standardilla?

Protokolla on itse toimintatapa, standardi on virallinen asiakirja, joka määrittelee sen. Kaikki protokollat eivät ole standardeja: osa on yhden yrityksen sisäisiä ja osa on julkaistu vain kuvauksena nykykäytännöstä. Internetin ydinprotokollat on määritelty RFC-dokumenteissa.

Onko IP-osoite protokolla?

Ei, IP-osoite on osoite ja IP on protokolla, joka määrittelee osoitteen muodon ja sen, miten paketti viedään osoitteeseen. Osoite on siis yksi kenttä IP-protokollan otsikossa. Sama ero on kuin katuosoitteen ja postin jakelusääntöjen välillä.

Mitä kapselointi tarkoittaa käytännössä?

Se tarkoittaa, että jokainen kerros lisää lähetettävään tietoon oman otsikkonsa ja kohtelee ylemmältä kerrokselta saamaansa tietoa pelkkänä sisältönä. Perillä otsikot puretaan käänteisessä järjestyksessä. Käytännössä yksi paketti on siis useita sisäkkäisiä kuoria, joista jokainen kuuluu eri kerrokselle.

Miksi RFC-dokumentteja ei päivitetä?

Julkaistu RFC pysyy muuttumattomana, jotta viittaus tiettyyn numeroon tarkoittaa aina samaa tekstiä. Kun määritelmä vanhenee, kirjoitetaan uusi RFC, joka ilmoittaa korvaavansa vanhan. Dokumentin alusta näkee sen aseman ja sen, onko se yhä voimassa.

Tarvitseeko tavallisen käyttäjän tietää protokollista mitään?

Arjessa ei tarvitse, koska kaikki toimii automaattisesti. Hyöty tulee vasta silloin kun jokin ei toimi: kerrosajattelun avulla erotat verkkovian palveluviasta muutamassa minuutissa. Se säästää turhia yhteydenottoja ja turhia laitteiden vaihtoja.

Takaisin ylös