Internetin perusosat
Learning objectives
- Tutustut käsitteisiin internet, protokolla, TCP, IP, HTTP ja DNS.
- Tiedät pääpiirteittäin miten TCP/IP -protokollayhdistelmä toimii ja miten dataa lähetetään verkossa.
- Tiedät mikä palvelu on vastuussa verkko-osoitteiden muuntamisesta IP-osoitteiksi.
- Tiedät minkä protokollan vastuulla on viestin vastaanottajan selvittäminen.
- Tiedät mitä protokollaa selain käyttää verkkosivujen sisällön hakemiseen.
Tutustutaan seuraavaksi internetin peruskäsitteisiin. Aloitamme vertauskuvan kautta.
Internet ja posti
Internet toimii hieman kuin posti. Kun lähetämme paketin postin kautta, kirjoitamme pakettiin osoitteen ja viemme sen postin toimipisteeseen. Osoitteessa on nimi, katuosoite, postinumero ja postitoimipaikka (jätämme tässä maan huomioimatta).
Kun paketti on viety postiin, paketissa oleva osoite luetaan. Postinumeron ja postitoimipaikan perusteella päätellään missä kaupungissa sijaitsevaan postin toimipisteeseen paketti tulee lähettää.

Kun toimipiste on selvitetty, paketti kuljetetaan toimipisteeseen postin kuljetusvälineistöä käyttäen. Paketti saattaa kulkea useamman jakeluauton mukana toimipisteeseen päästäkseen. Kun paketti on toimipisteessä, sen osoite luetaan uudestaan ja paketti annetaan katuosoitteen perusteella sille jakelijalle, jonka vastuulla kyseinen katuosoite on. Jakelija kuljettaa paketin perille: vastaanottaja varmistetaan paketissa olevan nimen perusteella.
Joskus paketti saattaa ensin päätyä väärään toimipisteeseen. Paketit myös hukkuvat, joskin onneksi hyvin harvoin. Mikäli paketti päätyy väärään toimipisteeseen, paketin osoitetta tarkasteltaessa huomataan, että toimipiste on väärä. Tällöin paketti lähetetään edelleen oikeaan toimipisteeseen. Mikäli taas paketti katoaa matkalla, joudumme lähettämään uuden paketin.
Verkko ja protokollat
Internet on verkko, jonka kautta tietokoneet ympäri maailmaa ovat yhteydessä toisiinsa. Internetin toiminta perustuu ennalta sovittujen protokollien käyttöön, joiden myötä verkkosovellukset (tai tarkemmin niiden toteuttajat) tietävät miten verkon kautta saatavia viestejä tulee tulkita ja miten viestejä tulee lähettää.
Viestien lähettämisen ytimessä ovat TCP-protokolla (Transmission Control Protocol) ja IP-protokolla (Internet Protocol). TCP-protokollan vastuulla on viestien saapuminen perille alkuperäisessä muodossa, ja IP-protokollan vastuulla on viestien päätyminen oikeaan osoitteeseen. Näitä protokollia käsitellään tyypillisesti yhdessä nimellä TCP/IP.
Kun tietokone lähettää viestin verkon yli toiselle tietokoneelle, TCP-protokolla jakaa lähetettävän viestin pienempiin osiin. Kukin osa koostuu korkeintaan 60 tavun otsaketiedoista ja 65 kilotavun sisällöstä. Otsaketietoihin lisätään tieto lähettäjästä ja vastaanottajasta (ns. IP-osoite), osan järjestysnumerosta, osaan liittyvän datan tarkistussummasta (checksum), sekä muutamasta muusta arvosta. Tarkistussumman perusteella vastaanottaja voi laskea saapuiko data perille oikeassa muodossa.
Viestin vastaanottaminen koostuu yhden tai useamman viestistä tehdyn pienemmän osan vastaanottamisesta. Kun tietokone vastaanottaa viestin osan, se tarkastaa tarkistussumman perusteella tuliko viestin osa oikein perille. Mikäli viestin osa ei tullut oikein perille, vastaanottaja pyytää lähettäjää lähettämään osan uudestaan. Mikäli viestin osa tuli oikein perille, vastaanottaja kertoo lähettäjälle viestin osan onnistuneesta saapumisesta.
Kun kaikki viestin osat ovat perillä, viestin koostetaan viestin osien mukana tulleiden järjestysnumeroiden avulla kokonaiseksi. TCP-protokollan vastuulla on siis sekä viestin saapumisen varmistaminen että viestin oikeellisuuden varmistaminen.
Internetin muodostama verkko koostuu useista tietokoneista, joista osan tehtävänä on vain viestien osien eteenpäin reitittäminen. Kuten edellä mainitsimme, jokaiseen viestin osan otsakkeeseen liitetään viestin vastaanottajan IP-osoite. IP-osoite koostuu useammasta osasta, joita voi vertauskuvainnollisesti ajatella postin kautta lähetettävän paketin osoitteen osista. Yksi osa on hieman kuin maa, toinen osa hieman kuin kaupunki, ja niin edelleen.

