Internet: Paketit, Reititys ja Luotettavuus Hei, nimeni on Lynn. Olen Spotifyn ohjelmistoinsinööri ja myönnän, että käytän internetin luotettavuutta usein hyväkseni. Saatavilla olevan tiedon määrä on päätähuimaavaa. Mutta miten on mahdollista, että kaikki tieto on luotettavaa? Sanotaan, että haluat soittaa kappaleen Spotifystä. Tuntuu siltä, että tietokoneesi yhdistäisi suoraan Spotifyn palvelimiin ja Spotify lähettää kappaleen suoratoistona. Tämä ei itseasiassa ole totta. Jos internet olisi luotu suorien yhteyksien avulla, olisi mahdotonta pitää asiat toiminnassa miljoonien ihmisten käyttäessä samaa ohjelmistoa. Varsinkin, koska emme voi varmistaa että jokainen johto ja kone toimii oikein koko ajan. Sen sijaan data kulkee paljon epäsuoremmin. 1970- luvun alussa ryhdyin yrityskumppanini Bob Kahnin kanssa suunnittelemaan internetiä. Minulla ja Bobilla oli vastuu ja mahdollisuus suunnitella internetin protokollat ja arkkitehtuuri. Joten jatkoimme Internetin kasvuun osallistumista ja kehittämistä nykypäivään saakka. Tapa, jolla tiedot siirretään tietokoneesta toiseen, on aika mielenkiintoista. Sen ei tarvitse seurata tiettyä polkua, vaan polku saattaa vaihdella koneiden välisestä keskustelusta riippuen. Internetissä kulkeva tieto menee koneesta toiseen niin kutsuttuina tietopaketteina ja paketti kulkee paikasta toiseen samaan tapaan, kun autolla ajaessa. Ruuhkasta ja teiden kunnosta riippuen, saatat joutua valitsemaan eri reitin joka kerta kun ajat tiettyyn kohteeseen. Ja aivan kuten voit kuljettaa eri tavaroita auton sisällä, voidaan IP-paketeilla myös lähettää monenlaisia digitaalisia tietoja. Mutta niillä on joitakin rajoituksia. Mitä jos sinun tulee esimerkiksi kuljettaa avaruussukkula sen rakennuspaikasta sen laukaisupaikalle. Sukkula ei mahdu yhteen rekkaan, joten se pitää purkaa pienempiin osiin ja kuljettaa useiden rekkojen avulla. Rekat voivat kulkea eri reittejä pitkin ja saapua laukausupaikalle eri aikoihin. Kun kaikki osat ovat saapuneet, voit koota palat sukkulaksi ja olet valmis laukaisuun. Internet toimii samalla tavalla. Jos sinulla on suuri valokuva jonka haluat lähettää kaverillesi tai ladata nettisivulle, kuva saattaa koostua 10 miljoonasta bitistä, eli ykkösistä ja nollista. Tämä on liian paljon yhdelle paketille. Koska kuvan tiedot ovat tietokoneella, kuvan lähettävä tietokone voi hajottaa sen nopeasti sadoiksi tai jopa tuhansiksi pienemmiksi osiksi, joita kutsutaan paketeiksi. Toisin kuin autot tai rekat, näissä paketeissa ei ole kuljettajia eivätkä ne valitse reittiään. Jokaisessa paketissa on sen alkuperän ja määränpään osoite. Reitittimet toimivat liikenteen ohjaajina varmistaen, että paketit liikkuvat verkoissa sujuvasti. Jos yksi reitti on tukossa, voivat yksittäiset paketit kulkea eri reittejä pitkin ja saapua päämääräänsä eri aikoihin tai väärässä järjestyksessä. Miten tämä toimii? Internet-protokollan osana, jokainen reititin seuraa useita polkuja pakettien lähettämiseen ja valitsee datalle halvimman saatavilla olevan reitin niiden kohde-IP-osoitteen perusteella. Tässä tapauksessa "halvin" ei tarkoita kustannuksia, mutta aikaa ja ei-teknisiä tekijöitä, kuten politiikkaa ja yritysten välisiä suhteita. Usein paras reitti tiedon kulkemiseen ei välttämättä ole suorin. Polkuvaihtoehdot tekevät verkkovirheistä sietokykyisiä. Mikä tarkoittaa, että verkko voi jatkaa pakettien lähettämistä, vaikka jokin menisi pieleen. Tämä on perusta Internetin pääperiaatteelle: luotettavuudelle. Entä jos haluat pyytää tietoja, mutta kaikkea ei toimiteta? Haluat kuunnella kappaleen. Kuinka voit olla 100% varma siitä, että kaikki tiedot toimitetaan ja kappale soi täydellisesti? Tapaa uusi paras ystäväsi, TCP (lähetyksen ohausprotokolla). TCP hallinnoi kaikkien tietojen lähettämistä ja vastaanottamista paketteina. Ajattele sitä postipalveluna. Kun pyydät kappaletta laitteellasi, Spotify lähettää kappaleen, joka on hajotettu moniin paketteihin. Kun paketti saapuu, TCP tekee täyden kartoituksen ja lähettää Spotifylle kuittaukset jokaisesta vastaanotetusta paketista. Kun kaikki paketit on vastaanotettu, TCP kuittaa lähetyksen ja olet valmis. Jos TCP huomaa, että jotkut paketit puuttuvat, se ei kuittaa lähetystä. Muutoin kappaleesi ei kuulostaisi hyvältä tai jotkut sen osista puuttuvat. Spotify lähettää uuden paketin jokaista puuttuvaa pakettia kohti. Kun TCP on varmistanut uudet paketit, kappale alkaa soimaan. TCP:ssä ja reitittimissä on hienoa se, että ne osaavat sopeutua. Ne toimivat 8 tai 8 biljoonassa laitteessa. Näiden virheiden sieto-ominaisuuksien ja redundanssin takia, mitä enemmän reitittimiä lisäämme, sitä luotettavampi Internetistä tulee. On myös hienoa, että voimme kasvattaa ja skaalata Internetiä keskeyttämättä palveluita niiden käyttäjille. Internet on tehty satoja tuhansia verkkoja ja miljardeja tietokoneita ja laitteita käyttäen, jotka on kytketty fyysisesti toisiinsa. Nämä erilaiset internetin muodostamat järjestelmät luovat yhteyden toisiinsa, kommunikoivat ja toimivat yhdessä sovittujen standardien mukaan siitä, miten tietoja lähetetään. Tietokonelaitteet tai reitittimet auttavat paketteja kulkemaan järjestyksessä määränpäähän, jossa ne kootaan uudelleen. Tämä tapahtuu miljardeja kertoja päivässä riippumatta siitä lähetätkö sähköpostia, käytät nettisivuja, soitat videopuheluita, käytät mobiilisovelluksia tai kun Internetin anturit tai laitteet puhuvat keskenään.