Kun viestin osa lähetetään, se päätyy lähimmälle reitittimelle. Jokaisella reitittimellä on reititystaulu (routing table), joka on käytännössä tietokanta IP-osoitteiden osista ja niistä vastaavista reitittimistä.
Kullakin reitittimellä on tyypillisesti tarkka tieto sen lähellä olevien reitittimien ja koneiden osoitteista, mutta vain pääpiirteiset tiedot kauempana olevista reitittimistä. Pääpiirteisillä tiedoilla tarkoitetaan tässä esimerkiksi sitä, että minkä reitittimen vastuulla kukin "maa" on. Yhteen reitittimeen ei mahdu tietoja kaikista IP-osoitteista ja niitä vastaavista koneista ja reitittimistä, eikä toisaalta yksikään reititin ole yhteydessä kaikkiin maailman koneisiin.
Kun reititin vastaanottaa viestin osan, se tarkastelee viestin otsakkeessa olevaa vastaanottajan IP-osoitetta. Reititin vertaa IP-osoitetta reitittimen reititystauluun, ja valitsee reititystaulusta parhaiten IP-osoitetta vastaavan reitittimen, jolle viesti lähetetään edelleen. Vastaavasti seuraava reititin myös lähettää viestin eteenpäin. Tällainen viestien edelleen lähettäminen on oleellinen osa internetin toimintaa.
Lopulta, kun viestin osa saapuu reitittimelle, joka on yhteydessä vastaanottajan koneeseen, viestin osa välitetään koneelle. Viestin osa on nyt perillä. TCP-protokollan mukaisesti vastaanottaja lähettää lähettäjälle viestin osan saapumisesta.
Question not found or loading of the question is still in progress.
Selainten toiminta
Selaimet kuten Google Chrome ja Microsoft Edge käyttävät pääosin TCP/IP-protokollayhdistelmän päälle rakennettuja protokollia. Näistä verkkosivujen toiminnan kannalta tärkeimpiä ovat DNS (Domain Name System) ja HTTP (Hypertext Transfer Protocol).
Kun kirjoitat selaimeen verkkosivun osoitteen ja painat enteriä (eli pyydät selainta hakemaan sivun), selaimen tulee ensin selvittää mitä IP-osoitetta kirjoittamasi osoite vastaa. Selainsovelluksella (tai käyttöjärjestelmällä) on tietokanta, jossa säilötään aiemmin vierailtuihin sivuihin liittyviä IP-osoitteita lyhytaikaisesti. Mikäli IP-osoite ei ole paikallisessa tietokannassa, tulee IP-osoite hakea DNS-palvelimelta.
Internetissä on joukko DNS-palvelimia, jotka pitävät kirjaa verkko-osoitteita vastaavista IP-osoitteista. Näiden palvelinten toimintaa voi verrata puhelimessa olevaan puhelinluetteloon, josta voidaan hakea puhelinnumeroa nimen perusteella.
Olemassaoleviin verkko-osoitteisiin liittyy IP-osoite ellei verkko-osoitteeseen liittyvissä asetuksissa ole vikaa. Kun verkkosivun osoitteeseen liittyvä IP-osoite on selvitetty, tallennetaan se selaimen (tai käyttöjärjestelmän) tietokantaan, missä sitä säilytetään vähän aikaa. Tällöin IP-osoitetta ei tarvitse erikseen hakea jokaista verkkosivulle tehtyä pyyntöä varten.
Mikäli verkkosivun osoitteelle ei löydy IP-osoitetta, selain näyttää virheviestin.

Kun IP-osoite on tiedossa, selain tekee osoitteseen HTTP-protokollaa noudattavan pyynnön. HTTP-protokolla toimii TCP/IP -protokollayhdistelmän päällä. HTTP-pyyntöä tehdessä selaimen ei tarvitse tietää mitään TCP/IP -protokollayhdistelmästä.
HTTP-protokolla määrittelee useamman erilaisen pyyntötavan. Tiedon hakemiseen käytetään GET-pyyntöä ja tiedon lähettämiseen POST-pyyntöä. HTTP-protokollan pyynnöt ovat merkkijonomuotoisia.
Esimerkiksi osoitteessa FITech.io olevaan sivuun liittyy IP-osoite 83.143.220.151
(tarkastettu 1.6.2020). Kun selaimeen kirjoitetaan osoite https://fitech.io/
ja painetaan enteriä, selain tekee IP-osoitteeseen 83.143.220.151
HTTP-protokollan mukaisen GET-pyynnön.
GET / HTTP/1.1
Host: fitech.io
Koska HTTP-protokolla on rakennettu TCP/IP -yhdistelmän päälle, lähetetään viesti TCP- ja IP-protokollia hyödyntämällä palvelimelle. Palvelin palauttaa pyyntöön HTTP-protokollan mukaisen vastauksen, jonka perusteella selain toimii. Vastaus voi olla esimerkiksi uudelleenohjauspyyntö, jolloin selain siirtyy hakemaan tietoa toisesta osoitteesta. Vastaus voi olla myös esimerkiksi verkkosivun sisältö, jolloin selain näyttää sisällön käyttäjälle.
Kuten huomaat, HTTP-protokollan viesteissä ei ole IP-osoitetta. Tämä johtuu siitä, että viestin välittäminen on alla olevan protokollan vastuulla. HTTP-protokollan viestit sisältävät tiedon haetusta resurssista ja "isäntäkoneesta". Esimerkiksi yllä olevassa esimerkissä haetaan osoitteen "juuressa" olevaa dokumenttia GET /
isäntäkoneelta fitech.io
. Isäntäkoneen lisääminen pyyntöön liittyy siihen, että samassa IP-osoitteessa voi olla useampi palvelin.
Mikäli pyyntö tehdään osoitteeseen https://fitech.io/fi/
, konkreettinen ero edelliseen pyyntöön on haettava dokumentti. Juuridokumentin sijaan pyyntö pyytää palvelinta palauttamaan polussa /fi/
olevan tiedon.
GET /fi/ HTTP/1.1
Host: fitech.io
Question not found or loading of the question is still in progress.
Hi! Please help us improve the course!
Please consider the following statements and questions regarding this part of the course. We use your answers for improving the course.
I can see how the assignments and materials fit in with what I am supposed to learn.
I find most of what I learned so far interesting.
I am certain that I can learn the taught skills and knowledge.
I find that I would benefit from having explicit deadlines.
I feel overwhelmed by the amount of work.
I try out the examples outlined in the materials.
I feel that the assignments are too difficult.
I feel that I've been systematic and organized in my studying.
How many hours (estimated with a precision of half an hour) did you spend reading the material and completing the assignments for this part? (use a dot as the decimal separator, e.g 8.5)
How would you improve the material or assignments?