ITKP104 Tietoverkot - 2021-2022

  • Itsenäisesti lv. 2021-2022 opiskeltavan kurssin materiaalista:
    • Kurssimoniste ja sen teoriaosiot ovat linkitetty kevään 2021 kurssilta.
    • Jos olet vastannut kevään 2021 kurssin kurssimonisteessa tai tehtäväsivuilla tehtäviin, vastauksesi näkyvät siis tämän lv. 2021-2022 kurssin sivuilla.

Esipuhe

Tämä materiaali on tehty kevään 2021 ITKP104 Tietoverkot kurssille. Materiaalia käytetään lv. 2021-2022 itsenäisesti opiskeltavalla kurssilla. Materiaalin yhteyteen on lisätty linkkejä aiempien vuosien luentovideoiden kohtiin, joissa aiheita käsitellään.

Materiaaliin on lisätty interaktiivisia tehtäviä. Osassa interaktiivisista tehtävistä on automaattinen tarkistin. Tällaisten tarkistimen sisältävien tehtävien tehtävänanto alkaa vahvennetulla suluin ympäröidyllä kirjaimella väliltä (a) - (j). Tällä tavoin merkitystä automaattisesti tarkistettavista tehtävistä saa kustakin maksimissaan 0.1 pistettä kevään 2021-2022 ITKP104 Tietoverkot kurssille, kun vastaus on oikein. Kyseiset tehtävät on linkitetty materiaaliin teoriatehtävien sivuilta, joilla voi olla lisää tehtäviä, eli kaikkia tehtäviä ei ole linkitetty materiaaliin.

# video2018Luento1

Jos haluat lukea vain tiettyä teoriaosion materiaalia, niin voit valita sen esimerkiksi alta.

Tällä sivulla on kaikki teoriaosiot yhdellä sivulla.

Teoria 1

Teoria 1 osion osaamistavoitteina on ymmärtää perusteet Internetin rakenteesta, palveluista, arkkitehtuureista sekä yleisimmistä sovellusprotokollista. Osaamistavoitteena on myös ymmärtää alkeet tietoverkkoihin liittyvistä tietoturvasta sekä saada katsaus Internetin historiaan.

# video2019Luento1
# video2018Luento1

Internet

# video2019Luento1d
# v2018L1_6

Tietoverkkoja käytetään nykyään suurimpaan osaan tiedonsiirrosta. Tämän materiaalin avulla opitaan tietoverkkojen toiminnasta ja toteutuksesta käyttämällä esimerkkinä Internet-verkkoa. Tietoverkko koostuu laitteista, jotka kommunikoivat toistensa kanssa. Internet puolestaan koostuu tietoverkoista, joissa sijaitsevat laitteet kykenevät kommunikoimaan toisten laitteiden kanssa, vaikka ne sijaitsevat toisessa verkossa, riippumatta siitä kuinka monen verkon kautta kommunikaatio kulkee.

Tässä materiaalissa Internet kirjoitetaan isolla alkukirjaimella, kun tarkoitetaan koko maailman kattavaa Internetiä. Suomen kielessä suositus on että Internet voidaan nykyään kirjoittaa pienellä tai isolla alkukirjaimella, kun aiemmin suositus oli kirjoittaa Internet isolla alkukirjaimella. Toisaalta jos Internet sanaa käytetään tässä materiaalissa yhdyssanoissa, kirjoitetaan internetsana silloin pienellä alkukirjaimella. Typoja luultavasti löytyy, myös muistakin sanoista kaikkialta materiaalista, niistä voi jättää kommentin, niin tulee korjattua.

Internet kirjoitettiin isolla alkukirjaimella alkujaan sen vuoksi, että voitiin erottaa toisistaan maailmanlaajuinen verkko (Internet) sekä mikä tahansa yhteen kytketty verkko (interconnected network - internet) tai oman verkon (intranet) ulkopuolinen verkko (internet). Internetin kehittämisestä vastanneet henkilöt ja organisaatiot ovat pääosin käyttäneet isoa alkukirjainta Internetiin liittyvässä dokumentaatiossa.

Tänä päivänä, aiemmin pienellä kirjoitetuille, internetin määritteille ei juuri ole tarvetta ja pienellä kirjoitettu internet tarkoittaa aina käytännössä maailmanlaajuista Internetiä. Maailmanlaajuisesti pientä ja isoa kirjainta käytetään suurin piirtein saman verran, kuitenkin englanninkielisissä teksteissä Amerikassa käytetään pääasiassa isolla kirjoitettua versiota Internet ja Isossa-Britanniassa pääasiassa pienellä kirjoitettua versiota internet.

# videoJohdanto13

Internetiä voi havainnollistaa visuaalisesti lukemattomin eri keinoin. Alla on linkki sivulle, jossa Internetiä havainnollistetaan useilla erilaisilla karoilla.

Internet - tekninen näkökulma

Eräs esimerkki tietoverkosta on lähiverkko (eng. Local Area Network - LAN). Lähiverkko voidaan muodostaa yhdistämällä useampi laite siten että ne pystyvät kommunikoimaan toistensa kanssa. Käytännössä yhdistäminen tehdään kytkemällä laitteet Ethernet kaapelilla kytkimeen. Kytkin on siis laite jolla voidaan yhdistää useampi kuin kaksi laitetta samaan verkkoon. Langattomissa lähiverkoissa laitteet yhdistetään tukiasemaan ja 'yhdistäminen' tapahtuu käyttämällä samaa radiotaajuutta sekä verkon tunnuksen avulla.

Sen lisäksi että laitteilla on joko langallinen tai langaton yhteys toisiinsa ja verkkoon, täytyy niiden ymmärtää toisiaan, jotta ne voivat kommunikoida. Tämä ymmärrys laitteiden välillä toteutetaan protokollilla, jotka määrittelevät säännöt kommunikaatiolle. Säännöt määrittelevät esim. käytetyt viestit, niiden tarkoituksen ja sisällön sekä kuinka kommunikaatio aloitetaan ja miten viesteihin vastataan.

Isompia verkkoja voidaan muodostaa yhdistämällä lähiverkkoja toisiinsa. Kahden tai useamman lähiverkon yhdistäminen toteutetaan reitittimellä. Reititin on laite joka osaa välittää kommunikaatiota verkkojen välillä.

Kommunikaatiota varten verkon laitteet tarvitsevat osoitteen, joka kertoo laitteiden sijainnin verkossa sekä yksilöi laitteen (omassa) verkossaan. Lähiverkossa sijaitseva laite tietää oman lähiverkkonsa osoiteavaruuden ja kykenee selvittämään samassa lähiverkossa sijaitsevien laitteiden osoitteet. Kun osoite sijaitsee jossain toisessa verkossa, niin laitteeseen pitää olla määritetty oletusreitti (oletusreititin), jonka kautta voidaan kommunikoida muissa verkoissa olevien laitteiden kanssa. Reititin tietää tarkasti joidenkin osoitteiden sijainnin ja lisäksi reitittimellä on oletusreitti, jonka kautta saavutetaan toisia reitittimiä, jotka sitten tietävät sijainteja osoitteille, joista kyseisellä reitittimellä ei ole tarkkaa sijaintitietoa.

Tietoverkko ja sen osat

Tietoverkko koostuu yhteen kytketyistä laitteista. Tietoverkkojen alkuaikoina verkkoon kytketyt laitteet olivat pääasiassa keskustietokoneita ja niihin yhteydessä olevia yksinkertaisia päätelaitteita sekä myöhemmin palvelinkoneita ja niiltä palveluita pyytäviä tietokoneita. Tämän vuoksi tietoverkosta käytetään englannin kielessä nimitystä computer network, eli tietokoneverkko. Nykyään tietoverkkoon on kytketty paljon muitakin laitteita kuin tietokoneita. Tietoverkossa on myös verkon rakenteen toteuttavia ja verkossa palveluita tarjoavia laitteita. Oheisessa kuvatehtävässä on kuvattuna muutamia verkon osia. Nykyään monia verkontoimintoja voi olla yhdistettynä yhteen fyysiseen laitteeseen tai yksi verkon palvelu voi olla hajautettuna usean fyysisen laitteen ylläpidettäväksi. Tyypillisesti laitteiden yhteen kytkeminen tehdään joko langallisesti jollain tiedonsiirtokaapelilla tai langattomasti radioaaltojen avulla.

# video2019Luento1e
# v2018L1_7
# t1a
# videoJohdanto6

Palvelin ja asiakas tietoverkossa

# video2019Luento1f
# v2018L1_8

Alkujaan Internet kehittyi verkoksi, jossa jollakin verkkolaitteella sijaitsi jokin haluttu palvelu, esimerkiksi tekstitiedosto tai sähköposti- tai uutispalvelu. Näitä laitteita alettiin kutsumaan palvelimiksi. Laitteet, joilla palveluita haettiin, kykenivät käytännössä vain ottamaan etäyhteyden palvelimeen. Käytännössä ne koostuivat näyttöpäätteestä ja näppäimistöstä sekä verkkoyhteydestä. Näitä laitteita alettiin kutsumaan asiakkaiksi, niitä ei voinut käyttää muuhun kuin toisten laitteiden palveluiden käyttämiseen. Nykyään asiakas ja palvelin voivat olla samanlaisia laitteita ja niiden rooli määräytyy käytettävän sovelluksen mukaisesti.

Palvelimeksi kutsutaan laitetta tai tietokoneen ohjelmistoa joka odottaa asiakkaan, myös laite tai tietokoneen ohjelmisto, palvelupyyntöjä. Palvelin vastaa asiakkaan pyyntöihin tarjoten palveluita tai resursseja. Palvelinten ja asiakkaiden täytyy käyttää yhteistä protokollaa, jotta ne ymmärtävät toisiaan, eli laitteiden lähettämät pyynnöt sekä vastaukset. Esimerkiksi WWW-palvelimet vastaavat verkkoselainten pyyntöihin molempien käyttäessä HTTP-protokollaa.

# t1b

Esimerkkejä tietoverkoissa sijaitsevista palvelimista ja niiden käyttämistä protokollista:

  • WWW-palvelin
    • palvelee asiakkaita HTTP-protokollalla
  • Sähköpostipalvelin
    • palvelee asiakkaita sähköpostiprotokollilla (SMTP, POP3, IMAP4)
  • Nimipalvelin, eli DNS-palvelin
    • palvelee asiakkaita DNS-protokollalla
  • Tiedostopalvelin
    • Internet-tiedostopalvelin: esim. FTP-protokolla
      • Tiedostojen ja ohjelmistojen siirtäminen verkkolaitteiden välillä
    • Paikallisen verkon tiedostopalvelin: esim. NFS-protokolla
      • verkkolevyt, hajautetut tiedostot
      • varmuuskopiointi
  • Tietokantapalvelin
    • Tietokantakohtaisia (esim. MySQL protocol) sekä yleisiä (ODBC) protokollia
  • Tulostuspalvelin
    • Valmistajakohtaisia protokollia
  • Välityspalvelin, eli proxy server
    • Välittää liikennettä todellisen palvelimen ja asiakkaan välillä
    • Yleisimmin välittää HTTP-liikennettä, mutta myös muitakin protokollia
  • Pelipalvelin
    • Sovelluskohtaisia protokollia
# videoJohdanto7

Tietoverkoissa asiakkaaksi kutsutaan ohjelmistoa tai laitetta joka pyytää palveluja tai resursseja palvelimelta. Yleisesti asiakkaaksi kutsutaan sitä kommunikaation osapuolta, joka aloittaa yhteydenpidon. Yleisin tietoverkoissa käytössä oleva asiakas on verkkoselain. Verkkoselain, jatkossa tässä materiaalissa usein pelkästään selain, on asiakasohjelmisto, jolla pyydetään sisältöä WWW-palvelimilta. WWW-lyhenne tulee sanoista World Wide Web joka on digitaalinen verkko Internetissä. WWW-verkossa informaatio, eli resurssit, esimerkiksi teksti, kuvat, videot tai pelit, sijaitsevat WWW-palvelimilla.

Sovellusten, joissa toinen kommunikaation osapuoli toimii palvelimena ja toinen asiakkaana, sanotaan toimivan asiakas-palvelin -arkkitehtuurin tai -mallin mukaan. Vertaisverkkomalli tai -arkkitehtuuri on sellainen missä molemmat kommunikoivat osapuolet toimivat sekä asiakkaana että palvelimena.

Uniform Resource Locator (URL)

Käyttäjä pääsee WWW-resursseihin käsiksi antamalla selaimelle osoitteen pyydettävään resurssiin sekä menetelmän, jolla resurssi siirretään. Käytännössä asiakkaan pyyntö toteutetaan resurssin identifioimalla URL (Uniform Resource Locator) -viitteellä. Resurssit voivat olla linkitetty toisiinsa hypertekstillä, sijaiten missä vain Internetissä. URL (Uniform Resource Locator) -viitteellä määrittelee haettavan resurssin sijainnin tietoverkossa sekä mekanismin resurssin hakemiseen.

URL on alkujaan määritelty dokumentissa Uniform Resource Locators (URL) - RFC 1738 ja se on yhden tyyppinen Uniform Resource Identifier (URI) - RFC 3986. Koska edellisessä dokumentissa määritellyt lyhenteet ovat menneet usein sekaisin, on määritelmien selventämiseksi kirjoitettu oma erillinen dokumentti URI, URL ja URN - RFC 3305. Silloin kun URI kertoo jonkin resurssin sijainnin Internetissä, on se käytännössä myös URL. URN puolestaan määrittelee digitaalisen resurssin pysyvän nimen, ilman tietoa sen sijainnista. Digitaalisen resurssin URN säilyy eikä vaihdu, vaikka resurssia ei olisi enää olemassa.

# video2019Luento1g
# v2018L1_9

Esimerkiksi RFC 3305 dokumentille on yksi URN

  • urn:ietf:rfc:3305

ja toisaalta samalle RFC 3305 dokumentille voi olla useita URL:eja

  • https://tools.ietf.org/html/rfc3305
  • https://www.ietf.org/rfc/rfc3305.txt
# videoJohdanto8

Esimerkiksi eräs URL on

http://users.jyu.fi/~arjuvi/opetus/itkp104/2018/index.html

missä http on URL-skeema (protokolla). Seuraava osa, users.jyu.fi, on verkkotunnus, missä users on palvelimen nimi ja jyu.fi on tosiasiallinen verkkotunnus (englanniksi domain). Monesti users.jyu.fi vastaavaa osaa kutsutaan joko palvelimeksi tai verkkotunnukseksi, eikä niitä erotella toisistaan. Jyväskylän yliopiston verkkotunnus, eli domain, on siis jyu.fi ja yliopistolla on useita palvelimia, joilla on eri verkkotunnukset, esimerkiksi users.jyu.fi, www.jyu.fi tai tim.jyu.fi. Verkkotunnuksen avulla DNS-palvelu kertoo laitteen sijainnin verkossa, käytännössä DNS antaa palvelinta vastaavan IP-osoitteen. Loppuosa, ~arjuvi/opetus/itkp104/2018/index.html, on pyydetty resurssi, objekti, jota palvelimelta haetaan, eli sen hakemistopolku ja lopuksi tiedostonimi. Tiedostonimessä ei välttämättä ole tiedostopäätettä, eli pistettä ja sen jälkeistä osaa (edellä .html), kuten esimerkiksi tämän materiaalin URL:issa https://tim.jyu.fi/view/kurssit/tie/itkp104/2021/materiaali. Monesti tiedoston nimi voi puuttua, eli esimerkiksi index.html voidaan jättää pois. Tällöin palvelin lähettää palvelimeen määritellyn oletusresurssi -nimisen tiedoston, jos sellainen on olemassa viitatussa hakemistossa.

# t1c

Tehtävä ei ilmeisesti toimi, sillä yksi kohta jää aina "tunnistamatta". Tämän takia ei voi saada täysiä pisteitä.

av: tehtävässä pitää raahata myös URL:in osat paikalleen, ei pelkästään niiden kuvauksia

12 Dec 21 (edited 17 Dec 21)
# t1g

av: Tehtäväkohdat (g) - (j) lisätty 14.3.2022 ja linkitetty materiaalin URL kohtaan

14 Mar 22
# t1h
# t1i

URL:issa voi olla skeeman, verkkotunnuksen sekä polun lisäksi muitakin osia, kuten porttinumero tai kyselyosio. Ne erotetaan muista osista omilla merkeillään.

# t1j
# v2018L2_3

Reititin tietoverkoissa

# video2018Luento2

Reitittimeksi kutsutaan tämän päivän Internetissä laitteita, jotka ovat tietoverkkojen solmukohdissa. Reititin mahdollistaa eri verkkojen yhdistämisen, eli käytännössä tiedon siirtämisen, eri verkkojen välillä. Internet perustuu pakettikytkettyyn verkkoteknologiaan, missä siirrettävä tieto jaetaan pienemmiksi paloiksi, joita kutsutaan paketeiksi. Paketit välitetään verkon läpi yksitellen lähettäjältä vastaanottajalle. Reitittimien tehtävä on määritellä reitit verkkojen läpi ja välittää vastaanottamansa paketit oikeille reiteille. Reitittimet muodostavat itselleen reititystaulun, englanniksi routing table, tai toiselta nimeltään, välitystaulun, englanniksi forwarding table, johon päivitetään tietyin väliajoin reitit muihin verkkoihin. Kun reititin vastaanottaa paketin, välittää se sen uudelle reitille välitystaulun informaation mukaan. Reitit eivät ole kiinteitä ja voivat olla erilaisia pilkotun datan eri paketeille. Reititin toimii siis kahden tai useamman verkon solmukohdassa.

# video2019Luento1h
# v2018L2_4
# v2018L2_5
# t1d

Lisää vastaavia tehtäviä on kurssin Teoria 1 tehtävät sivulla. Kaikkia tehtäviä ei linkitetä materiaalin sekaan.

Reitittimen on yleensä yhdistetty muitakin verkon toimintoja, kuten esimerkiksi kytkin, tukiasema tai palomuuri. Kytkimen avulla reititinlaitteeseen voidaan suoraan yhdistää useita yksittäisiä laitteita. Tukiasema puolestaan toimii langattomana kytkimenä, mahdollistaen langattomien laitteiden yhdistämisen reititinlaitteeseen. Palomuuri on tietoturvajärjestelmä haitallisen verkkoliikenteen estämiseksi. Palomuuriin voidaan asettaa säännöt siitä miten kontrolloidaan sisään tulevaa ja uloslähtevää liikennettä.

# videoJohdanto9

Paketit Internetissä

# video2019Luento1i
# v2018L2_6
Mikä on paketti?

Tietoverkoissa, kuten internet, paketti on pieni osa suurempaa verkossa välitettävää viestiä. Kaikki internetissä lähetettävä tieto jaetaan pienempiin osiin, joita kutsutaan paketeiksi, englanniksi packet. Paketti on lyhempänä sanana yleistynyt tarkemmasta muodosta verkkopaketti, englanniksi network packet. Datan pilkkominen paketteihin tehdään lähettävässä laitteessa ja kasaaminen takaisin alkuperäistä vastaavaksi dataksi vastaanottavassa laitteessa sen jälkeen kun paketit ovat kulkeneet internetissä laitteelta toiselle.

Miksi käytetään paketteja?

Dataa voitaisiin lähettää ilman sen pilkkomista pienemmiksi paloiksi, mutta se haittaisi internetsovelluksia, joiden data on lähtökohtaisesti pienikokoista. Jos oletetaan, että lähetettäisiin vaikka monen tunnin videotiedosto yhtenä kokonaisuutena, niin se aiheuttaisi sen, että videon lähetyksen aikana ei voida siirtää mitään muuta dataa. Esimerkiksi sähköpostiviesti, joutuisi odottamaan, että koko video on siirretty, ennen kuin verkon linkillä olisi vapaata. Pilkkomalla kaikki pienemmiksi paloiksi, voidaan sähköpostipaketit välittää videopakettien lomassa, kummankaan suuremmin kärsimättä. Toki mitä enemmän on eri sovellusten dataa siirrettävänä samanaikaisesti, niin sitä enemmän verkon ruuhka, englanniksi congestion, hidastaa kaikkien tiedonsiirtoa. Pakettien käyttämisellä saadaan tasapuolistettua verkon käyttöä. Internet on niin kutsuttu pakettikytketty verkko, englanniksi packet switched network, jossa paketit välitetään verkossa riippumatta toisista saman datan paketeista. Verkko, jossa dataa ei pilkota osiin, olisi nimeltään viestikytketty verkko, englanniksi message switched network. Perinteinen lankapuhelinverkko on puolestaan piirikytketty verkko, englanniksi circuit switched network.

Minne ja miten paketti välitetään?

Paketti koostuu lähetettävän datan osasta, niin sanotusta paketin hyötykuormasta, englanniksi payload sekä paketin otsikosta, englanniksi header. Paketin otsikkotiedoissa määritellään esimerkiksi paketin lähettäjä ja vastaanottaja sekä tietoa siitä mitä dataosaa hyötykuormassa välitetään ja mikä on sen paikka alkuperäisessä datassa. Koska paketit eivät riipu toisistaan internetissä kulkiessa, täytyy jokaiseen pakettiin lisätä otsikkotiedot. Jos paketointia ei käytettäisi, niin riittäisi ne määritellä kerran viestin alussa. Otsikkotiedot määräytyvät sen mukaisesti mitä protokollaa paketin välittämiseen käytetään. Internetissä on eri protokollia esimerkiksi sille, ollaanko pakettia siirtämässä yhden linkin läpi verkkolaitteelta toiselle, useamman verkon läpi tai lopulta välittämässä pakettia vastaanottavalle sovellukselle. Otsikkotietojen avulla paketit saadaan lähettävältä sovellukselta vastaanottavalle sovellukselle riippumatta niiden välissä olevasta verkon toteutuksesta.

  • Mikä on paketti?
    • Paketti koostuu digitalisoidusta informaatiosta
      • Digitalisoinnissa informaatio muunnetaan biteiksi
      • Informaatio, bitit, jaetaan pienemmiksi kokonaisuuksiksi tiedonsiirtoa varten
      • Paketti on joukko bittejä, jotka lähetetään peräkkäin
        • Paketoinnissa bittijoukko kehystetään otsikkotiedoilla
        • Protokollat määrittävät bittien lukumäärän ja sisällön, alun ja lopun
      • Esimerkiksi kuvan sisältämä informaatio pilkotaan pieniin osiin,
        • jotka paketoidaan
          • eli kehystetään lisäämällä datan ympärille osoitetiedot
          • ja lähetetään jokainen paketti erikseen verkon läpi

Tietoverkkojen tiedonsiirtolinkit

Tietoverkossa laitteiden välinen tiedon siirtäminen tapahtuu tiedonsiirtolinkkien avulla. Tiedonsiirtolinkki voi olla joko langaton tai langallinen. Tiedonsiirtolinkeillä siirrettävät paketit sisältävät verkkosovellusten lähettämää digitaalista tietoa. Käytännössä paketit koostuvat biteistä, jotka ryhmitellään yleensä kahdeksan bitin joukoiksi, tavuiksi.

Tiedonsiirtolinkillä on tiedonsiirtonopeus, bittinopeus, josta usein käytetään nimitystä kaistanleveys, tai puhekielessä kaista. Tiedonsiirtonopeus kuvaa linkin kapasiteettia siirtää bittejä aikayksikköä kohden. Tiedonsiirtonopeuden yksiköksi on määritelty bittiä sekunnissa, bit/s. Myös kaistanleveyden yksikkönä on bit/s, kun sillä tarkoitetaan tiedonsiirtonopeutta. Kaistanleveyden määritys riippuu siitä, missä yhteydessä se on määritelty, esimerkkinä digitaalinen tiedonsiirto, radiotaajuinen tiedonsiirto tai elektroniikka.

Bitit ja tavut

# video2019Luento2
# video2019Luento2a
# v2018L2_7
# videoJohdanto26

Binäärijärjestelmässä, eli 2-järjestelmässä, on kaksi eri arvoa, näiden merkintöinä käytetään merkkejä 0 ja 1, eli kaksi ensimmäistä merkkiä 10-lukujärjestelmän ei-negatiivisista kokonaisluvuista. Merkit 0 ja 1 ovat binäärijärjestelmän numeroita, englanniksi binary digits, ja niitä kutsutaan lyhyesti termillä bitti, englanniksi bit. Kun biteistä muodostetaan useamman bitin kokonaisuuksia, niitä kutsutaan binääriluvuiksi. Kahdeksan bitin binääriluvulle on määritelty oma termi ja kahdeksan bitin binäärilukua kutsutaan tavuksi, englanniksi byte. Jotta mitä tahansa informaatiota voidaan tallentaa 2-järjestelmän lukuna, on sovittava säännöt informaation muuttamiseksi binäärijärjestelmään.

# video2019Luento1n
# video2018Luento1j
# video2017TRA12
# video2017TRA12

Koska 2-järjestelmässä on vain kaksi erilaista vaihtoehtoa symboliksi, täytyy esimerkiksi numeroiden ja kirjainten esittämiseen varata useita bittejä. Kun laitetaan kaksi bittiä peräkkäin, saadaan niistä neljä eri kombinaatiota 00, 01, 10 ja 11. Eli kahdella bitillä voidaan esittää neljä eri vaihtoehtoa. Yleisesti :llä bitillä voidaan esittää erilaista binäärilukua. Täten esimerkiksi kahdeksalla bitillä voidaan esittää eri kombinaatiota, ja jos niillä esitetään ei-negatiivisia kokonaislukuja, voidaan kahdeksalla bitillä esittää numerot välillä 0 - 255.

# video2018Luento1k
# video2017TRA13

Esimerkki. Kuinka monta bittiä tarvitaan kaikkien välillä 0 - 999 olevien kokonaislukujen esittämiseen?

Kyseessä on siis binäärilukujärjestelmän kantaluvun 2 korottaminen potenssiin , eli potenssifunktio. Potenssifunktion käänteisfunktio on logaritmifunktio, tässä tapauksessa siis 2-kantainen logaritmifunktio. Jotta saadaan ratkaistua, otetaan yhtälön molemmista puolista 2-kantainen logaritmi

ja yhtälön vasemmalla puolella käänteisfunktioiden kumotessa toisensa saadaan

Vastaukseksi ei saatu kokonaislukua, nyt vastausta lähimmät kokonaisluvut antavat , mikä ei riitä lukujen 0 - 999 esittämiseen, ja , mikä puolestaan riittää. Eli lukujen 0 - 999 esittämiseen tarvitaan kymmenen bittiä, mutta osa bittikombinaatioista jää käyttämättä.

Yleisesti, jos meillä on erilaista elementtiä, niiden esittämiseen tarvittava minimi bittien lukumäärä on pienin kokonaisluku , siten että .

Tavu

# video2018Luento1m
# video2019Luento2a

Tietokonejärjestelmissä tiedon esityksen perusyksikkö on bitti, binäärinen numero. Tavallinen nimitys 8 bitin ryhmälle on tavu, englanniksi byte, joskus käytetään myös termiä oktetti, englanniksi octet. Muun kokoisille bittiryhmille on myös nimityksiä, mutta ne eivät ole vakiintuneet ja esimerkiksi termiä sana käytetään ja on käytetty usean eri kokoisen bittiryhmän nimityksenä. Neljän bitin ryhmää kutsutaan puolitavuksi, englannin kielessä käytetään termiä nibble tai harvemmin nybble, missä y-kirjainta on käytetty linkittämään termi tavun englannin kieliseen sanaan byte.

16-bittinen sana, tavu, puolitavu (nibble), bitti, MSB ja LSB
16-bittinen sana, tavu, puolitavu (nibble), bitti, MSB ja LSB
# video2019Luento2d
# video2018Luento1p

Tietokoneiden käyttäessä tiedon esittämiseen bittejä, käytetään niiden yhteydessä mittayksikkönä usein numeron 2 potensseja ja nimenomaan sellaisia numeron 2 potensseja, jotka ovat lähellä jotain numeron 10 potenssia, kuten esimerkiksi

  • 210 = 1024,
  • 220 = 1 048 576 ja
  • 230 = 1 073 741 824.

Koska 210 = 1024, joka on lähellä arvoa 103 = 1000, niin molemmista käytetään termiä kilo, josta käytetään merkintää k, kun kyseessä on 1000 ja merkintää K, kun kyseessä on 1024. Sekaannusta voi aiheuttaa myös se onko yksikkönä bitti (bit) vai tavu (byte), joka on 8 bittiä. Näistä käytetään merkintää b, kun tarkoitetaan bittiä ja merkintää B, kun tarkoitetaan tavua. Sekaannusten välttämiseksi nimityksiä on standardoitu (ISO/IEC 80000) siten, että kun kyseessä on binäärinen eli kakkosen potenssi, niin symboliin lisätään i. Esimerkiksi 210 on nimeltään kibi eli kilobinary ja siitä käytetään merkintää Ki. Alla on taulukoitu SI-järjestelmän ja IEC:n standardin mukaiset etuliitteet biteille sekä tavuille.

Value SI Value IEC
1000 k kilo 1024 (210) Ki kibi
10002 M mega 10242 (220) Mi mebi
10003 G giga 10243 (230) Gi gibi
10004 T tera 10244 (240) Ti tebi
10005 P peta 10245 (250) Pi pebi
10006 E exa 10246 (260) Ei exbi
10007 Z zetta 10247 (270) Zi zebi
10008 Y yotta 10248 (280) Yi yobi
# video2017TRA20

Tiedonsiirrossa käytetään yksikkönä bittiä sekunnissa, bit/s tai bps, sekä etuliitteinä SI-järjestelmän mukaisia etuliitteitä. Esimerkiksi 1 Gbit/s nopeudella toimiva Ethernet verkkokortti siirtää siis 1 000 000 000 bittiä sekunnissa. Huomioitavaa on se, että yleensä tietoliikenteessä tiedonsiirtonopeus ilmaistaan bittien tiedonsiirtonopeutena, kun taas siirrettävä data yleensä ilmaistaan tavuina. Toisaalta esimerkiksi kiintolevylle kirjoituksen ja lukemisen tiedonsiirtonopeus ilmaistaan esimerkiksi Windows käyttöjärjestelmässä tavuina sekunnissa. Koska 1 tavu on 8 bittiä, on esimerkiksi 1 Gbit/s = 125 MB/s = 125 000 000 tavua sekunnissa. Kun tiedonsiirtonopeuden yksikkönä on tavua sekunnissa, niin tavun lyhenteenä käytetään isoa B kirjainta. Pientä b kirjainta ei tulisi käyttää kuvaamaan bittiä, tosin joskus näkee käytettävän esim. termiä Mb/s, joka ei ole virallinen termi ja voi aiheuttaa sekaannusta siitä onko kyseessä Mbit/s vai MB/s.

Moi Ari, mielenkiinnosta konvertoin gigabitit megatavuiksi oheisen ilmaisen sivun kautta (https://convertlive.com/fi/u/muuntaa/gigabitti%C3%A4/muunna/megatavua#1) ja mietin, että miksiköhän laskee 1 Gbit 128 Megatavuksi?

av: oletan, että jokin virhe toteutuksessa, ehkä mennyt sekaisin eri yksiköt

21 Dec 21 (edited 22 Dec 21)
# video2017TRA23

Koska tiedonsiirrossa ja tiedon tallentamisessa käytetään eri lukujärjestelmiin pohjautuvia mittayksiköitä sekä niiden etuliitteitä, joilla ilmaistaan suuruusluokkia, on joskus hankala hahmottaa etuliitteellisen ja etuliitteettömän lukuarvon välistä suuruusjärjestystä.

Seuraavissa tehtävissä tutkitaan eri tavoin esitettyjen tiedostokokojen sekä tiedonsiirtonopeuksien arvojen suuruusjärjestyksiä.

# t2a
# t2b

Bitit tallentavat ja kuljettavat kaikkea digitaalista tietoa. Se mitä jokin bittijoukko "tarkoittaa" riippuu siitä miten ja mitä informaatiota bitteihin on tallennettu. Informaatio koodataan (tai joskus käytetään termiä enkoodataan) binääriseksi ja bitit palautetaan takaisin informaatioksi dekoodaamalla. Koodausmenetelmiä on esimerkiksi

Jokainen edellä mainittu koodausluokka pitää sisällään useita erilaisia määrityksiä informaation koodaamiselle. Eri merkistökoodausmenetelmien käyttö aiheuttaa tänäkin päivänä yhteensopivuusongelmia esimerkiksi skandinaavisten merkkien käytössä.

Lisäksi tiedonsiirtoprotokollat usein lähettävät sovelluksilla tallennettuja tiedostoja siinä muodossa, kuin missä ne on tallennettu. Tällöin tiedostoissa on yleensä jokin binäärinen tunniste, josta voidaan tulkita tiedostoformaatti.

Informaation koodaus tai tallennettu tiedosto voi pitää sisällään informaation pakkaamista pienempään määrään bittejä. Informaatio koodataan tällöin lisäksi jollain tiedonpakkaus-menetelmällä.

Alla on Javascript-työkalu, jolla voit tutkia erään yksinkertaisen merkistökoodauksen, ASCII-koodauksen merkkejä vastaavia binäärilukuja. Binääriluvut on esitetty myös 10-järjestelmän kokonaislukuina sekä heksadesimaalilukuina. Anna jokin kokonaisluku väliltä 0-127. Jos kokonaisluvun binääriesitystä vastaava ASCII-merkki ei ole tulostuva merkki, tulee ASCII-merkki laatikkoon neliö tai tyhjä riippuen verkkoselaimesta. Muutoin tulostuu binäärilukua vastaava ASCII-merkistökoodauksen merkki. Muuntimeen ei voi asettaa ASCII-merkkiä, vain lukuja. Voit "selata" lukuja ja ASCII-merkkejä lisäämällä tai vähentämällä luvun arvoa.

ASCII-merkistökoodausmenetelmässä merkit koodataan seitsemällä bitillä, koska käytännössä melkein aina käsitellään bittejä käsitellään 8-bitin tavuina, lisätään tällöin kahdeksanneksi bitiksi, kaikkein vasemmanpuoleiseksi, bitti 0.

Entä jos vasemmanpuoleinen bitti on 1? Tällöin kyseessä ei ole ASCII-merkistökoodauksen mukainen binääriluku. Javascript ei käytä ASCII-merkistökoodausta, vaan UTF-16 merkistökoodausta. Voit kokeilla binäärimuuntimeen myös arvoja 128-255, muuntimen koodi käyttää niitä ns. koodipisteen arvoina ja antaa koodipistettä vastaavan merkin. Esimerkiksi luku 228 antaa kirjaimen ä. Huomaa että, esitetyt binääriluvut eivät ole UTF-16 merkistökoodausta vastaavia binäärilukuja, vaan binääriluvut ovat kokonaislukua vastaavia arvoja.

Merkistökoodausmenetelmistä sekä koodipisteen määrittelystä löytyy lisää informaatiota esimerkiksi vuoden 2020 TIEP114 Tietokoneen rakenne ja arkkitehtuuri kurssin materiaalista.

Selvitä seuraaviin tehtäviin binäärilukuja vastaavat ASCII-merkit sekä ASCII-merkkejä vastaavat binääriluvut. Lisää 7-bittisen binääriluvun vasemmanpuoleiseksi bitiksi bitti 0. Tällöin laajennetut 8-bittiset ASCII-merkit vastaavat UTF-8 merkistökoodauksen merkkejä. Tarkistin toimii myös ASCII-merkeille, vaikka se on tehty UTF-8 merkkien testaamiseen. Täten, jos vastauksessa binääriluku on väärin, tarkistin käyttää merkistökoodauksesta nimeä UTF-8 eikä ASCII.

# t2c

av: Tehtävissä 2(c) ja 2(d) oli bugi, joka pyysi ilmoittamaan viasta opettajalle. Ilmoittaa voi sähköpostilla tai jättämällä kommentin kyseisen tehtävän kohdalle.
Kannattaa aina ilmoittaa vika, jos tarkistin sitä pyytää. Lisäksi, jos tuntuu ettei oma vastaus kelpaa, vaikka pitäisi, niin voi kysyä vinkkiä ja pyytää tarkistimen tarkastusta.

17 Mar 21
# t2d
# t2e
# t2f

Tietoverkkojen tekninen näkökulma visuaalisesti

Kartta Internetistä
Kartta Internetistä
# video2019Luento2b
# v2018L2_8
# videoJohdanto21

Internet - hallintanäkökulma

Internetin hallinta ei ole millään yksittäisellä organisaatiolla tai valtiolla. Internet koostuu sadoistatuhansista verkoista, joita hallitsevat verkkojen omistajat. Kuitenkin, jotta eri verkkojen välinen kommunikaatio olisi mahdollista, on täytynyt sopia yhteisistä säännöistä. Kuten esimerkiksi siitä, miten eri verkoissa sijaitsevat laitteet ymmärtävät kommunikoidessa toisiaan ja miten laitteet löytävät toisensa kommunikaatiota varten. Internetin alkuaikoina sen hallinta oli lähinnä yhdysvaltalaisilla organisaatioilla sekä yksittäisillä henkilöillä, koska Yhdysvalloissa olivat ensimmäiset verkot, joista Internet on kehittynyt. Ajan myötä hallintaa on siirretty kansainvälisille organisaatioille.

Internetin organisaatioissa ei ole tarkkaan määritettyä hierarkiaa. Organisaatioiden välillä on jonkinlaista hierarkiaa, lähinnä siten että jokin organisaatio ohjaa tai valtuuttaa jonkin toisen organisaation toimintaa. Esimerkiksi ICANN ohjaa IANA:an toimintaa ja antaa sille valtuudet jakaa IP osoitteita alueellisille rekistereille, englanniksi Regional Internet Registries (RIR). Englannin kielessä käytetään verbiä charter, jonka olen tässä tulkinnut suomen kieleen käsitteiksi ohjata ja valtuuttaa. Materiaalissa alla käytetään ohjata-verbiä kuvaamaan englannin kielistä charter-verbiä.

# video2019Luento2c
# v2018L2_9

Alla on listattu joitain Internetin hallintaan liittyviä organisaatioita, sekä lyhyesti niiden tärkeimpiä tehtäviä.

  • ICANN (Internet Corporation for Assigned Names and Numbers)
    • Ohjaa IANA (Internet Assigned Numbers Authority):ta
    • IANA on ICANNin edeltäjä, joka tänä päivänä käytännössä hallinnoi ICANN:in vastuulla olevia tehtäviä
    • IANA hallinnoi sitä miten Internetin laitteet löytävät toisensa
      • Internetin osoitteet (IP)
        • jakaa Internetosoitelohkoja aluellisille Internet rekistereille (RIR)
          • RIR:it jakaa osoitteita eteenpäin internetoperaattoreille
          • RIR:it muodostavat ICANN:in alaisen Address Supporting Organization (ASO):n
      • Hallinnoi Internetin ylätason verkkotunnukset, kuten .fi tai .helsinki
      • Hallinnoi ASN numeroita
      • Hallinnoi protokollanumeroita
  • IAB (Internet Architecture Board)
    • Kattojärjestö organisaatioille, jotka hallinnoivat Internetin teknistä kehitystä sekä dokumentointia ja standardointia, eli sitä miten Internetissä kommunikoidaan
  • IGF (Internet Governance Forum)
    • Keskustelufoorumi Internetin hallintaan liittyviin asioihin
  • ISOC (Internet Society)
    • Tavoitteena taata Internetin avoimuus, niin kehityksen, evoluution kuin käytön osalta
  • W3C (World Wide Web Consortium)
    • Internetin WWW-osan standardointiorganisaatio

Moi Ari, lueskelin läpi Internetin hallintanäkökulmaa ja pohdin tuon ISOC:n roolia Internetin avoimuuden kehityksen, evoluution ja käytön kannalta, että organisaatio on varmaankin aika hampaaton sen osalta, mitä autoritääriset valtiot Internetin suhteen toimivat? ISOC on Yhdysvaltalainen non-profit organisaatio, jonka pyrkimys on hyvää tarkoittava, mutta esim. Puola, Unkari, Venäjä, Kiina ym. autoritääriset maat toimivat - rajoittavat, sulkevat, estävät tiedonkulkua ja -saatavuutta ja käsittääkseni Venäjänkin pystynyt jo testaamaan, miten saavat koko maan irti Internetistä, jos on välitön vieraan valtion kyberuhka tms. Tämä ei ole mikään kysymys, paremminkin pohdiskelua siitä, että periaatteessa Internet on kaikkien käytettävissä, kaapelit menevät siellä missä menevät, mutta käytännössä kansalliset rajat, lait ym. rajoittavat huomattavasti käyttömahdollisuuksia. Toinen mielenkiintoinen havainto oli, kun katsoin tuota Global Internet karttaa, niin Afrikan osuus - onkohan tuo vuosittainen keskimääräinen kaistan utilisaatio mitataan Gbps eikä Teroissa, kuten muualla. Sielläkin 80% kansainvälisestä Internet-liikenteestä on kytketty kaupunkeihin maan ulkopuolella.

av: Hyvää pohdintaa :) juurin noin

19 Oct 21 (edited 20 Oct 21)
Kuka hallitsee Internettiä?
Kuka hallitsee Internettiä?
"Fortunately, nobody owns the Internet, there is no centralized control, and nobody can turn it off. Its evolution depends on rough consensus about technical proposals, and on running code. Engineering feed-back from real implementations is more important than any architectural principles."

— B.Carpenter, RFC 1958, page 3

# videoJohdanto16

Request for Comments (RFC)

# video2019Luento2d
# v2018L2_10

RFC-dokumentit saivat alkunsa 1969, kun Internetin edeltäjän ARPANET:in toteutuksesta ja kehityksestä aloitettiin ylläpitämään muistioita. Muistioissa käsitellään tietoverkoissa tapahtuvaa tiedonsiirtoa useista näkökulmista. RFC:t keskittyvät pääosin tietoverkkojen teknisiin ominaisuuksiin, protokolliin ja ohjelmiin, niiden toimintaan ja toteutukseen. RFC:t sisältävät myös Internetin kehitykseen liittyviä muistioita tapaamisista, mielipiteitä sekä humoristisia dokumentteja.

  • Teknisiä ja muunlaisia muistioita Internetistä
    • Protokollien määrityksiä
    • Verkkosovellusten toteutuksesta
    • Mielipiteitä ja huumoria
  • Kaikki RFC:t eivät ole standardeja! RFC 1796
  • Internet standardien standardointiprosessi on kuvattu RFC 2026 dokumentissa.
  • Kuka tahansa voi ehdottaa muistiota RFC dokumentiksi - RFC 2223
  • Lista kaikista RFC-dokumenteista
# videoJohdanto18
Request for Comments (RFC) - Status
# video2019Luento2e
# v2018L2_11
# videoJohdanto20
Request for Comments (RFC) - Esimerkkejä
  • Internet Standard - RFC 3629
    • UTF-8, merkistökoodaus jota Internetissä tulisi käyttää
  • Proposed Standard - RFC 5246
    • TLS 1.2, jolla salataan esim. WWW-liikennettä
  • Draft Standard - RFC 4271
    • BGP, operaattoreiden välinen protokolla Internetin reittien selvittämiseksi
  • Best Current Practice - RFC 2119
    • RFC dokumenteissa käytettävät avainsanat
  • Informational - RFC 2324
    • Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)
  • Informational - RFC 2468
    • "A long time ago, in a network, far far away, a great adventure took place!"
  • Experimental - RFC 1149
    • Standard for the transmission of IP datagrams on avian carriers
  • Historic - RFC 5000
    • Internet Official Protocol Standards

RFC dokumentteja on tuhansia ja uusia julkaistaan jatkuvasti. Tässä materiaalissa on useita tehtäviä, joissa pitää etsiä RFC dokumentin numero. RFC dokumenteista löytää määritykset sekä käytänteet useaan tietoverkkoja koskevaan aiheeseen.

RFC Editor on eräs internetsivusto, jossa ylläpidetään tietoa RFC dokumenteista. Sivustolta löytyy esimerkiksi ohje https://www.rfc-editor.org/in-notes/rfc-ref.txt siihen kuinka RFC dokumentteihin suositellaan viitattavan esimerkiksi opinnäytetöissä sekä tieteellisissä artikkeleissa.

Tällä kurssilla RFC dokumenttien numeroita ei tarvitse osata ulkoa. RFC dokumenttien etsintätehtävien on tarkoitus tutustuttaa RFC dokumentointijärjestelmään ja siihen että hyvin paljon Internetin toiminnasta on julkisesti määriteltyä.

# video2019Luento2f
# t2g

RFC dokumentteja tehdään myös huumorimielellä. Korostetaan sitä, koska samalla korostuu se, asia että kaikki RFC dokumentit eivät ole Internet standardeja.

# t2h

Vaikka kehitys kulkee eteenpäin, asioita parannetaan tai muutetaan tai päivitetään, ei jo julkaistua RFC dokumenttia koskaan muuteta. Esimerkiksi sen vuoksi voi RFC dokumenteilla olla samoja nimiä. Dokumentin numero kuitenkin kertoo muutoksesta ja yleensä RFC dokumentin julkaisutiedoissa kerrotaan, onko dokumentti vanhentunut tai vanhentaako se jonkin toisen dokumentin. Vanhentaminen ei tarvitse tapahtua samannimisellä dokumentilla.

# t2i

Tietoverkkojen ja tietoliikenneprotokollien kanssa työtä tekevät alkavat muistamaan tiettyjä usein viitattujen RFC dokumenttien numeroita. Alla on yksi hyvin usein esiin tuleva RFC dokumentti, jossa on määritelty IP protokolla.

# t2j

Internet - palvelunäkökulma

# videoJohdanto14

Tietoverkko, eli tietoliikenneinfrastruktuuri, mahdollistaa hajautetut palvelut. Palveluntarjoaja sekä palvelua käyttävä asiakas voivat sijaita missä vaan Internetissä. Lisäksi Internet on mahdollistanut sen että periaatteessa kuka vaan voi toimia palveluntarjoajana, ja toisaalta sen ettei palvelun tarjoajaa välttämättä tunneta.

Suuri osa Internetin palveluista voidaan lokeroida tiedon tuottamiseksi ja tiedon jakamiseksi. Aiemmin tiedon tuottaminen ja jakaminen oli harvojen toimijoiden käsissä, kuten myös Internetin alkuaikoina, ja tietoa tuottivat lähinnä toimijat, jotka siirsivät aiemmin tuottamaansa informaatiota digitaaliseksi verkon kautta saatavaksi. Tänä päivänä Internetissä on lukuisia palveluita, jotka mahdollistavat yksittäisen ihmisen tuottaman tiedon jakamisen hyvin laajalle vastaanottajajoukolle.

# video2019Luento2g
# v2018L2_12

Alla joitan Internetin palveluita, visualisoituna Kartta Internetin palveluista:

  • World Wide Web (WWW)
  • Sähköposti
  • Reaaliaikaset viestintäpalvelut
  • Sosiaaliset verkostot
  • Kartta-, reitti- ja ruuhkapalvelut
  • Tallennetun sekä suoran musiikin ja videokuvan striimaus
  • Ääni- ja videopuhelut
  • Moninpelit verkossa
  • Telnet

Internetin palvelut ovat hajautettuja ja ne sijaitsevat verkon reunalla, eli asiakas- ja palvelinlaitteet ovat verkon reunoilla ja itse verkon muodostavat reitittimet ja kytkimet, jotka välittävät hajautettujen sovellusten dataa, mutta eivät ole kiinnostuneita sovellusten datan sisällöistä. Reititinten yhteydessä mahdollisesti sijaitsevat tietoturvaa parantavat ohjelmistot ja laitteet voivat tutkia myös sovellusten lähettämää dataa.

Kuinka hajautetut sovellukset sitten voivat kommunikoida mielivaltaisen verkon läpi? Internetin runko tarjoaa palvelun, jolla se kuljettaa sovellusten lähettämää dataa ja päätelaitteet verkon reunalla tarjoavat rajapinnan, jonka avulla Internettiä voi käyttää. Tämän rajapinnan nimi on sokettirajapinta, jonka päätelaitteen käyttöjärjestelmä tarjoaa. Verkkosovelluksen tekijän täytyy opetella sokettirajapinnan käyttö, jotta viestien vaihto Internetin yli on mahdollista. Käytännössä sokettirajapintaa käytetään jollain ohjelmointikielellä, mutta ensin täytyy ymmärtää sokettirajapinnan kautta saavutettavat palvelut, eli Internetin runkoverkon tarjoamat palvelut, päätelaitteissa sijaitsevat kuljetuspalvelut ja niiden toteutus.

# video2019Luento3
# video2018Luento3

Hajautetun sovelluksen, eli kahdessa tai useammassa eri laitteessa toimivan sovelluksen, voi toteuttaa erilaisilla arkkitehtuureilla tai malleilla. Alla on listattu Internetin erilaisia malleja tai arkkitehtuureita sekä infrastruktuureja, joilla palveluita tarjotaan. Listassa on myös linkit wikipedian englannin kielisiin sivuihin, joista voi halutessaan tutkia aiheita tarkemmin sekä löytää lisää lähteitä kiinnostavaan aiheeseen syventymiseen.

# v2018L3_1

Asiakas-palvelin -malli

Asiakas-palvelin -malli oli ensimmäinen palvelumalli Internetin kehittyessä, jossa yksi laite tarjoaa palvelua (palvelin) ja toinen laite (asiakas) pyytää palvelua. Yhden palvelimen palveluita voi käyttää useat eri asiakkaat, myös samaan aikaan. Esimerkkejä asiakas-palvelin -mallin mukaisista hajautetuista sovelluksista ovat esimerkiksi WWW, sähköposti, verkkolevy tai verkkotulostus. Nykyään palvelu voi lisäksi olla hajautettu useammalle fyysiselle tai virtuaaliselle palvelimelle.

# video2019Luento3a

Vertaisverkkomalli

Moi Ari, kirjoittelen taas ajatuksia ylös, toivottavasti ei häiritse. Katselin tuota Vertaisverkkomallia ja mietin sen käyttötarkoituksia ja klikkasin laittamasi linkistä englanninkieliseen sivustoon, jossa P2P verkkomalli nosti esiin sen, että mm. Windows 10 käyttää Delivery Optimization mallia yhtenä nopeuttavana tekijänä päivityksissä ja luonnollisesti kaistan säästäjänä. Katsoin työkoneeni asetuksia ja voin tässä sanoa, että tuo Optimization on päällä ja ainostaan valinnassa PS's on my local network. Tämä on ilmeisesti yleinen käytäntö yrityksissä, jossa periaatteessa kaikki omassa lokaaliverkossa olevat laitteet ovat luotettavia. LÄhtökohta tietysti on, että oma lokaaliverkko on luotettava ja siellä olevat laitteet. Mitenkähän tuo päivitysprosessi sitten toimii, jos oma PC hakee osan Microsoftilta ja osan esim. oman verkon sisältämistä muista PC:stä ja jos jossakin oman verkon koneessa on haittaohjelman pätkä, niin päivityksen yhteydessä oman kone voi saastua vai pitäisikö ajatella, että esim. HIDS / HIPS estäisi tämän vai miten tämä pitäisi ajatella? Nämä P2P verkot eivät ole kovin tuttuja minulle.

av: En ole perehtynyt Microsoftin käyttämään menetelmään. Yleisesti, jos p2p päivitys pitää päällä oman verkon laitteissa palvelimia, joilta päivtyksen osia voidaan hakea. Mikä tahansa haittaohjelma ei pääse päivityspalvelimen tai päivitysasiakkaan kautta koneeseen, vaan sen pitää olla kehitetty jotain päivitysprosessissa olevaa haavoittuvuutta käyttäen. Jos tällainen haavoittuvuus on saatu valjastettua käyttöön jossain oman verkon laitteessa, niin silloin HIDS/HPIS lienee keino suojautua haittaohjelmalta. En tiedä miten Windows päivitysprosessi sulkee eri HIDS/HIPS ratkaisuja latauksen, päivityksen ja asennuksen aikana, mutta Windowssissa pitäisi olla jonkin tasoinen oma tietoturva ratkaisu, jota olettaisin sen käyttävän.

20 Oct 21 (edited 21 Oct 21)

Vertaisverkkomallissa hajautettua sovellusta käyttävät laitteet eivät ole jaoteltu palvelun tarjoajiin ja palvelun käyttäjiin, vaan kaikki vertaisverkon laitteet sekä tarjoavat että käyttävät hajautetun sovelluksen palveluita. Laitteilla ei siis ole vastaavia palvelimen ja asiakkaan rooleja, kuten asiakas-palvelin -mallissa, vaan laitteet ovat vertaisia, jokaisen toimiessa sekä palvelimena että asiakkaana. Vertaisverkkomallia käytettään esimerkiksi tiedostojen, laskentakapasiteetin sekä kaistanleveyden jakamisessa. Vertaisverkkomallin etuna perinteiseen asiakas-palvelin -malliin on esimerkiksi nopeus tiedoston lataamisessa. Asiakas-palvelin -mallissa tiedoston lataamisnopeutta palvelimelta rajoittaa muut samanaikaiset lataajat ja palvelimen resurssit tai palvelimen verkkoyhteys voi ruuhkautua. Vertaisverkossa kaikki tiedostoa itselleen lataavat laitteet, toimivat toisille laitteille lähteenä, josta muut voivat ladata tiedostoa. Tiedoston lataaminen voidaan käytännössä tehdä rinnakkain koko verkossa samanaikaisesti, sen sijaan että verkon laitteet omalla vuorollaan käyvät lataamassa tiedoston.

# v2018L3_2

Pilvilaskenta

# video2019Luento3b
# v2018L3_3

Pilvilaskenta, englanniksi cloud computing, ei varsinaisesti ole sinällään palvelumalli. Pilvilaskennassa päätelaitteessa toimivan sovelluksen tarvitsemat resurssit ja laskentateho eivät ole päätelaitteessa vaan verkossa sijaitsevassa palvelimessa. Pilvi-termiä alettiin käyttämään jo Internetin edeltäjän, ARPANET:in, alkuaikoina kuvaamaan verkossa sijaitsevia laskentaa suorittavaa laitetta sekä myöhemmin Internettiä tai sen osaa. Pilvilaskenta on siis verkossa tapahtuvaa laskentaa ja pilvipalvelut ovat palveluita, joiden toteutus on siirretty verkkoon. Oikeastaan asiakas-palvelin -malli on yksi pilvipalvelun muoto. Esimerkiksi sähköpostisovelluksessa suuri osa sovelluksen toiminnasta, kuten sähköpostit ja niiden välitys, hallitaan verkossa sijaitsevalla sähköpostipalvelimella.

Pilvipalvelut ovat laajentuneet perinteisistä hajautetuista sovelluksista, kuten WWW, käsittämään myös aiemmin vain paikallisissa laitteissa ajettuja sovelluksia. Nykyään suurinta osaa toimistosovelluksia, kuten tekstinkäsittely tai taulukkolaskenta, on mahdollista käyttää pilvipalveluna. Pilvipalvelusovellus, on sellainen, jossa itse sovellus toimii pilvipalvelun tarjoajan verkossa ja sitä käytetään verkon yli erilaisista päätelaitteista, yleensä verkkoselaimella.

Pilvipalveluiden hyötynä palvelun käyttäjille on se, että sovellusten ja laitteiden ylläpidon voi ulkoistaa jolloin itse voi keskittyä palveluiden käyttöön. Esimerkiksi yrityksen ei tarvitse käyttää aikaa ohjelmistojen ja laitteiden päivitykseen ja tietoturvasta huolehtimiseen, kun pilvipalveluntarjoaja tekee sen osana tarjoamaansa palvelua.

Pilvipalvelujen huonona puolena voidaan pitää esimerkiksi sitä että, kun valitsee jonkin pilvipalvelun, voi olla hankala siirtyä toisen pilvipalvelun käyttäjäksi, koska siirtyminen erilaisten palveluiden välillä voi vaatia suuria muutoksia vanhalla palvelulla toteutettuun työhön. Tietoturva ja tiedon yksityisyys saattavat olla jonkin asteisen epäluottamuksen kohde, kun kaikki oma tieto on pilvipalvelun tarjoajan verkossa. Esimerkiksi pilvipalvelun palvelimien sijainti eri valtioissa määrittelee sen minkälaista lainsäädäntöä noudatetaan.

# videoJohdanto15

Sumulaskenta

# v2018L3_4

Sumulaskenta, englanniksi Fog computing tai Fog networking on uusi tutkimus- ja kehityssuunta, jossa verkossa, eli pilvessä, sijaitseva laskenta tuodaan lähemmäksi päätelaitteita ja käyttäjiä. Terminä sumu on keksitty siitä että aiemmin pilvessä, eli 'taivaalla', sijaitseva laskenta tuodaan lähemmäksi käyttäjiä, eli 'maanpintaa', ja näin pilvi muuttuu sumuksi.

Sumulaskennan ideana on ottaa hyötykäyttöön miljardit Internetiin yhdistetyt laitteet, jotka ovat lähellä käyttäjiä, mutta käyttöä vailla. Hyötynä olisi laitteiden fyysinen läheisyys, jolloin tiedonsiirto laitteiden välillä olisi nopeampaa, eikä kärsisi Intenetin muun liikenteen aiheuttamasta ruuhkasta. Sumulaskennassa esimerkiksi tabletilla toimistosovellusta käyttettäessä, sovellus ei olisikaan hajautettu pilvipalveluun, vaan lähistöllä sijaitseviin, usein samaanaikaan käyttämättömiin, laitteisiin, kuten esimerkiksi puhelin, tietokone, televisio tai jääkaappi.

Ongelmana sumulaskennassa tällä hetkellä on löytää toimiva malli esimerkiksi sille, kuinka järjestelmää ylläpidetään ja laskutetaan sekä miten laitteiden omistajille korvataan tarjottu laskentateho, talletuskapasiteetti tai verkonkäyttö. Sumulaskenta tukisi esineiden Internettiä, eli kun yhä useampaan laitteesiin lisätään nykyään yhteys Internetiin sekä laskentakapasiteettia, niin ne saataisiin parempaan hyötykäyttöön.

Esineiden Internet

Esineiden Internetiksi, englanniksi Internet of Things (IoT), kutsutaan internetverkon osaa, jonka laitteet eivät ole perinteisiä internetiin kytkettyjä laitteita. IoT-laitteet ovat mitä tahansa laitteita, joihin on lisätty verkkoyhteys, jolla laite voi kommunikoida muiden verkossa olevien laitteiden kanssa. Nämä verkot voivat olla internetistä kokonaan irti, tai sitten organisaatioiden sisäisissä verkoissa, intraneteissä, piilossa muulta internetiltä tai sitten näkyvillä julkisesti internetissä. Verkkoyhteys voidaan nykyään toteuttaa hyvin pienellä määrällä elektroniikkaa sekä ohjelmistoa. Huomioitavaa on, että IoT-laitteelle ei ole yhtä ainoaa vakiintunutta määritelmää. Yleensä IoT-laitteen internetiin yhteydessä olevat osat ovat lisäksi kooltaan ja virrankulutukseltaan pieniä. Yhteys internetin välityksellä toisiin laitteisiin mahdollistaa tiedon lähettämisen tai vastaanottamisen IoT-laitteiden ja internetiin kytkettyjen muiden laitteiden välillä. IoT-laitteet tarjoavat yleensä jonkinlaista palvelua, esimerkiksi välittävät sensoreidensa avulla tietoa lämpötilasta tai mahdollistavat valojen etäohjauksen internetin yli. IoT-laitteiden yhdistämiseksi internetiin on useita eri tekniikoita, monet niistä langattomia teknologioita. Jotta IoT-laite voi olla yhteydessä internetiin, täytyy laitteeseen olla toteutettu myös Internet Protokolla (IP). Joissain tapauksissa IoT-laitteeksi kutsutaan myös sellaisia laitteita, jotka eivät kykene itse kommunikoimaan internetiin kytkettyjen laitteiden kanssa. Silloinkin laitteen tulee verkottua ja kommunikoida jonkin toisen laitteen kanssa, joka hoitaa kommunikoinnin internetiin yhdistettyjen laitteiden kanssa.

Pilvipalveluiden luokittelu

# video2019Luento3c
# v2018L3_5

Pilvipalvelut luokitellaan sen mukaan minkälaista palvelua ne tarjoavat. Luokkia on useita, ja osa pilvipalveluista tarjoaa useaan eri luokkaan kuuluvia palveluita. Yleisimmät pilvipalveluluokat ovat kolme pääluokkaa:

  • SaaS (Software as a Service), ohjelmisto palveluna
    • Voidaan käyttää verkossa sijaitsevia sovelluksia
    • Ilmaisia tai maksetaan käytön mukaan
    • Käytettävissä
      • miltä tahansa Internetiin yhteydessä olevalta laitteelta
      • verkkoselaimella, mobiilisovelluksella, pääteyhteydellä, …
    • Toimistosovelluksia, sähköposti, pelejä, yhteistyösovelluksia, …
    • Esim. Google docs, Office 365, Slack, Overleaf, GitHub, Dropbox, Amazon AWS, …
  • PaaS (Platform as a Service), palvelinalusta palveluna

Pilvipalveluiden vuonna 2011 julkaistun määritelmän on tehnyt yhdysvaltalainen National Institute of Standards and Technology (NIST) virasto, jonka tehtävänä on mm. kehittää standardeja.

Nykyään suosiota kasvattaa "serverless computing", jossa ei ole palveluna alustaa tai ohjelmistoa, vaan palveluna tarjotaan ohjelmakoodin ajamista, Function as a Service (FaaS).

Lohkoketju

Lohkoketju, englanniksi blockchain, on eräänlainen internetverkkoon hajautettu tietokanta. Tietokannan tietueet, joita kutsutaan lohkoiksi, on linkitetty toisiinsa kryptografisilla menetelmillä. Linkityksistä muodostuu ketju, jossa uudessa lohkossa on aina tieto aiemmista lohkoista. Tämä toteutetaan lisäämällä jokaiseen lohkoon kryptografinen tiiviste edellisestä lohkosta. Lohkon hyötydatana on transaktio, jokin tapahtuma, joka on toteutettu eri osapuolten kesken. Näin lohkoketjuun tallentuu historia transaktioista, jotka ovat kaikkien tarkasteltavissa ja joita on käytännössä mahdoton muuttaa, ilman että siitä jää helposti havaittava jälki.

Protokollat tietoverkoissa

Tietoverkon laitteet eivät kykenisi ymmärtämään toisiaan ilman tietoverkoissa käytettäviä protokollia, tietoliikenneprotokollia. Englanniksi niistä käytetään termiä (computer) network protocol, eli verkkoprotokolla, tai communication protocol, eli protokolla kommunikaatioon, erityisesti tietoverkkojen tapauksessa verkkoon yhdistettyjen laitteiden väliseen kommunikaatioon.

# video2019Luento3d
# v2018L3_7

Protokollan määritelmä, eli säännöt, sisältävät

  • syntaksin
    • symbolien yhdistelmät, jotka ovat sallittuja kommunikaatiossa
      • eli 'sanat protokollan käyttämässä kielessä'
    • symboliyhdistelmien järjestys, jotka ovat sallittuja kommunikaatiossa
      • eli 'kielioppi protokollan käyttämässä kielessä'
    • Esimerkiksi
      • GET sivu HTTP/1.1
      • välilyönnillä erotellaan sallitut symbolien yhdistelmät
      • myös symboliyhdistelmien paikat on määritelty, eli järjestyksellä on väliä
  • semantiikan
    • symboliyhdistelmien tarkoituksen kommunikaatiossa
      • eli 'sanojen merkityksen protokollan käyttämässä kielessä'
      • Esimerkiksi
        • GET tarkoittaa "lähetä minulle"
        • sivu on sen WWW-sivun nimi jota pyydetään lähettämään
        • HTTP/1.1 on protokolla, jota kommunikaatioon käytetään
    • Kuinka symboliyhdistelmiin reagoidaan
      • Esimerkiksi sivunlähetys-pyyntöön reagoidaan
        • lähettämällä pyydetty sivu
        • tai syy, miksi sivua ei lähetetty
  • ajoituksen
    • sallitun järjestyksen viesteille kommunikaatiossa
    • Esimerkiksi sähköpostiprotokollassa ennen sähköpostin tekstiosaa pitää määritellä lähettäjä ja vastaanottaja
  • virheistä toipumisen
    • mahdolliset mekanismit virheistä toipumiseen
    • jos kommunikaatio ei ole määritysten mukaista, ei osapuolet ymmärrä toisiaan

Mihin protokollia tarvitaan? Otetaan esimerkki ihmisten välisestä kommunikaatiosta, joka usein perustuu jonkinlaiseen protokollaan. Kun esimerkiksi luentosalissa opiskelijalla on jonkin kysymys opettajalle, täytyy hänen kiinnittää opettajan huomio itseensä jollakin tavalla. Ensimmäisenä tulee mieleen esimerkiksi seuraavat vaihtoehdot: (i) opiskelija nostaa kätensä pystyyn, (ii) opiskelija pyytää luvan sanallisesti: "Saanko esittää kysymyksen?" tai (iii) opiskelija kysyy kysymyksensä suoraan. Varmasti muitakin tapoja on, mutta huomattavaa on se että kysymyksen esittämiseen on jonkinlainen tapa aloittaa kommunikaatio. Ihmisten kesken kommunikaation sääntöjen ei aina tarvitse olla tarkkaan määritelty, koska ihminen kykenee tulkitsemaan viestintää tilanteen ja esimerkiksi aiemman kokemuksen mukaan. Kommunikaation aloitusmekanismin lisäksi myös kommunikaatioon käytetyt viestejä voi olla useita erilaisia, esimerkiksi "voinko esittää kysymyksen", "saako kysyä" tai "minulla olisi kysymys tai pari" ja silti opettaja ymmärtää viestin.

# v2018L3_6
# videoJohdanto45

Kun kaksi laitetta kommunikoi, ei ole järkevää määritellä kommunikaatiolle esimerkiksi useita erilaisia viestejä, jotka tarkoittavat samaa asiaa. Jos esimerkiksi verkkoselain kysyy WWW-palvelimelta, että "onko tietty WWW-sivu muuttunut sen jälkeen kuin viimeksi kysyin", niin tehokkaasti toteutettu kommunikaatio vaatinee sen, että kysymyksen esittäminen on tarkkaan määritelty. Pitää olla protokolla, jota noudatetaan laitteiden tai niissä ajettavien ohjelmistojen kommunikoidessa keskenään. Protokollat siis määrittelevät säännöt tietoverkoissa tapahtuvaan kommunikaatioon.

# videoJohdanto46
# videoJohdanto10

Sokettirajapinta

# video2019Luento3e
# v2018L3_8

Sokettirajapinta on käyttöjärjestelmän tarjoama palvelu, jonka avulla sovellusten käyttämät protokollat, sovellusprotokollat, voivat kommunikoida Internet-verkossa sijaitsevien laitteiden kanssa. Sokettirajapinnan avulla voidaan esimerkiksi hakea WWW-sivu WWW-palvelimelta, kun tiedetään palvelimen ja sen tarjoaman palvelun osoitteet, internetosoite ja porttinumero, jotka käsitellään tarkemmin tämän materiaalin Teoria 2 osiossa. Lisäksi täytyy tuntea käytetty sovellusprotokolla, joka salaamattoman WWW-palvelun osalta on HTTP. Myös sovellusprotokollat käydään läpi tarkemmin Teoria 2 osiossa.

Vuoden 2017 luentokalvoilla on käytetty PHP-ohjelmointikieltä visualisoimaan sokettirajapinnan käyttöä.

# videoJohdanto12

Sokettirajapintaan ja HTTP protokollaan tutustutaan myöhemmin, mutta voit kokeilla alla olevaa esimerkkiä, jossa sokettirajapinnan kautta haetaan WWW-palvelimelta WWW-sivu. Alla oleva ohjelma toimii asiakkaana, joka tekee pyynnön WWW-palvelimen oletusresurssin hakemiseksi. Ohjelma tulostaa tekstinä HTTP-protokollan mukaiset viestit, sekä HTML-sivun, jonka se saa palvelimelta.

# t3a

Ohjelma on toteutettu Python-ohjelmointikielellä, tosin koodi on piilotettu lukuun ottamatta WWW-palvelimen nimen määritystä. Voit halutessasi tutkia koodia valitsemalla Näytä koko koodi. Tietoverkossa hajautetun sovelluksen kommunikoivat osapuolet voidaan toteuttaa millä tahansa ohjelmointikielellä, kunhan kommunikoinnissa käytetään ja noudatetaan yhteistä protokollaa. Eli, ei ole väliä sillä, millä ohjelmointikielellä ja miten asiakkaat ja palvelimet on toteutettu, kunhan kommunikaatiossa noudatetaan protokollan sääntöjä.

# t3b
# t3c

Internetin rakenne

# video2019Luento3f
# v2018L3_9

Internet on maailmanlaajuinen tietoverkko, joka koostuu sadoista tuhansista erikokoisista verkoista. Internetin rungon muodostavat suurten internetoperaattoreiden verkot, jotka yhdessä muodostavat maapallon kattavan alueen. Käytännössä runkoverkkoja pitkin tietoa voi siirtää mihin tahansa maapallolle.

Internetoperaattorit

Internetoperaattorit jaotellaan eri tasoisiksi ja Internetin runkoverkon muodostavien operaattoreiden sanotaan kuuluvan Tier 1 -verkkojen kategoriaan. Määritelmä Tier 1 -verkkojen kategoriaan kuulumisesta ei ole tarkka. Tier 1 -verkkojen kategoriaan sanotaan kuuluvan internetoperaattorit, jotka eivät maksa siitä että ne välittävät toistensa yhdysliikennettä. Englannniksi yhdysliikenteen välitykselle on termi peering, jota myös suomenkielessä käytetään. Tier 1 -operaattoreilla on peering-sopimukset kaikkien muiden Tier 1 -operaattoreiden kanssa siitä että niiden, ja niiden asiakkaiden, peering-liikenne on ilmaista Tier 1 -operaattoreiden välillä. Asiakkaat, eli pienemmät internetoperaattorit, maksavat siis liikenteensä välityksestä Tier 1 operaattoreiden kautta, mutta Tier 1 -verkkojen välillä asiakkaiden liikenne siirretään ilman että Tier 1 -operaattorit maksavat toisilleen.

Jos internetoperaattori joutuu maksamaan toiselle internetoperaattorille, siitä että liikenne kulkee toisen operaattorin verkon kautta, niin maksava internetoperaattori ei kuulu Tier 1 -verkkoihin. Koska internetoperaattorien väliset sopimukset eivät ole aina julkisia, ei voida täydellä varmuudella sanoa mitkä ovat Tier 1 -internetoperaattoreita. Internetyhteisö arvioi Tier 1 -verkkoihin kuuluvan tällä hetkellä noin 15 internetoperaattoria.

Tier 2 -verkko on erään määritelmän mukaan sellainen internetoperaattori, joka joutuu maksamaan Tier 1 -operaattoreille, mutta joka kykenee tekemään ei-maksullisia peering-sopimuksia pienempien internetoperaattoreiden kanssa. Eli johonkin osaan verkkoa liikenteen välitys on Tier 2 -operaattoreille maksutonta ja muualle Internetiin maksullista. Liikennettä, joka kulkee eri tasoilla sijaitsevien internetoperaattorien verkkojen välillä, kutsutaan välitysliikenteeksi tai usein englannin kielisen termin mukaan transit-liikenteeksi. Peering-liikennettä on sellainen internetoperaattorien liikenne, joka on samantasoisten (peer tarkoittaa vertaista) operaattoreiden välistä liikennettä. Yleisesti transit-liikenne on maksullista ja peering-liikenne on maksutonta.

Tier 3 -verkko on erään määritelmän mukaan sellaisen internetoperaattorin verkko, joka joutuu aina maksamaan liikenteen välityksestä oman verkon ulkopuolelle. Käytännössä näin on silloin kun verkolla ei ole fyysisiä yhteyksiä toisiin saman tason verkkoihin, jotta se voisi tehdä niiden kanssa peering-sopimuksia. Käytännössä Tier 3 -verkkojen kategoria voi jakautua vielä useampaan osaan. Liityntäverkoksi, englanniksi access network, kutsutaan verkkoa, joka tarjoaa internetyhteyksiä henkilö- tai yritysasiakkailleen. Liityntäverkon ei tarvitse itse olla internetoperaattori ja tällöin se hankkii internetyhteyden joltain internetoperaattorilta.

Kalifornian yliopiston Center for applied internet data analysis (CAIDA) ylläpitää sijoituslistausta (ranking) autonomisista järjestelmistä (AS) osoitteessa https://asrank.caida.org/. Listauksen sijoitus perustuu siihen kuinka monta asiakasta kullakin autonomisella järjestelmällä on. Klikkaamalla listalla organisaation nimeä tai AS numeroa saa tarkempaa tietoa. Nimeä klikkaamalla saa tiedon kaikista AS numeroista, jotka kuuluvat kyseiselle organisaatiolla ja lisäksi saa tarkempia tietoja esimerkiksi siitä, kuinka monta autonomista järjestelmää, aliverkkoa (prefix) sekä internetosoitetta on kyseisen autonomisen järjestelmän kautta saavutettavista. AS numeroa klikkaamalla saa tiedon AS naapureista, eli kyseisen organisaation suhteesta muihin organisaatioihin. Onko organisaatioilla peering-suhde, tai onko suhde kyseiseen organisaation asiakas tai palveluntarjoaja. Suurimmat organisaatiot eivät ole välttämättä Tier 1 operaattoreita, koska sen määritys ei liity organisaation suuruuteen.

# videoJohdanto22
# t3e

av: Tehtävät 3 (e) - (j) lisätty 16.3.2022 ja linkattu materiaaliin sopiviin kohtiin

16 Mar 22
# t3f
# t3g

Jyväskylän yliopiston liittyminen Internetiin

# video2019Luento3g
# v2018L3_10

Jyväskylän yliopisto tarjoaa internetyhteyden henkilöstölleen sekä opiskelijoille. Jyväskylän yliopiston tietoverkko on yhdistetty FUNET (Finnish University and Research Network) -runkoverkkoon, joka on suomen korkeakoulujen ja tutkimuslaitosten tietoverkko. FUNET-verkkoa hallinnoi opetusministeriön alainen CSC - Tieteen tietotekniikan keskus ja joissain yhteyksissä FUNET-verkkoa kutsutaan CSC-verkoksi. FUNET-verkko on yhdistetty Internetiin NORDUnet- verkon kautta, joka on pohjoismaisten tutkimus- ja koulutusverkkojen yhteisorganisaatio. NORDUnet-verkko kytkeytyy muuhun Internetiin Telian siirtoverkon kautta. NORDUnet on osa Eurooppalaista tutkimus- ja koulutusorganisaatioiden GÉANT-verkkoa, joka tarjoaa yhteydet eurooppalaisten korkeakoulujen ja tutkimuslaitosten välille.

Se, luetaanko Jyväskylän yliopiston tietoverkko tai FUNET-verkko Tier 3 -verkoksi, riippuu Tier 3 -verkkokategorian määrityksestä. Telian siirtoverkko on oletettavasti Tier 1 tason verkko. Koska FUNET-verkko on osa NORDUnet-verkkoa, joka on osa GÉANT-verkkoa, on sen tasoa vaikea määrittää. Oletetaan että GÉANT-verkko tai NORDUnet-verkko maksaa tiedonsiirrosta Tier 1 verkolle. Tällöin kyseessä olisi Tier 2 verkko, toisaalta FUNET ei maksa tiedonsiirrosta NORDUnet-verkolle, vaan on osa NORDUnet-verkkoa. Myöskään Jyväskylän yliopisto ei maksa tiedonsiirrosta FUNET-verkolle. Tuntematta sopimuksia tarkemmin voidaan arvella, että se mitä esim. FUNET tai yliopisto maksaa on ehkä jäsenmaksuja yms. joita käytetään sitten tarpeenmukaisesti. Täten Tier 3 verkon yleisin määritys "maksaa kaikesta tiedonsiirrosta" ei toteudu. Tier 2 ja Tier 3 verkoille ei ole yleisesti hyväksyttyä tarkkaa määritelmää.

# t3h
# t3i
# t3j
FUNET NORDUNET GÉANT
FUNET-runkoverkko NORDUNET GÉANT
GÉANT yhteydet maailmalle
GÉANT yhteydet
# video2019Luento3h
# v2018L3_11

Kun FUNET-verkosta kommunikoidaan suomessa sijaitsevien verkkojen kanssa, ei ole tarvetta välittää liikennettä NORDUnet verkkoon. Suomessa sijaitsevat verkot voivat välittää liikennettä toisilleen Suomessa sijaitsevien Internet-liikenteen solmupisteiden, englanniksi Internet exchange point (IXP), kautta. IXP-solmupisteet välittävät peering-liikennettä niihin liittyneiden verkkojen välillä, verkkojen välisten peering-sopimusten mukaisesti. IXP-solmupisteet laskuttavat pienen summan jäseniltään, eli solmupisteen kautta liikennöiviltä operaattoreilta, laitteiden ylläpitoa varten. Suomessa on keväällä 2021 kaksi suomalaista IXP-solmupisteiden tarjoajaa FICIX ja TREX. FICIX:in solmupisteet sijaitsevat Espoossa, Helsingissä sekä Oulussa ja TREX:in ainoa solmupiste sijaitsee Tampereella. Alla on interaktiivinen kartta, joka näyttää maailman IXP-solmupisteiden sijainnin. Kartalta löytyy mm. suomesta uusia ulkomaisia IXP-solmupisteen tarjoajia, jotka ovat viime vuosina aloittaneet palvelun pääkaupunkiseudulla.

Silloin kun internetoperaattorit yhdistävät verkkonsa ilman IXP-solmupisteitä, muodostetaan yhteys PoP (Point of Presense) -liityntöjen kautta. PoP on solmukohta internetoperaattorin verkon reunalla, jonka kautta liikennettä voidaan välittää sisään ja ulos verkosta. Kun kahden operaattorin välillä on suora fyysinen yhteys, on kyseessä yksityinen liikenteenvälitys, englanniksi private peering. IXP-solmupisteiden kautta toteutettava liikenteenvaihto on julkista, englanniksi public peering.

# t3d

Esimerkkejä Tier operaattoreista

Alla olevaan kuvaan on piirretty muutamia reittejä internetoperaattoreiden verkkoihin. Reitit on selvitetty traceroute-ohjelman avulla. Nykyään reitit, IP osoitteet ja verkko-operaattorit voivat olla erilaisia.

Jyu liittyminen Internetiin
Jyu liittyminen Internetiin
# video2019Luento3i
# v2018L3_12
# videoJohdanto23

Informaatiota operaattoreiden verkoista saa esimerkiksi RIPE organisaation analysointityökaluilla.

Seuraavassa kuvassa on esitetty traceroute-ohjelmalla selvitetyt reitit kolmen Suomessa toimivan operaattorin verkkoon. Reitit on selvitetty vuonna 2017 ja nykyään operaattoreiden nimet voivat olla muuttuneet ja varsinkin käytetyt reitit on hyvin todennäköisesti erilaiset. Internetin reitit muuttuvat hyvinkin lyhyillä aikaväleillä.

Image Image Image

  • Karkea luennoitsijan esimerkki kolmen operaattorin sijoittumisesta eri renkaisiin:
    • Tier 1: TeliaSonera
    • Tier 2: Nordunet
    • Tier 3: Funet

Edellisissä kuvissa oli selvitetty reitti operaattoreiden verkkoihin. Kuvissa näkyy myös millisekuntiluokkaa oleva viive, joka Internetin pakettikytkentäisessä verkossa riippuu mm. etäisyydestä sekä muusta internet-liikenteestä. Kun haluaa selvittää viiveen johonkin tiettyyn palvelimeen, voi käyttää käyttöjärjestelmien komentoriviltä ajettavaa ping-ohjelmaa. Kaikki kohteet eivät välttämättä vastaa ping-ohjelman käyttämiin viesteihin, jos esimerkiksi palomuurin säännöt estävät vastaamisen. Palvelin tim.jyu.fi ei esimerkiksi vastaa yliopiston verkkoalueen ulkopuolisiin kyselyihin [Päivitys: tim.jyu.fi ei enää vastaa ollenkaan ping tai traceroute ohjelmien kyselyihin. Lisäksi useat muut Jyväskylän yliopiston palvelimet eivät enää vastaa yliopiston verkkoalueen ulkopuolisiin kyselyihin].

Testataan seuraavaksi ping-ohjelman toimintaa. Huomaa, että seuraavassa testataan verkkotunnusta google.fi ilman etuliitettä, joka identifioi palvelimen nimen.

# t4a

Mulla hukkui paketteja niin ekalla kerralla tää ei antanut täysiä pisteitä :(

av: joo, tarkistin vaatii tähän tehtäväkohtaan 100% onnistumisen. Usein käy niin että ensimmäinen ping paketti hukkuu ja muut menee perille. Lisään jossain vaiheessa tähän että sallii tuon ensimmäisen (tai yhden) paketin hukkumisen.

Edit: Nyt on päivitetty, että hyväksyy, jos ensimmäinen paketti hukkuu.

22 Mar 21 (edited 22 Mar 21)

av: Lisätty, että hyväksyy -c 4 parametrin myös ennen verkkotunnusta.

22 Mar 21

Kirjoitin komennon käsketyllä tavalla (Ubuntu) Linuxiin ja kopion koko vastauksen. Tarkistuksen mukaan liian vähän rivejä. Toistin, tulos sama. Kolmannella kerralla nostin testien määrän viiteen, edelleen sama tulos. Tarkistus väittää, että rivejä pitäisi olla enemmän, ei ole. Saan vain 0.02/0.1 pistettä, vaikka teen ohjeen mukaan.

av: Jostain systä ping-testi epäonnistuu. Tässä tehtäväkohdassa pitää saada onnistunut ping-testi. Syy ei käy selville, mutta muuta ei tule mieleen kuin että internetyhteys on ollut poikki tai jokin verkkolaite estää ping-paketit. DNS on saanut selvitettyä googlen IP-osoitteen, mutta se on voinut olla välimuistissa, vaikka yhteys on poikki. Rivejä tulee liian vähän kun näköjään Ubuntu ei oletuksena tulosta tarkempaa tietoa epäonnistumisista

13 Feb 22 (edited 14 Feb 22)

Aina viivettä johonkin tiettyyn palvelimeen ei voi selvittää. Tällöin yleisiä syitä ovat se että verkkotunnuksessa on kirjoitusvirhe, palvelin ei ole päällä, internet yhteys on jossain kohtaa poikki tai palveluntarjoaja on tehnyt verkkolaitteisiinsa asetuksia, joilla ping-viestiin vastaaminen estetään.

Havainnollistetaan seuraavaksi asiaa esimerkiksi Jyväskylän yliopiston users.jyu.fi palvelimen avulla. Palvelin vastaa ping-viesteihin vain, jos ping-viesti tulee Jyväskylän yliopiston verkkoalueelta.

# t4b

Tehtävä ei täysin hyväksy macOS:llä saatua vastausta (0.07 / 0.1 pistettä): ping -c 5 users.jyu.fi PING karahka2.cc.jyu.fi (130.234.10.207): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3

— karahka2.cc.jyu.fi ping statistics — 5 packets transmitted, 0 packets received, 100.0% packet loss

Muut oikein, mutta rivillä 1 pitäisi muka olla vain “ping users.jyu.fi” ja rivillä 9 “100%”

av: päivitetty tukemaan paremmin macOS. Ainakin kesäkuussa 2021 macOS pitää jollain käyttöjärjestelmän versiolla käyttää parametria -5, koska sen ping tulostaa jostain syystä yhden ping-testin vähemmän näyttöön, kuin mitä ohjelma tekee. Oletan että tuo on bugi macOS ping-ohjelmassa, joka korjataan. jossain vaiheessa, joten en lisää tarkistimeen tukea sille, että käyttää -c 4 parametria ja vastauksena on 3 testiriviä

02 Jun 21 (edited 02 Sep 21)

Debian 11 palauttaa tästä pingistä vain 0,03 arvoisen vastauksen näköjään.

av: selvitän asiaa ja katson miten tämän saisi ratkaistua.
Edit: Lisätty ohje Debian 11, jolla kierretäään se ettei sen ping tulosta epäonnistuneita yrityksiä, joutuu tosin tekemään 5 paketin ping:in.
Edit2: Korjattu vielä, että hyväksyy -O ping rivillä.

02 Sep 21 (edited 03 Sep 21)

Jotkin yliopiston verkkopalvelut vaativat, että palvelun käyttäjä on yliopiston verkkoalueella. Oma internetyhteys saadaan liitettyä johonkin toiseen verkkoalueeseen esimerkiksi käyttämällä VPN (Virtual Private Network) -etäyhteyttä.

Jyväskylän yliopiston digipalveluiden ohjeista löytyy ohjeita esimerkiksi sivulta WLAN ja VPN - etäyhteys ja etäkäyttö. Sivuston voi etsiä HelpJYU hakutoiminnolla, tai suoraan esimerkiksi käyttämällä URL:ia https://help.jyu.fi/jp?id=kb_search&spa=1&q=VPN.

Jos olet Jyväskylän yliopiston verkossa tietokoneella, jossa on langaton verkkoyhteys, ja haluat testata VPN-etäyhteyttä, voit esimerkiksi käyttää puhelintasi mobiilitukiasemana ja sitten käyttää VPN-etäyhteyttä. Langallisella yhteydellä täytyisi käyttää esimerkiksi proxy-palvelinta, jolla ensin peitetään se että ollaan yliopiston verkossa ja sitten asettaa VPN päälle.

# t4c

Käyttöjärjestelmistä löytyy traceroute-ohjelma, jolla voi selvittää reitin johonkin verkkotunnukseen tai IP osoitteeseen. Ohjelma selvittää reitillä sijaitsevat reitittimet, jotkin reitittimet eivät tosin reagoi traceroute-ohjelman viesteihin.

# t4d

Tim ei hyväksy tracert users.jyu.fi komennon tulostetta vastauksena teki sen sitten VPN:llä yliopiston verkosta tai ei. Molemmissa tapauksissa tim herjaa vastauksessa olevan liian vähän rivejä, vaikka vastaukseen liittää koko tulosteen komennosta trace completeen.

av: bugi tarkistimessa, nyt on korjattu

16 Sep 21 (edited 17 Sep 21)
# t4e

Sama ongelma kuin edellisessä tehtävässä toistuu tässä

av: bugi tarkistimessa, nyt on korjattu

16 Sep 21 (edited 17 Sep 21)

Jostain syystä ei toimi, vastauksissa tuloste jonka antoi

av: Unable to resolve target system name www.example.com. Jostain syystä DNS palvelu ei toimi, todennäköisesti internetyhteys poikki hetkellisesti. Jos internetyhteydet toimii muuten, niin sitten on jotain ihmeellistä. Joko IP protokollan versioon liittyvää, eli DNS palauttaisi vain IPv6 osoitteen ja koko reittiä ei ole tuettu IPv6 osoitteile. Tai DNS-järjestelmässä (oma laite lähin DNS palvelin, operaattorin DNS palvelin, on joku määritys tuohon verkkotunnukseen liittyen. Jos internetyhteys toimii, ja saa silti em. virheen, niin voi nslookup-ohjelmalla yrittää selvittää verkkotunnuksen IP-osoitetta ja katsoa toimiiko se. Voi kokeilla eri internetyhteyttä tai VPN:ää. Laita vaikka nslookup-tuloste sähköpostilla, jos ei meinaa selvitä.

28 Mar 22 (edited 29 Mar 22)

Yhteys Internetiin

# video2019Luento3j
# videoJohdanto24

Fyysinen tiedonsiirtotekniikka

# video2019Luento4
# video2019Luento4a
# v2018L3_13

Fyysisen tiedonsiirtotekniikan tehtävänä on muuntaa digitaalinen informaatio, eli bitit, fyysiseksi signaaliksi, joka lähetetään joko langattomasti tai langallisesti toiselle laitteelle. Fyysisiä tiedonsiirtotekniikoita on kehitetty useita erilaisiin tarpeisiin ja tekniikoiden kehitys jatkuu pääpainona tiedonsiirtonopeuksien kasvattaminen. Tekniikan tiedonsiirtonopeus ilmaistaan yleensä ns. teoreettisena maksiminopeutena, joka kuvaa fyysisen signaalin kykyä siirtää digitaalista informaatiota, ilman virheitä. Käytännössä, tiedonsiirtonopeuden ja -etäisyyden kasvattaminen lisää virheitä fyysisen signaalin tulkinnassa. Virheiden korjaaminen on yksi tekijä, mikä pienentää tiedonsiirtonopeutta ja monesti, varsinkin langattomissa tekniikoissa, käytännön tiedonsiirtonopeuksissa ei päästä kovinkaan lähelle teoreettista maksiminopeutta.

Fyysisten siirtoteiden standardointia tekee käytännössä kolme eri organisaatiota. Langallisten ja langattomien lähiverkkojen fyysisen sekä linkkikerroksen standardointia tekee Institute of Electrical and Electronics Engineers (IEEE). Matkapuhelintekniikan fyysisiä siirtoteitä standardoidaan Europpaan European Telecommunications Standards Institute (ETSI):n ja sen 3rd Generation Partnership Project (3GPP) ryhmissä. Molemmat IEEE ja ETSI tekevät tulevaisuuteen erilaisia nopeita pitkän kantaman langattomia fyysisiä tiedonsiirtostandardeja. Kansainvälinen televiestintäliitto (International Telecommunication Union - ITU) toimii laajemmin erilaisten järjestelmien, mukaan lukien televisio- sekä satelliittijärjestelmien, radiotaajuisen sekä esimerkiksi valokuituun perustuvan tiedonsiirron standardoinnissa.

Fyysistä tiedonsiirtoa, eli protokollapinon fyysistä kerrosta, ei ole määritelty RFC dokumenteissa.

Langalliset tiedonsiirtotekniikat

  • Valokuitukaapeli
    • Tiedonsiirtonopeus 15-20 Terabittiä sekunnissa
      • lähiaikoina nelinkertaistunee, ennuste satoja Terabittejä sekunnissa
      • Parannukset lisäämällä kanavien määriä (eri aallonpituuksia samaan kaapeliin)
        • sekä kasvattamalla yksittäisen kanavan kapasiteettia
      • Standardointi ITU
  • Ethernet parikaapeli, IEEE 802.3
    • 'normaali' on 10 Mbit/s - 1 Gbit/s
      • parannukset kaapelitekniikkaa parantamalla
    • 10 Gbit/s kuparikaapelilla vain fullduplex
      • vanhoja kytkimiä ja kaapeleita ei voi käyttää
    • 10+ Gbit/s saavutettavissa valokuitu-Ethernet:illä
    • Standardointi IEEE
  • Kaapelimodeemi vs. ADSL ja VDSL
    • Kaapelimodeemi
      • jaettu tiedonsiirtomedia
      • siirto kaapeli-TV:n koaksiaalikaapelissa
      • teoreettinen maksimi 100+ Mbit/s
    • xDSL
      • dedikoitu tiedonsiirtomedia
      • käyttää puhelinkaapeleita eli parikaapelia
      • ADSL2+ teoreettinen maksimi 24 Mbit/s (downlink) ja 3.5 Mbit/s (uplink)
      • VDSL teoreettinen maksimi 52 Mbit/s (downlink) ja 16 Mbit/s (uplink)
      • Standardointi ITU

Langattomat tiedonsiirtotekniikat

# video2018Luento4
# video2019Luento4b
# v2018L4_1
  • Langaton tiedonsiirtotekniikka
    • Nopeuteen vaikuttaa mm.
      • etäisyys
        • radiotaajuisen signaalin voimakkuus kääntäen verrannollinen etäisyyden neliöön
      • muut käyttäjät
        • radioresurssien jakaminen
      • esteet
        • radioaallot vaimenee esteen läpäistessään
      • liike
        • käyttäjän oma liike
          • Doppler siirtymä
        • muu liike käyttäjän ympärillä
      • monitie-eteneminen
        • signaali heijastuu ympäristöstä
        • eri aikoihin saapuu kopioita signaalista
      • radiotaajuinen häiriö muista laitteista tai järjestelmistä
      • ...
  • Langattomat lähiverkot, WLAN (WiFi), IEEE 802.11
    • 802.11 (legacy), vuonna 1997: 1-2 Mbit/s, taajuusalueella 2.4 Ghz
    • 802.11b, vuonna 1999: 11 Mbit/s, taajuusalueella 2.4 Ghz
    • 802.11a, vuonna 1999: 54 Mbit/s, taajuusalueella 5 Ghz
    • 802.11g, vuonna 2003: 54 Mbit/s, taajuusalueella 2.4 Ghz
    • 802.11n, vuonna 2009: 600 Mbit/s, taajuusalueella 2.4 ja 5 Ghz
    • 802.11ac, vuonna 2013: 1300 Mbit/s, taajuusalueella 5 Ghz
    • 802.11ad, vuonna 2013: 7 Gbit/s, taajuusalueella 60 Ghz
    • Vuonna 2018 yleisesti käytössä 802.11ac tai 802.11n
# videoJohdanto27

Signaali tiedonsiirtotekniikassa

# video2019Luento4c
# v2018L4_2

Alla on virtuaalinen oskilloskooppi, joka näyttää esimerkiksi tietokoneen mikrofonin kuulemaa ääntä, valitse Input-lähteeksi Live Input. Live Input toimii ainakin uusimmissa Chrome selaimissa. Jos se ei näy Input-valikossa, katso tarkempia tietoja linkistä, joka löytyy oskilloskoopista. Jos Live Input ei toimi TIM-sivulla, kokeile linkin takana olevaa sivua, selain pyytää luvan käyttää tietokoneen mikrofonia. Oskilloskooppi visualisoi äänen näytöllään analogisena.

Sinisignaali ei kuljeta informaatiota, sillä on vakio taajuus, vaihe sekä voimakkuus. Radiotietoliikenteessä käytetään eri järjestelmissä eri taajuuksia siniaaltoja kantoaaltoina. Kantoaaltoon lisätään informaatio moduloimalla kantoaaltoa jollakin tekniikalla. Yleensä muutetaan kantoaallon taajuutta, vaihetta, voimakkuutta tai useampaa ominaisuutta. Esimerkiksi analoginen radiosignaali on Suomessa taajuusmoduloitu, puhutaan FM-tekniikasta, missä FM tulee sanoista Frequency Modulation. Yhdysvalloissa analoginen radio on puolestaan toteutettu AM-tekniikalla, eli muutetaan signaalin voimakkuutta, termin tullessa sanoista Amplitude Modulation.

Suorakaidesignaali on perustana monesti langallisessa tiedonsiirrossa, kun käytetään kuparikaapeleita. Suorakaidesignaali muodostetaan asettamalla lähetyspäässä jännitearvo, joka kuvaa joko bitti 1 tai jokin toinen jännitearvo, joka kuvaa bittiä 0.

# t4f
# t4g
# t4h

av: Tehtävät 4 (h) ja (i) lisätty 16.3.2022 ja linkattu materiaaliin

16 Mar 22
# t4i

Ethernet-tekniikka

# video2019Luento4d
# v2018L4_3
Bitit Ethernet kaapelin jännitevaihteluina
Bitit Ethernet kaapelin jännitevaihteluina
# videoJohdanto25

Verkkotopologiat

# video2019Luento4e
# v2018L4_4

# videoJohdanto29
# t4j

Verkon ydin

Internet-verkon ydin muodostuu yhteen kytketyistä internetoperaattoreiden verkoista, jotka puolestaan muodostuvat yhteen kytketyistä laitteista, jotka välittävät internetliikennettä. Yksittäiset linkit kytkevät kaksi laitetta toisiinsa, mutta miten kytketään koko verkon läpi reitti, jota pitkin digitaalinen informaatio viedään perille?

Yleinen lankapuhelinverkko on esimerkki verkosta, jossa reitti verkon läpi kytketään, eli muodostetaan, ennen kuin puhelinyhteydellä voi kommunikoida. Puhelinverkossa puhelu ohjautuu puhelinkeskukseen, josta se ohjataan soitetun numeron perusteella eteenpäin. Eli puhelinkeskukseen ohjautuu puhelunaloituspyyntö puhelinjohtoa pitkin ja keskuksessa soittajan puhelinjohto kytketään yhteen sellaisen johdon kanssa, jota kautta saadaan yhteys muodostettua vastaanottajaan. Kun yhteys on muodostettu, on kommunikaatiokumppaneiden välille muodostettu dedikoitu tiedonsiirtokanava, josta käytetään nimitystä piiri, englanniksi circuit. Tällaisesta verkosta käytetään nimitystä piirikytketty verkko, englanniksi circuit switched network. Reitti siis kytketään ennen kommunikaation alkua ja kommunikaation alettua reitin muodostavat johtimet ja kytkennät säilyvät kommunikaation päättymiseen asti. Piirikytkentäisessä verkossa ei ole reitittimiä, koska kytkennän jälkeen reitti on selvä, eikä ole mitään reititettävää. Piirikytkentäisessä verkossa linkkien solmukohdissa sijaitsevat laitteet ovat kytkimiä, eli esimerkiksi puhelinkeskus on kytkin, eikä reititin.

Piirikytkentä

# video2019Luento4f
# v2018L4_5
  • Täytyy varata resurssit (jokaiselta linkiltä kapasiteettia, muodostetaan piirikytkentä)
  • Varattuja resursseja ei voi muut käyttää
  • Huono purskeiselle liikenteelle (perinteinen web sivujen selaus)
  • Hyvä puheliikenteelle... ja olisi hyvä multimedian suoratoistolle
  • Verkon muu liikenne ei vaikuta omaan tiedonsiirtonopeuteen
# video2019Luento4g
# videoJohdanto33
Piirikytkentää 1940 luvulla
Piirikytkentää 1940 luvulla

Pakettikytkentä

# video2019Luento4h
# v2018L4_6
  • Ei erikseen varata resursseja
  • Pystytään palvelemaan enemmän käyttäjiä
  • Paljon parempi purskeiselle liikenteelle
  • Verkon muu liikenne vaikuttaa omaan tiedonsiirtonopeuteen
  • Visualisoinnissa linkkien D ja E kapasiteetti on puolet piirikytkentäisen visualisoinnin tapauksesta
# v2018L4_9
# videoJohdanto34

Viive ja hävikki pakettivälitteisissä verkoissa

# video2019Luento4i
# v2018L4_7
  • Pakettien viiveen neljä syytä
    • Laskenta solmuissa
    • Jonotus reitittimissä eli ruuhka
    • Lähetysviive on paketin koko bitteinä jaettuna tiedonsiirtonopeudella -
    • Etenemisviive on etäisyys jaettuna etenemisnopeudella -
# videoJohdanto35

Visualisointeja viiveestä ja pakettien putoamisesta

# video2019Luento4j
# v2018L4_8
# videoJohdanto36

Pakettikytkentä vs. piirikytkentä

# video2019Luento4k
  • Esimerkki molemmista (GSM runkoverkko)

# videoJohdanto32

Pakettikytketyn verkon lähetysviive

Internetin laitteet kommunikoivat toistensa kanssa viestien välityksellä. Viestit voivat olla mitä vaan ja riippuvat laitteiden, sovellusten ja protokollien suunnittelijoista. Pakettikytketyssä verkossa viestin lähettäjä yleensä pilkkoo viestin pienempiin osiin, joita kutsutaan paketeiksi. Verkossa paketit kuljetetaan tiedonsiirtolinkkien ja reitittimien välityksellä. Reitittimien tehtävänä on välittää paketti oikealle reitille tiedonsiirtolinkkejä pitkin ja tiedonsiirtolinkit yhdistävät verkossa sijaitsevat laitteet toisiinsa. Paketti lähetetään tiedonsiirtolinkeillä kyseisen linkin täydellä tiedonsiirtonopeudella. Viestit ja paketit koostuvat biteistä ja linkin tiedonsiirtonopeus on linkkiteknologiasta riippuva fyysinen suure sille, kuinka paljon dataa voidaan lähettää tietyssä aikayksikössä. Yleensä tiedonsiirtonopeus ilmaistaan siten, että määritellään kuinka monta bittiä linkillä voidaan siirtää yhdessä sekunnissa. Jos siirrettävän datan, esimerkiksi paketin, koko on bittiä ja linkin tiedonsiirtonopeus on bittiä sekunnissa [bit/s], niin viive kaikkien L bitin siirtämiseksi linkin yli on sekuntia.

Oletetaan seuraavaksi, että verkossa on vain linkin kapasiteetista syntyvä siirtoviive. Esimerkiksi fyysisen signaalin etenemisviive, bittien käsittelystä johtuvat viiveet sekä muusta tiedonsiirrosta johtuvat viiveet oletetaan nyt nollaksi, jotta saadaan ymmärrys siirtoviiveestä useiden erilaisten linkkien verkossa lähetettäessä useita paketteja. Muut viiveet käsitellään myöhemmin materiaalissa.

Talleta ja lähetä -tiedonsiirtotekniikka

Pakettikytkentäisessä verkossa, paketin reitti verkon läpi ei ole ennalta määritelty, vaan jokainen verkossa oleva reititin päättää seuraavan linkin pakettikohtaisesti ja sitä varten täytyy koko paketti, eli kaikki pakettiin kuuluvat bitit, vastaanottaa, ennen kuin paketissa sijaitsevista osoitetiedoista voidaan päätellä seuraava kohde verkossa ja linkki, jota pitkin sinne päästään. Eli ensin pitää vastaanottaa kaikki paketin bitit, ennen kuin paketin ensimmäisiä bittejä voidaan alkaa lähettää seuraavalle linkille. Kyseistä lähetystekniikkaa kutsutaan tallenna ja lähetä tiedonsiirroksi, englanniksi store-and-forward transmission. Piirikytketyssä verkossa sen sijaan reitti määritellään ennen ensimmäisen bitin lähettämistä, ja verkon kytkimiin kytketään reitti valmiiksi, jolloin bittejä voidaan välittää eteenpäin heti niiden saavuttua kytkimelle. Piirikytketyn verkon tapauksessa käytetään termiä kytkin reitittimen sijaan, koska verkon laitteet eivät tee tiedonsiirronaikaista reitin valintaa.

# video2019Luento4l
# v2018L4_10
# t5a

Lyhyt ohje LaTeX symboleihin

Kirjoita seuraavaksi lauseke tiedonsiirtoviiveelle tehtävänannon mukaisesti. LaTeX-lausekkeiden tarkastamiseen käytetään opettajan kehittämää tarkistinta.

# video2019Luento4m
# v2018L4_11
# t5b

Tämä meni hienosti. Viidennellä kerralla ymmärsin, että jakomerkki pitää laittaa “ylämäkeen” eikä “alamäkeen”. Koitin kaikki mahdolliset \begin{equation} jne., ja mietin, että missä vika. Onneksi katsoin videon uudelleen ja “löysin” virheen.

av: joo jakomerkkinä joko / (ei \) tai sitten \frac{}{}.

13 Sep 21 (edited 14 Sep 21)

Seuraavaksi tehdään lauseke, johon tulee sijoittaa tehtävänannossa annetut arvot lausekkeen muuttujien paikoille.

# video2019Luento4n
# v2018L4_12
# t5c

Tähän kohtaan tulee antaa vastaukseksi laskutoimituksen lopputulos, eli ei muuttujia sisältävää lauseketta tai lauseketta, johon on sijoitettu muuttujien arvot.

# video2019Luento4o
# v2018L4_13
# t5d

Edellä käsiteltiin yhden paketin siirtämistä yhden linkin yli. Yleistetään kaava nyt useammalle paketille.

# t5e

Seuraavaksi tutkitaan yhden paketin siirtämistä kahden samanlaisen linkin yli. Kun paketti pitää siirtää useamman linkin yli, täytyy se ensin vastaanottaa kokonaan, jotta se voidaan lähettää eteenpäin. Jos paketin reitillä on esimerkiksi kaksi linkkiä, joiden tiedonsiirtonopeus on sama, niin kokonaisviive kaksinkertaistuu.

# video2019Luento4p

Raahaa alla muuttujat ja arvot paikoilleen, kun paketin tulee kulkea kahden linkin yli.

# t5f

Yleisesti, jos yksi paketti välitetään :n linkin yli ja kaikilla linkeillä on sama tiedonsiirtonopeus, voidaan kokonaissiirtoviive määritellä linkkien määrän, paketin koon ja tiedonsiirtonopeuksien funktiona.

# t5g

Kun useampi paketti lähetetään usean linkin yli, niin viivettä määrittäessä tulee ottaa huomioon se että eri paketit voivat liikkua samaan aikaan eri linkeillä. Esimerkiksi, kun toista pakettia ollaan lähettämässä ensimmäiselle linkille, niin samaan aikaan ensimmäistä pakettia lähetetään toiselle linkille.

Olkoon lähetettävänä viisi kappaletta 200 bitin kokoista pakettia kahden linkin yli. Vertaa siirtoon kuluvaa viivettä tapaukseen, jossa lähetetään yksi 1000 bitin paketti kahden linkin yli.

Seuraavaksi muodostetaan kuvia esimerkkiverkon pakettien sijainneista eri ajanhetkillä. Raahaa paketit oikeisiin kohtiin tehtävänannoissa mainituilla ajan hetkillä. Ensimmäisen paketin lähetyksen aloitus määritellään ajan nolla-hetkeksi. Paketit liikkuvat jonoissa, ilman viivettä, vasemmalta oikealle ja reitittimen jonossa aina oikeanpuolimmaiseen vapaaseen paikkaan asti.

# video2019Luento4q
# v2018L4_14
# t5h
# t5i
# t5j

Kun kaikki paketit ovat saman kokoisia, voidaan niiden pituutta merkitä samalla muuttujalla, olkoon se . Lähetettävän datan pilkkominen pienempiin osiin pienentää siirtoviivettä, kun paketit kulkevat useamman linkin läpi. Viive on suhteessa pakettien lukumäärään ja linkkien lukumäärään. Voidaan ajatella että ensin lasketaan ensimmäisen paketin viive kaikkien linkkien yli. Sitten lisätään tulokseen se viive mikä aiheutuu jäljellä olevien pakettien lähettämisestä vuorollaan viimeisen linkin yli, koska paketit voivat kulkea aiempia linkkejä samanaikaisesti.

# video2019Luento4r
# v2018L4_15
# t6a

Tutkitaan vielä kahdella eri ajan hetkellä tapausta, jossa on kolme linkkiä ja muodostetaan sitten yleinen lauseke siirtoviiveelle, kun useita paketteja lähetetään usean linkin yli.

# t6b
# t6c

Tutkimalla edellisten kuvaajien pakettien sijaintia erilaisilla ajan hetkillä, voidaan päätellä siirtoviiveen riippuminen linkkien ja pakettien määrästä, kun linkeillä on saman tiedonsiirtonopeus ja paketit ovat saman kokoisia.

# t6d

Tutkitaan seuraavaksi tilannetta, jossa linkit ovat erilaisia, eli tässä tapauksessa siirtävät bittejä erilaisilla nopeuksilla. Kun reitittimeltä uloslähtevä linkki on hitaampi kuin reitittimeen sisään tuleva linkki, niin edellistä pakettia ei vielä ole ehditty lähettämään kokonaan hitaammalle linkille, kun seuraava paketti jo saapuu. Tällöin seuraava paketti joutuu odottamaan, kunnes edellinen paketti on saatu siirrettyä linkin yli. Kyseessä ei ole jonotusviive, vaan tässä tapauksessa odottamiseen johtava viive johtuu hitaamman linkin siirtoviiveestä.

# v2018L4_16
# t6e
# t6f
# t6g
# t6h

Edellisistä kuvaajista voidaan havaita, että viiden paketin kokonaisviive erilaisille linkkinopeuksille, noudattaa samaa kaavaa, kuin saman kokoisille linkeille. Eli, määritetään ensimmäisen paketin viive kaikkien linkkien yli ja lisätään siihen viive, joka syntyy muiden pakettien siirtämisestä viimeisen linkin yli. Nyt viimeinen linkki sattui olemaan hitain linkki, joten tutkitaan vielä tilannetta, jossa hitain linkki on jokin muu.

# t6i

Kun linkkien nopeudet ja niistä johtuvat viiveet ovat eri järjestyksessä, havaitaan että päätepisteiden välillä on eroja siinä missä kohtaa verkkoa paketit ovat menossa tietyllä ajanhetkellä. Kuitenkin, paketit saavuttavat päätepisteen samalla ajanhetkellä molemmissa tapauksissa. Esimerkiksi kahdessa edellisessä kohdassa, L1 saavuttaa reitittimen 4 ajanhetkellä 35 sekuntia ja L2 ajan hetkellä 55 sekuntia. Vastaavasti muut paketit saapuvat reitittimelle 4 20 sekuntia myöhemmin kuin edellinen saapunut paketti. Tämä 20 sekunnin viive on molemmissa edellisissä kohdissa hitaimman linkin viive, riippumatta siitä millä kohdalla reittiä hitain linkki on.

Muodostetaan seuraavaksi lauseke usean paketin siirtoviiveelle, kun linkeillä on erilaiset tiedonsiirtonopeudet. Tehdään ensin edellistä visualisointia vastaava lauseke ja muodostetaan sen jälkeen yleinen lauseke.

Kokonaisviiveeseen tulee viive jokaiselta linkiltä yhdelle paketille, siitä kun kaikilla linkeillä ei ole lähetyksen alussa ja lopussa paketteja. Paketit liikkuvat verkossa samaan aikaan, paitsi ensimmäisten ja viimeisten pakettien kohdalla, jolloin osa linkeistä on tyhjiä. Eli lasketaan yhteen yhden paketin kokema viive jokaisella linkillä. Lisäksi tulee ottaa huomioon muut paketit ja niiden siirtämisestä aiheutuva viive. Edellä huomattiin että verkon hitain linkki on ratkaiseva linkki kokonaisviiveessä, joka viivästää jokaista pakettia. Koska paketit kulkevat linkeillä saman aikaisesti, ei nopeammilla linkeillä ole vaikutusta näihin muihin paketteihin (niiden viive tulee otettua huomioon siinä, kun lasketaan yhdelle paketille viive kaikkien linkkien yli). Näin ollen yhden paketin kokemaan viiveeseen tulee lisätä vielä muiden pakettien kokema viive verkon hitaimman linkin yli.

# t6j

Muodostetaan seuraavaksi yleinen lauseke :lle linkille. Tehdään ensin lausekkeen summatermi muokkaamalla alla olevaa LaTeX summaesimerkkiä. Eli summalausekkeen tulee antaa summa kaikista viiveistä ensimmäiselle paketille. Muodostetaan myöhemmin termi, joka lisää hitaimman linkin viiveen kaikille lopuille paketeille. Huomaa, että nyt linkin indeksoiva muuttujat, esim. ,
täytyy antaa alaindeksinä. Aiemmin alaindeksiä ei käytetty esimerkiksi nimetessä linkit jne., koska alaindeksiä ei saa toteutettua visualisointitehtävissä.

# t7a

Muodostetaan seuraavaksi lauseke LaTeX:illa, joka antaa minimin, eli pienimmän, kaikista tiedonsiirtonopeuksista, jota voidaan sitten käyttää suurimman viiveen määrittämiseen. Alla on esimerkki LaTeX:in min-funktiosta, jonka muuttujat tulee muokata tehtävänannon mukaisesti.

# t7b

Muodostetaan nyt yleinen lauseke viiveelle, kun lähetetään pakettia linkin yli linkkien tiedonsiirtonopeuksien ollessa , missä . Eli lausekkeen tulee sisältää viive yhden paketin kuljettamisesta kaikkien linkkien yli sekä viive joka seuraa siitä, kun muut paketit siirretään hitaimman linkin yli.

# t7c

Ylläolevat lausekkeet käsittelivät pieniä tiedonsiirtonopeuksia ja pakettikokoja, numeroarvojen pitämiseksi yksinkertaisina, mutta johdetut kaavat pätevät toki suuremmillekin arvoille.

Kerrosarkkitehtuurit

# video2019Luento5
# videoJohdanto30
# video2019Luento5a
# v2018L4_17

Internetissä on käytössä kerrosarkkitehtuuri, mikä käytännössä tarkoittaa sitä, että sovellusten väliseen tiedonsiirtoon liittyvät toimenpiteet on jaettu eri kerroksille. Kerrosmalli perustuu siihen että jokainen kerros tarjoaa palveluitaan ylempänä olevalle kerrokselle ja käyttää alempana olevan kerroksen palveluja. Palvelut saadaan käyttöön kerrosten välisen rajapinnan kautta, eikä ylempien kerrosten tarvitse huolehtia siitä miten alemmat kerrokset palvelun toteuttavat. Eri laitteissa sijaitsevat vastaavat kerrokset kommunikoivat toistensa kanssa käyttämällä yhteistä protokollaa.

Seuraavaksi käydään läpi kaksi kerrosarkkitehtuuria, standardoitu OSI-malli sekä käytännön protokollista johdettu TCP/IP-malli.

# video2019Luento5b
  • Laita visualisoinnissa TCP/IP (Internet protocol suite) ja OSI -viitemallin mukaiset protokollakerrokset oikeaan järjestykseen. Kerrosta raahatessa saat myös tietoa kerroksen tehtävästä.
# video2018Luento5

OSI-viitemalli

# v2018L5_1

OSI (Open Systems Interconnection) -viitemalli kehitettiin 1970 luvulla ISO (International Organization for Standardization) -organisaation toimesta. Samoihin aikoihin, maailman tietoverkkojen ollessa pääasiassa erillään toisistaan, kehitettiin useita erilaisia kerrosmalleja. OSI-viitemallin standardi valmistui 1984 ja siinä verkkosovelluksille tarjottavat palvelut on jaoteltu seitsemään kerrokseen, jotka numeroidaan ykkösestä seitsemään, alhaalta ylöspäin, eli fyysinen kerros on ensimmäinen kerros ja sovelluskerros on seitsemäs kerros. OSI-viitemallin mukaisia protokollia on ollut käytössä vain muutamia, koska Internet kehittyi käytännössä TCP/IP-protokollien mukaisesti. Internetissä vakiintui TCP/IP:n mukainen kerrosarkkitehtuuri, eikä sen protokollia kehitetty sijoittumaan OSI-mallin mukaisille kerroksille.

OSI-viitemallin kerrosten numerointi on kuitenkin jäänyt elämään ja monesti kerroksista käytetään numeroa, niiden nimen sijaan. OSI-mallin mukaisesti sovelluskerrosta kutsutaan seitsemänneksi kerrokseksi, vaikka tarkoitettaisiin TCP/IP-mallin mukaista sovelluskerrosta. Muut yleisesti käytetyt numerot kerroksille ovat: ensimmäinen kerros on fyysinen kerros, toinen kerros on linkkikerros, kolmas kerros on verkkokerros ja neljäs kerros on kuljetuskerros. Edellä mainittujen kerrosten tehtävät ovat suurin piirtein vastaavat sekä OSI- että TCP/IP-viitemallissa.

OSI-mallin viides ja kuudes kerros ovat istuntokerros ja esitystapakerros. Internetissä näiden kerrosten tehtäville ei ole omia kerroksia, esimerkiksi istuntokerroksen yhteydenmuodostus tehtävät hoidetaan valitsemalla kuljetuskerrokselta palvelun tarjoava kuljetuspalvelu, tai sitten sovelluskerrokselta protokolla yhteydenmuodostus-palvelun tarjoava protokolla. Jos mikään kerros ei tarjoa tarvittavaa palvelua, täytyy sovelluksen tekijän itse implementoida tarvitsemansa palvelu tai käyttää olemassa olevia kerrosten välisiä palveluita. Esimerkiksi loogisesti esitystapakerrokselle kuuluva liikenteen salaaminen mm. tälle TIM-palvelimelle tehdään TCP/IP-mallissa kuljetus- ja sovelluskerrosten välissä.

Protokollakerrosten lisäksi käytetään joskus termiä kahdeksas kerros, kuvaamaan käyttäjäkerrosta tai poliittista kerrosta OSI-mallin päällä. Laita seuraavassa tehtävässä OSI-mallin kerrokset oikeaan järjestykseen ensimmäinen kerros alimmaiseksi ja seitsemäs kerros ylimmäiseksi.

# t8a
# t8b

TCP/IP-viitemalli

Internetissä on vakiintunut käyttöön TCP/IP-viitemalli, joka on saanut nimensä Internetin kuljetuspalvelun mahdollistavien protokollien nimien mukaan. TCP/IP-viitemalli on kerrosarkkitehtuuri, mutta kerrosten nimet ja lukumäärä vaihtelevat eri lähteissä. RFC 1122 -dokumentti määrittelee neljä-kerroksisen kerrosarkkitehtuurin, josta puuttuu fyysinen kerros ja verkkokerroksen nimenä on internetkerros. Dokumentit RFC 1122 ja RFC 1123 muodostavat yhdessä Internet standardin numero 3. Tässä materiaalissa käytetään TCP/IP-viitemallista Kurosen ja Rossin kirjassa käytettyjä määritelmiä. Kirjassa esitetään että TCP/IP-viitemallissa on viisi kerrosta ja niiden suomennokset ovat sovelluskerros, kuljetuskerros, verkkokerros, siirtoyhteyskerros ja fyysinen kerros. Tosin siirtoyhteyskerroksesta tässä materiaalissa käytetään pääasiallisesti nimitystä linkkikerros. Nämä suomennokset ja niiden englanninkieliset versiot ovat vastaavia kuin OSI-viitemallissa käytetyt termit. TCP/IP-viitemallista käytetään myös nimitystä TCP/IP-protokollapino tai -protokollaperhe.

# t8c
# t8d

Protokollat eri kerroksilla

Viitemallin kerrosten tehtävät toteutetaan protokollilla, joihin tutustutaan tarkemmin myöhemmin tässä materiaalissa. Koska kerrosten tehtävät ovat erilaisia, on kehitetty eri tyyppisiä protokollia, jotka soveltuvat tiettyihin tehtäviin. Käytännössä protokollia ei aina voi määrittää kuuluvaksi jollekin tietylle kerrokselle, koska protokollat voivat toteuttaa tehtäviä useammalta kerrokselta. Lisäksi protokolla saattaa kerrosarkkitehtuurissa sijaita esimerkiksi sovellus- tai kuljetuskerroksella, mutta tehdä verkkokerrokseen liittyviä tehtäviä.

Protokollista käytetään yleisesti niiden nimistä johdettuja lyhenteitä, niiden nimien sijaan. Selvitä seuraaviin tehtäviin protokollien lyhenteiden suhteellinen asema protokollapinossa.

# t8e
# t8f
# t8g
# t8h

Datan paketointi

# video2019Luento5c
# v2018L5_2

Klikkaa visualisoinnissa sanomaa, jotta saat sen vastaanottavalle sovellukselle. Seuraa hyötydatan (sanoman) ja kontrolli-informaation, eli eri kerrosten otsikkokenttien H1 - H4 käyttäytymistä. Sanoma on sovelluksen muodostama sovellusprotokollan mukainen viesti. Visualisoinnissa ei ole eritelty sanoman sisältöä, mutta se sisältää sovelluskerroksen protokollan otsikkotiedot (H5) ja sovelluksen lähettämän hyötydatan. Visualisoinnissa alapalkissa esitetyn verkkoselain-esimerkin tapauksessa sanoma sisältäisi normaalisti vain HTTP-otsikkotietoja, kun pyydetään HTML-sivua WWW-palvelimelta.

# videoJohdanto31

Tietoverkon jokainen laite ei välttämättä toteuta kaikkia viitemallin mukaisia kerroksia. Internetissä yleensä vain verkon reunalla sijaitseviin päätelaitteisiin toteutetaan jokainen TCP/IP-viitemallin mukainen kerros. Koska päätelaitteissa ovat Internetiä käyttävät sovellukset, täytyy niihin toteuttaa sovellusten kommunikaatiota varten, sovelluskerroksen protokollia. Alempien kerrosten protokollat toteutetaan palvelemaan ylemmän kerroksen protokollia. Internetissä datapakettien edelleen lähetyksen verkon ytimessä toteuttaa käytännössä reititin tai kytkin, joihin tyypillisesti toteutetaan vain alimmat kerrokset. Esimerkiksi kytkimiin on normaalisti toteutettu ensimmäinen ja toinen kerros, kun taas reitittimiin on toteutettu kolme alinta kerrosta. Näin ollen verkossa paketteja edelleen lähettävät laitteet eivät ymmärrä sovellusten kommunikoinnin sisältöä, eivätkä sitä mitkä sovellukset datapaketteja lähettävät. Tähän on kuitenkin useita poikkeuksia, esimerkiksi palomuuri, NAT-reititin tai "Layer 7 -kytkin". Kerrosarkkitehtuurin ansiosta verkon ytimessä sijaitsevat laitteet voivat keskittyä omaan tehtäväänsä, eli pakettien välittämiseen, eikä välittää siitä mitä dataa ne siirtävät eteenpäin.

# t8i

Tämän tehtävän logiikka toimi vastoin omaani, kun pohdin tätä visualisoinnin kautta. Vaihtoehtoja montaa ei ole ja kun kaikki kentät pitää täyttää eikä logiikan mukaan voi mahduttaa otsikoita kerroksen mukaan eli miten otsikoita lisätään, kun tullaan alaspäin sovelluksesta. Aina oppii uusia tapoja, miten palapelejä tehdään.

av: joo, tehtävissä logiikka on eri päin kuin visualisoinnissa. Tehtävissä logiikka on niin päin, kuin se yleisimmin on esitetty. Silloin siis kokonaisuutta luetaan vasemmalta oikealle alkaen niistä osioista (biteistä), jotka vastaanotetaan ensimmäisenä (tai lähetetään ensimmäisenä).

01 Oct 21 (edited 04 Oct 21)

Datan kerroksittainen paketointi, englanniksi encapsulation, mahdollistaa sen että alempien kerrosten ei tarvitse tietää mitään ylemmän kerroksen välittämästä datasta. Perusidea voidaan yksinkertaistaa siten, että ylempi kerros antaa alemmalle kerrokselle kaksi asiaa: (i) hyötykuorman, eli siirrettävän datan ja (ii) osoitetiedot, eli sen minne hyötykuorma tulee välittää. Alempi kerros sitten paketoi hyötykuorman, asettaa tarvittavat otsikkotiedot pakettiin. Tämä otsikkotiedoilla varustettu alemmalla kerroksella muodostettu paketti on sitten uusi hyötykuorma, joka välitetään seuraavalle kerrokselle, joka lisää ylemmältä kerrokselta saapuvaan hyötykuormaan oman kerroksen osoitetiedot, muodostaen oman kerroksen hyötykuorman.

# t8j

Tässäkin logiikka toimi eri tavalla kuin visualisoinnissa eli sovelluksen lähettämä viesti kulkee mielestäni vasemmalta oikealle ja sitä mukaa, kun tullaan alemmille kerroksille, niin uuden kerroksen otsikko tulee sanoman oikealle puolelle.

av: joo, valitsin näin päin, kun esimerkiksi pakettikaappaus ohjelmisto Wireshark näyttää bitit tässä järjestyksessä. Otsikot se näyttää ylhäältä alaspäin järjestyksessä, mutta todellisuudessa data on kuitenkin jono bittejä, joiden tarkoitus selviää eri kerrosten otsikkokentistä.

01 Oct 21 (edited 04 Oct 21)

Otetaanpa esimerkiksi reaalimaailmasta postipalvelu, johon Internetin toimintaa usein verrataan. Ajatellaan tapausta, jossa lapsi kirjoittaa kirjeen serkulleen. Voidaan ajatella että kirjettä kirjoittava lapsi on sovellus. Sovellusprotokolla on kieli, jota serkut käyttävät kommunikointiin. Äidin, kuljetuskerroksen, saa kuljettamaan kirjeen eteenpäin lapsen ja äidin välisen puhe-rajapinnan kautta. Lapsi sanoo esimerkiksi: "lähetätkö tämän kirjeen serkulle". Äiti ottaa kirjeen, paketoi kirjeen kirjekuoreen ja lisää kuoreen osoitetiedot. Se kun äiti katsoo osoitekirjasta serkun nimen perusteella osoitteen vastaa Internetin nimipalvelua, DNS (Domain Name System). Valmiin paketoidun kirjeen äiti antaa verkkokerrokselle, jonka tehtävä on viedä kirje oikeaan osoitteeseen. Isä tarjoaa kotona verkkokerroksen palvelun, ottaa kirjeen ja osoitteen perusteella tietää että kirje pitää viedä lähimpään postilaatikkoon. Sieltä postipalvelu, verkon ydin, kuljettanee kirjeen eteenpäin postikeskusten, reitittimien, kautta. Jotta kirje saadaan postilaatikkoon, täytyy käyttää linkkikerroksen palvelua, vanhin lapsi saa kirjeen ja tiedon siitä minne se pitää viedä, eli lähimpään postilaatikkoon. Vanhin lapsi selvittää postilaatikon osoitteen, eli sijainnin, ja antaa kirjeen ja postilaatikon osoitteen fyysiselle kerrokselle. Olkoon fyysinen kerros vaikka lapsen kaveri, joka sitten vie kirjeen postilaatikkoon jollain fyysisellä tekniikalla, esimerkiksi kävellen tai pyöräillen. Postilaatikolla on sitten linkkikerros, jossa postinkantaja kuljettaa kirjeet seuraavalle laitteelle, käyttäen omaa fyysistä tekniikkaansa.

Tietoverkot ja tietoturva

# video2019Luento5d
# videoJohdanto39

Tänä päivänä tietoverkkoihin liittyvä tietoturva on yksi keskeisimmistä aiheista tietoverkkojen kehityksessä ja tutkimuksessa. Tietoverkkoturvallisuus on ala, jossa pyritään kehittämään ratkaisuja tietoverkkoja hyödyntäviin tietoturvaan kohdistuviin hyökkäyksiin ja uhkiin. Mahdollisuus hyökkäyksiin ja uhat tietoturvallisuudelle syntyvät, kun järjestelmässä on jokin haavoittuvuus, englanniksi vulnerability. Yleisesti tietoturvauhan muodostava haavoittuvuus on heikkous joko tietojärjestelmissä, prosesseissa tai ihmisen toiminnassa. Tietoverkkoturvallisuuteen liittyvä haavoittuvuus on yleensä tietojärjestelmien verkkokommunikaation toteuttaviin tietoliikenneprotokolliin tai niiden ohjelmistototeutuksiin liittyvä heikkous niiden suunnittelussa tai toteutuksessa. Haavoittuvuudelle on tehty useita eri määritelmiä, joista eräs on OWASP Säätiön määritelmä. Sivustolta löytyy myös listattuna suuri joukko haavoittuvuuksia ja niiden kuvaukset. OWASP on yhteisö, jonka tavoitteena on parantaa ohjelmistojen tietoturvaa. Heidän neljän vuoden välein päivittyvä lista kymmenestä suurimmasta tietoturvauhasta, OWASP Top Ten, on hyvin suosittu, kun haetaan tietoa verkkosovellusten, erityisesti WWW-sovellusten, tietoturvaan liittyvistä teknisistä haavoittuvuuksista. Viimeisin päivitys on tehty vuonna 2021.

Moi Ari, pyysit, että jos tekstistä löytyy jotain korjattavaa tai kommentoitavaa, niin lukija olisi yhteydessä. Luin tuosta OWASP Top 10 listasta luentomateriaalista, että päivittyy vuosittain, mutta organisaatiolla on ollut tapana julkistaa lista neljän vuoden välein, joista ensimmäinen oli 2013, sitten 2017 ja nyt on julkaistu 2021. Varmasti kommentoivat sivuillaan uusia löytöjä ym., mutta virallinen lista (toistaiseksi) tullut aina neljän vuoden välein.

av: kiitos, päivitin tekstin

22 Dec 21 (edited 22 Dec 21)

Ensimmäinen askel tietoverkkoturvallisuudessa on tunnistaa verkossa sijaitsevan palvelun käyttäjät, todentaminen, englanniksi authentication. Todentamisella tarkastetaan käyttäjän tai sovelluksen oikeudet palvelun resursseihin. Todentaminen tehdään valtuuksilla, englanniksi credentials. Hyvin usein valtuutus toteutetaan käyttäjätunnuksella ja salasanalla. Esimerkiksi tämän materiaalin interaktiivisiin tehtäviin vastataksesi, täytyy olla kirjautunut TIM-järjestelmään. Materiaalia pystyy lukemaan ilman kirjautumistakin. Jos olet kirjautunut TIM-järjestelmään sisään, logged in englanniksi, niin käyttäjätunnuksesi on Anonymous. Internetin alkuaikoina käyttäjätunnukset ja salasanat välitettiin verkossa selväkielisenä, eli salaamattomana. Tällöin kuka tahansa, joka pystyi kaappaamaan lähetetyt viestit, sai suoraan tarvittavat tunnistautumistiedot.

Nykyään, yhä useampaan palveluun tunnistauduttaessa, tunnistamiseen käytettävät tiedot välitetään salattuna. Yksinkertaisesti voidaan todeta, että salaus toteutetaan sekoittamalla lähetettävä informaatio siten, että vain vastaanottaja kykenee sekoittamisen purkamaan. Tiedon salaaminen tehdään salakirjoitusmenetelmällä, jossa on niin sanottu salausavain, jolla tieto "lukitaan" siten, ettei sitä saa selvitettyä ilman salausavainta.

Digitaalisen tiedon välittäminen salattuna

Nykyään tietoverkoissa siirrettävä data salataan yleisesti kahdella eri salausmenetelmällä, jotka ovat nimeltään yksityisen avaimen salausmenetelmä tai julkisen avaimen salausmenetelmä. Näistä julkisen avaimen salausmenetelmä on turvallisempi ja yleisemmin käytössä. Joskus julkisen avaimen salausmenetelmää käytetään yksityisen avaimen salausmenetelmän yksityisten avainten välittämiseen salattuna. Tiedon salaaminen, englanniksi encryption, vaatii vastinkumppanilta tiedon purkamisen, englanniksi decryption, jotta saadaan selville alkuperäinen selkokielinen viesti. Jos jokin muu taho, kuin datan tarkoitettu vastaanottaja, kykenee salatun tiedon muuttamaan selkokieliseksi, käytetään termiä salauksen murtaminen, englanniksi cryptographic cracking, josta tulee myös suomenkieleen puhetermi kräkkääminen. Cracking yleisesti tarkoittaa minkä tahansa järjestelmän, sen osan tai toiminnan tietoturvan kiertämistä. Monesti näkee käytettävän termiä hacking, joka ei oletusarvoisesti ole vihamielistä kuten tiedon murtaminen. Hacking, suomenkielinen termi häkkääminen, on tiedon selvittämistä ja sen avulla oppimista. Häkkääminen käsittää lisäksi muutakin toimintaa kuin pelkän salatun tiedon murtamisen. Häkkäämistä tekevää henkilöä kutsutaan nimellä hakkeri tai häkkeri, englanniksi hacker. Esimerkiksi tietomurtojen etsimisestä korjaamista varten käytetään termiä hacking. Toki selvitettyä tietoa voi käyttää rikollisesti. Monesti hacking sanaa käytettäessä korostetaan tekijän roolia lisäämällä sanan yhteyteen joko valkohattu, mustahattu tai harmaahattu. Valkohattuhakkeri etsii tietoturva-aukkoja, jotta ne saadaan korjatuksi, kun mustahattuhakkeri käyttää tietoturva-aukkoja rikolliseen tarkoitukseen. harmaahattuhakkerin toiminta koetaan jonkin verran kyseenalaiseksi, eli häkkäämisen tarkoitus ei ole puhtaasti hyväntahtoista.

Yksityisen avaimen salaus

Digitaalisen tiedon salaus toteutettiin alkujaan yksityisillä salausavaimilla, niin kutsutulla yksityisen avaimen salauksella tai symmetrisen avaimen salauksella, englanniksi symmetric-key cryptography. Symmetrinen sana tulee siitä, että tiedon salaamiseen ja purkamiseen käytetään samaa salausavainta. Digitaalinen viesti salakirjoitettiin avaimella, joka oli vain lähettäjän ja vastaanottajan tiedossa. Menetelmän hankaluutena oli se kuinka yksityiset avaimet välitetään turvallisesti molemmille osapuolille ja kuinka voidaan olla varmoja siitä, ettei salausavain päädy vääriin käsiin. Salausavain voi paljastua esimerkiksi tietomurron tai sai salauksen murtamisen seurauksena. Esimerkiksi toisen maailmansodan aikainen Saksalaisen Enigma-salakirjoituskoneen vastaava mekaaninen yksityisen avaimen salaus saatiin murrettua kaappaamalla hyvin paljon salattuja viestejä sekä sotasaaliina saatuja avaintauluja sekä Enigma laitteita. Yksityisen avaimen salausmenetelmän heikkous johtuu monesti ihmisistä, kun salausavaimia ja salausmekanismeja ei muuteta tarpeeksi usein. Vaikka saksalaiset vaihtoivat avaimia tietyin väliajoin, ehdittiin murretuilla salausavaimilla selvittämään suuri osa kaapatuista viesteistä. Muuttumattomuus johtaa siihen, että kaapatuista viesteistä löydetään viestien määrän kasvaessa enemmän ja enemmän informaatiota salauksen murtamiseen. Teoriassa, jotta yksityisen avaimen salausmenetelmä olisi täysin turvallinen, täytyisi salausavain vaihtaa jokaiseen viestiin erikseen, mikä ei käytännössä ole järkevää.

Julkisen avaimen salaus

Vuonna 1976 Whitfield Diffie ja Martin Hellman julkaisivat niin kutsutun julkisen avaimen salauksen, englanniksi public-key cryptography. Julkisen avaimen salausmenetelmässä ei tarvitse välittää salattua avainta osapuolelta toiselle, vaan molemmilla osapuolilla on oma yksityinen salausavain. Lisäksi molemmilla osapuolilla on myös julkinen salausavain. Menetelmässä tieto salataan julkisella salausavaimella ja puretaan yksityisellä salausavaimella. Menetelmää kutsutaan nimellä epäsymmetrisen avaimen salaus, kun salaukseen ja sen purkamiseen käytetään eri salausavaimia. Salaaminen eri avaimilla onnistuu, kun avaimilla on tietty matemaattinen riippuvuus toisistaan. Myöhemmin materiaalissa on matemaattisohjelmistollinen esimerkki julkisen avaimen salausmenetelmän toiminnasta.

Julkisen avaimen todentaminen

Julkisen avaimen käytössä tulee tarve todentaa se, että julkinen aivan on oikea lähettäjän julkinen avain. Menetelmän toiminta perustuu siihen, että kun esimerkiksi lähetetään sähköposti sähköpostipalvelimelle, niin käytetään sähköpostipalvelimen julkaisemaa julkista avain viestin salaamiseen, jotta sähköpostipalvelin osaa viestin sitten purkaa omalla yksityisellä avaimellaan. Eli, miten voidaan varmistaa, että julkinen avain todella on sähköpostipalvelimen eikä jonkun muun tahon, esimerkiksi tietoverkkorikollisen? Jos salaukseen käytettäisiin jonkun muun tahon julkaisemaa julkista avainta, voisi tämä taho suoraan purkaa kaappaamansa salatun viestin. Ratkaisuna on salausavaimen allekirjoittaminen digitaalisella sertifikaatilla, myös nimellä julkisen avaimen sertifikaatti, englanniksi public key certificate. Kuka sitten todentaa sertifikaatin myöntäjät? Vastaus on internetyhteisö ja internetorganisaatiot. Ohjelmisto- ja laitevalmistajat luottavat tiettyihin hyvämaineisiin sertifikaatin myöntäjiin. Huomioitavaa on, että kuka tahansa voi julkaista julkisen avaimen ja allekirjoittaa sen itse.

Digitaalisen sertifikaatin todentaminen

Digitaalinen sertifikaatti todentaa sertifikaatin, että tietty julkinen salausavain kuuluu tietylle organisaatiolle. Todentaminen tehdään digitaalisella allekirjoituksella. Allekirjoitus toteutetaan laskemalla allekirjoitettavasta julkisesta avaimesta, digitaalisesta sertifikaatista, tai yleisesti, viestistä, salattu digitaalinen allekirjoitus jollakin digitaalisella allekirjoitusalgoritmilla. Allekirjoitettavasta sertifikaatista lasketaan tiiviste, tai hajautusarvo, englanniksi hash, hajautusalgoritmilla, tai toiselta nimeltään tiivistefunktiolla, joita on useita erilaisia. Tiivisteen laskemisen englannin kielinen termi on hashing. Algoritmi laskee allekirjoituksen allekirjoitettavasta viestistä todentajan yksityisellä salausavaimella. Seuraavaksi sertifikaatista laskettu tiiviste salataan sertifikaatin myöntäjän yksityisellä salausavaimella. Tämä kokonaisuus, sertifikaatti selkokielisenä, sekä siitä laskettu tiiviste salattuna, välitetään todennettavaksi. Sertifikaatin todennus tehdään sertifikaatin myöntäjän julkisella avaimella. Sertifikaatti todetaan oikeaksi purkamalla salattu tiiviste sertifikaatin myöntäjän julkisella avaimella. Vastaanotetulle selkokieliselle sertifikaatille lasketaan tiiviste samalla menetelmällä, kuin mitä lähettäjä on käyttänyt. Lopuksi vastaanotetusta selkokielisestä sertifikaatista laskettua tiivistettä verrataan purettuun vastaanotettuun salattuun tiivisteeseen. Jos tiivisteet ovat samat, voidaan todeta, että selkokielinen sertifikaatti on oikea, eikä sitä ole muutettu. Huomioitavaa on, että julkisen avaimen allekirjoittaminen ja julkisen avaimen salaaminen käyttävät julkisia ja yksityisiä avaimia käänteisesti. Julkisen avaimen salauksessa salaamiseen lähettäjä käyttää julkista salausavainta viestin salaamiseen ja vastaanottaja yksityistä salausavainta salauksen purkamiseen. Julkisen avaimen allekirjoittamisessa lähettäjä tai tiedon julkaisija käyttää siis yksityistä salausavainta allekirjoituksen salaamiseen ja allekirjoituksen purkaminen tehdään julkisella salausavaimella.

Esimerkki Caesar salausmenetelmästä

Erilaisia salausmenetelmiä on käytetty jo tuhansia vuosia ja esimerkiksi Julias Caesar käytti viestinnässään menetelmää, missä kaikkia kirjaimia siirrettiin aakkostossa jonkin tietyn määrän. Kirjaintensiirto-salausmenetelmä tunnetaan nimellä Caesarin salakirjoitus, englanniksi Caesar cipher. Toinen paljon käytetty termi menetelmälle on ROT-menetelmä, koska käytännössä aakkostoa rotatoidaan, eli kierretään, siirron verran.

Esimerkiksi, jos ROT-salakirjoitusmenetelmässä kaikkia kirjaimia siirretään neljä kirjainta oikealle, on kyseessä ROT4-menetelmä. ROT4-menetelmässä kirjaimet ITKP olisivat salattuna MXOT. Alla on Caesarin salakirjoituskiekko, jossa vasemman puoleisella kiekolla salakirjoitetaan ja oikean puoleisella puretaan ROT4-salausta. Salattaessa selväkieliset kirjaimet ovat ulkokehällä ja purettaessa sisemmällä kehällä.

Caesar salakirjoituskiekko - ROT4
Caesar salakirjoituskiekko - ROT4

Tuntemalla siirron suuruuden, eli käytetyn ROT-salakirjoituksen salausavaimen, englanniksi cryptographic key, on salaus helppo purkaa. Jos siirron suuruus ei ole tiedossa, on salauksen murtaminen mahdollista tehdä ns. väsytyshyökkäyksellä, englanniksi brute-force attack. Väsytyshyökkäyksessä testataan kaikki mahdolliset vaihtoehdot, kunnes löydetään selkokielinen viesti. Jos tiedetään salauksen olevan ROT-salakirjoitusta englanninkielisellä aakkostolla, tarvitaan enimmillään 25 eri siirtoa salakirjoituskiekolla, jotta salaus saadaan murrettua. ROT-salauksen murtaminen käsin olisi työlästä, mutta nykyinen tietokone murtaisi salauksen hetkessä.

Yksi paljon käytetty rotaatiomenetelmä on ROT13-menetelmä. Koska englannin kielen aakkosissa on 26 kirjainta, niin sekä salauksen muodostaminen että salauksen purkaminen voidaan tehdä samalla menetelmällä, kun aakkoston lopusta hypätään aina aakkoston alkuun. Salakirjoituskiekon tapauksessa, tämä tarkoittaisi sitä, että sekä salaus että purkaminen tehdään samoin asetetulla kiekolla. ROT13-menetelmää on käytetty paljon Internetissä ihmisten välisessä kommunikaatiossa, esimerkiksi foorumeilla ja keskusteluryhmissä mm. piilottamaan spoilereita ja kiertämään kirosanojen estomekanismeja.

# t9a

Jos otamme skandinaavisista merkeistä käyttöön vain ä ja ö kirjaimet, voidaan tehdä ääkkösiä tukeva ROT14 salakirjoitus, joka toimii samoin kuin ROT13.

# t9b

ROT14 antaa tarkastusriville väärän vastauksen ja 0p. Oikea vastaus näkyy tarkastusrivillä ROT12 salakirjoituksella, mutta sekin antaa 0p.

av: lisäsin tarkennuksen tehtävänantoon, joka näkyy teoria tekstissä. Eli kyseessä ei ole oikea ROT14, vaan opettajan keksimä versio, johon on lisätty ä ja ö kirmaimet

26 Aug 21 (edited 27 Aug 21)

ROT-salakirjoitusmenetelmässä rotaation määrä toimii siis salausavaimena. Tänä päivänä tietoverkoissa tunnistautumisen salaukseen käytetään monimutkaisempia salausmenetelmiä, mutta salausavaimen periaate on sama. Tuntemalla salaukseen käytetyn avaimen tai avaimet, on salaus helppo purkaa. Salauksen turvallisuus perustuu yksityisten salausavainten pitämiseen salassa, sekä siihen että salauksen purkaminen muuten, eli tuntematta salausavainta, on mahdollisimman paljon laskentatehoa vaativa operaatio.

Kryptografia

# v2018L5_3
# video2019Luento5e

Tiedon salaaminen on osa kryptografiaa (tai kryptologiaa), englanniksi cryptography, joka on tietoturvan parantamiseen liittyvä tieteenhaara. Nykyaikainen kryptografia perustuu pitkälti matemaattiseen teorioihin sekä niiden soveltamiseen ja toteuttamiseen tietojenkäsittelyn alalla. Kryptografiassa kehitetään menetelmiä, joilla pyritään takaamaan tietoturvan perusperiaatteita

  • Todentaminen (authentication)
  • Eheys (integrity)
  • Luottamuksellisuus (confidentiality)
  • Kiistämättömyys (nonrepudiation)
  • Saatavuus (availability)

Kryptografian salausavainta käyttävät salausmenetelmät voidaan jakaa symmetrisiin ja epäsymmetrisiin salausmenetelmiin. Käytännössä tämän päivän järjestelmien salausmenetelmät ovat yhdistelmiä symmetrisistä ja epäsymmetrisistä salausmenetelmistä. Salausmenetelmille on kehitetty useita erilaisia salausalgoritmeja. Salausmenetelmät, joita voidaan käyttää useammin kuin kerran, voidaan purkaa, mutta hyvä salausmenetelmä on sellainen, jonka purkaminen ei ole realistista järkevässä ajassa nykyisellä laskentateholla.

# v2018L5_4

Symmetriset salausmenetelmät

Symmetrisessä salausmenetelmässä tieto salataan ja puretaan samalla salausavaimella, eli kommunikaatiokumppaneilla on sama yksityinen salausavain, jonka salassa pysyminen on kriittistä tietoturvan kannalta. Symmetriset salausalgoritmit jakautuvat kahteen eri ryhmään jonosalaukseen, englanniksi stream ciphers sekä lohkosalaukseen, englanniksi block ciphers.

Jonosalauksessa salattavaa merkkijonoa salataan, yleensä merkki kerrallaan, yhdistämällä merkkijonoon salausmerkkijono. Yksinkertaisimmillaan ottamalla XOR-operaatio informaatio- ja salausmerkkijonojen biteistä. Jonosalauksen etuna on se ettei tarvitse etukäteen tietää lähetettävän datan pituutta, vaan salaus tehdään sitä mukaa kun uutta tietoa tulee lähetettäväksi. Jonosalauksen tunnetuin ja aiemmin eniten käytetty salausalgoritmi on RC4, joka tänä päivänä ei ole enää turvallinen ja esimerkiksi IETF on RFC 7465 dokumentissa kieltänyt sen käytön TLS protokollassa, jolla salataan nykypäivänä suurin osa esimerkiksi HTTP liikenteestä. RC4 algoritmin korvaajaksi on useisiin salausmenetelmiin ehdotettu Salsa20 algoritmin ChaCha20 muunnosta. GSM-tekniikassa käytetään jonosalausmenetelmiä A5/1 ja A5/2 salaamaan radiotiellä siirrettävät bitit.

Lohkosalausmenetelmät toteuttavat määrätyn salausoperaation tietyn kokoisiin bittilohkoihin. Teoriassa turvallisessa lohkosalausmenetelmässä salausavainta voi käyttää vain yhden lohkon salaukseen, mutta käytännössä on kehitetty menetelmiä, jotka mahdollistavat saman salausavaimen turvallisen käytön. Lohkosalausmenetelmiä käytetään turvaamaan luottamuksellisuus sekä todentaminen. Lisäksi lohkosalausmenetelmiä voidaan käyttää muiden kryptografisten menetelmien toteuttamiseen. Tunnetuimpia ja eniten käytettyjä lohkosalausalgoritmeja ovat DES, AES, RC5, IDEA, ja Blowfish.

Epäsymmetriset salausmenetelmät

Epäsymmetrisessä salausmenetelmässä, eli julkisen avaimen salausmenetelmässä, on sekä julkisia että yksityisiä salausavaimia. Tiedon salaaminen tai yksityisen avaimen määrittäminen tehdään julkisella salausavaimella. Tiedon salaamiseen ja purkamiseen käytetään samaa tai eri salausavainta, riippuen menetelmästä. Jos salaukseen ja purkamiseen käytetään eri salausavaimia, voi salaamiseen käytettävä salausavain olla julkinen. Syy siihen että osa salausmenetelmän avaimista ja parametreista voi olla julkisia, on se että salaiseksi tarkoitettujen parametrien ja avainten selvittäminen julkisesta informaatiosta on käytännössä mahdotonta järkevässä ajassa.

Julkisella avaimella toteutetaan todentaminen, eli tunnistetaan viestin lähettäjä. Julkisella avaimella salatun tiedon purkaminen puolestaan voidaan tehdä vain vastaanottajan salaisella avaimella. Eli salainen avain toteuttaa viestin luottamuksellisuuden. Julkisen avaimen menetelmässä tulee olla varma julkisen avaimen oikeellisuudesta.

Julkisen salausavaimen menetelmiä voidaan käyttää esimerkiksi salaisten salausavainten vaihtoon kommunikaatiokumppanien välillä, esimerkiksi Diffie-Hellman menetelmä. Tunnetuimpia ja eniten käytettyjä julkisen salausavaimen menetelmiä ovat lisäksi RSA ja ElGamal.

Diffie–Hellman avaimenvaihto

Voit halutessasi tutustua Diffie–Hellman avaimenvaihtomenetelmän tarkempaan kuvaukseen. Menetelmässä kommunikoivat osapuolet valitsevat alkuluvun p ja luvun g, joka on primitiivinen juuri modulo p. Menemättä matemaattiseen määrittelyyn tarkemmin, todetaan että luvuilla g ja p ei ole yhteisiä tekijöitä ja lisäksi, kun g korotetaan eri potensseihin ja tuloksesta otetaan modulo p,

niin tulos jakautuu tasaisesti välille . Kyseessä on ns. yksisuuntainen funktio, jonka laskeminen toiseen suuntaan on käytännössä mahdoton. Eli, vaikka tuntisi lukuarvot p ja g sekä tuloksen, niin x:n selvittäminen on mahdotonta, koska useat eri x:n arvot antavat saman tuloksen.

Otetaan esimerkiksi ja , jos tiedetään, että niin tulokseen päästään arvoilla jatkuen aina kuuden välein loputtomasti. Kyseessä on ns. diskreetti logaritmi ongelma.

# t10a

Alkuluvussa p pitää olla ainakin 600 numeroa, jotta nykyisellä laskentateholla ei järkevässä ajassa pystytä selvittämään salaista avainta käymällä kaikki vaihtoehdot läpi.

Menetelmässä molemmat osapuolet valitsevat omat salaiset lukunsa a ja b, joiden avulla lasketaan molemmille julkiset avaimet A ja B. Julkisten avainten vaihdon jälkeen molemmat laskevat salaisen avaimen s, jota voidaan sitten käyttää tulevan kommunikaation salaamiseen jollain salausmenetelmällä.

Valitsemiensa salaisten lukujen avulla, kommunikoivat osapuolet laskevat julkiset avaimensa

Julkisista avaimista on käytännössä mahdoton selvittää salaisia lukuja a ja b, joten julkiset avaimet voi turvallisesti lähettää salaamattomana. Kun julkiset avaimet on lähetetty kommunikaatiokumppaneille, voivat he laskea salaisen avaimen

Koska mahdollinen hyökkääjä ei saa selville salaisia lukuja a ja b, niin niiden ja julkisten avainten avulla laskettu yksityinen avain s pysyy vain kommunikoivien osapuolien tiedossa.

Nyt siis molemmat saavat saman salaisen avaimen, koska kaava on sama, eli kun sijoitetaan ja , saadaan

eli potenssi ja modulo-laskusääntöjen mukaan, salausavaimet ovat samat

Seuraavissa tehtäväkohdissa muodostetaan salainen avain Diffie–Hellman avaimenvaihtomenetelmän mukaisesti. Salaista avainta käytetään sitten ROT-menetelmän rotaation, eli salauksen, määrittämiseen, jotta saadaan salattu viesti selville.

# t10b
# t10c
# t10d

Tiivistealgoritmit

Kryptografian alalla kehitetään myös yksisuuntaisia tiivisteitä, englanniksi hash, joita ei voi käyttää salaukseen, koska tiivisteestä ei voi palauttaa alkuperäistä informaatiota. Tiiviste, suomenkielisen nimensä mukaan, tiivistää alkuperäisen tiedon paljon pienemmäksi. Tiivisteitä käytetään tiedon eheyden sekä kiistämättömyyden todentamiseen. Tiivisteitä käytetään esimerkiksi salasanojen tallentamiseen ei-selkokielisinä, tällöin pitää valita tiivisteen generoimiseksi menetelmä, joka vielä tiedetään tietoturvalliseksi. Tunnetuimpia ja eniten käytettyjä tiivistealgoritmeja ovat MD5, SHA-1 ja SHA-2, joka on kuuden kryptografisen tiivistefunktion kokoelma.

MD5 algoritmi ei enää ole turvallinen ja se sisältää useita haavoittuvuuksia, mutta sitä voidaan yhä käyttää tarkistussummien laskentaan ja tiedon eheyden validoimiseen silloin kun eheyttä ei ole tahallisesti vääristetty. MD5 generoi aina 128 bittiä pitkän tiivistearvon, joten
esitystapa heksadesimaalilukuna on aina 32 heksamerkin pituinen.

Alla on esimerkiksi Python koodi, jolla voit tulostaa tiivisteen nimestäsi.

import hashlib
nimi = 'Anonymous user'
hashnimi = hashlib.md5(nimi.encode('utf-8')).hexdigest()
print(hashnimi)

Voit ajaa Python 3 koodin vaikka osoitteessa https://repl.it/languages/python3. Voit katsoa muiden tehtävien käyttämät funktiot niiden tehtäväkohdista klikkaamalla Näytä koko koodi.

# t10e

Tein suolaukset online-työkalulla, koska en ole python-ihminen. Kiinnostaisi kuitenkin tietää tyhjentävä koodirimpsu kuinka sen saa pythonillakin aikaiseksi, sillä avattuani koko koodin ja kokeiltuani kahdella eri online-compilerilla saan samat herjat. Ensin hashlibin importtaamiseen, se toki korjaantuu kun vain lisää "import hashlib" alkuun mutta edelleen tulee herjaa, joka liittyy ilmeisesti muuttujan MD5string esittelyyn tai alustamiseen. Valittaa näin: "NameError: name MD5string is not defined". Jos taas yritän nollakokemuksella pythonista esitellä / alustaa sitä esim näin kuten mallissa on jo sisällä (MD5string = '') niin virheilmoitus jää pois ja herjaa vain tylysti "False". Saisiko toimivan loitsun vaikka tähän marginaaliin, sillä kuinka se oikeasti toimisi pythonilla kiinnostaa ainakin kursorisesti!

av: Joo, näytä koko koodi sisältää myös vertailun ja siihen pitää lisätä oma vastaus. Alla on yksinkertaisempi, minkä voi syöttää esimerkiksi python online työkaluun:

import hashlib
nimi = 'oma nimi'
hashnimi = hashlib.md5(nimi.encode('utf-8')).hexdigest()
print(hashnimi)

Edit: Lisäsin ohjeet tehtäväkohdan yläpuolelle, pois tehtävänannoista.

08 May 22 (edited 09 May 22)

SHA-1 algoritmia on käytetty esimerkiksi WWW-palvelinten SSL sertifikaattien kiistämättömyyden todentamiseen, mutta SHA-1:n haavoittuvuuksien takia verkkoselainvalmistajat lopettivat SHA-1:n hyväksymisen vuonna 2017. SHA-1 generoi aina 160 bittiä pitkän tiivistearvon, joka yleensä esitetään heksalukuina, joten heksaluku esitystapa on aina 40 heksamerkin pituinen.

# t10f

SHA-2 algoritmit ovat korvanneet edeltäjänsä yhä useammassa sovelluksessa ja protokollassa, mutta osassa SHA-2 algoritmeista on jo löydetty haavoittuvuuksia ja niiden sijaan tulisi käyttää SHA-2 perheen tietoturvalliseksi tiedettyjä tiivistefunktioita, tai siirtyä käyttämään vastaavan pituisen tiivisteen generoivia, vuonna 2015 julkaistuja, SHA-3 perheen tiivistefunktioita.

# t10g

Äksiisin kautta (yli)opitaan, hyvä vaan!

08 May 22

TIM-järjestelmään on päivitetty Pythonin versio 3.6, joka tukee SHA-3 algoritmeja, toisin kuin aiemmat Python versiot. Voit kokeilla Pythonin SHA-3 algoritmeja esimerkiksi https://repl.it/languages/python3 sivustolla.

# t10h

Hiukan on copy/paste simulaattorin makua tässä.

av: nämä voi tehdä myös jollain ohjelmointikielellä, niin on ehkä mielekkäämpää, kuin käyttää valmista työkalua, toki vastauksen joutuu kopioimaan. Koska kurssin teoria 1 osiossa ei vaadita ohjelmointiosaamista esitiedoksi, ei tähän kohtaan voi laittaa ohjelmointitehtävää, jossa tiiviste pitäisi muodostaa, ellei antaisi saman tien tarkat ohjeet tehtävän tekemiseen, mikä johtaisi taas copy pasteen. Idea tehtävillä on tutustuttaa käytännössä hieman tiivisteiden laskemiseen

07 Feb 22 (edited 08 Feb 22)

Internetistä ladattavien tiedostojen yhteydessä on toisinaan ilmoitettu tarkistussumma, jolla voi tarkistaa sen että tiedosto on muuttumaton. Eli sen jälkeen kun tiedosto on ladattu omalle koneelle voi laskea tarkistussumman tiedostolle ja verrata sitä ilmoitettuun tarkastussummaan.

Kurssin kotisivuilla on ladattava zip-paketti, joka sisältää kurssilla käytettävän TCP asiakkaan ja palvelimen. Linkki tiedostoon on:

http://users.jyu.fi/~arjuvi/opetus/itkp104/ITKP104TCP.zip

Seuraavia tehtäväkohtia varten lataa tiedosto itsellesi ja selvitä kuinka saat omassa käyttöjärjestelmässäsi tai erillisellä sovelluksella tai internetpalvelulla laskettua tehtäväkohtien mukaiset tarkistussummat. Tarkistussummat tulee olla heksadesimaalilukuina, käytetyt aakkoston merkit isoilla kirjaimilla. Säilytä merkit samalla rivillä.

Linkki ei näytä toimivan ainakaan itselläni

av: Selaimet eivät enää avaa http linkkejä https sivustoilla, jotka lataavat tiedoston, kun tiedostomuoto ei ole www-sivuilla esitettänä. Poistan linkit materiaaleista

13 Dec 21 (edited 14 Dec 21)
# t11a

Moi! Olen ladannut ja purkanut kansion omalle koneelle, ja etsinyt MD5- ja SHA-1 tarkistussummat, mutta vastausta ei hyväksytä. Käytänköhän väärää tiedostoa tms...

av: kyselen sähköpostilla tarkemmin, miten olet saanut tarkistussummat, kun ne ovat jostain syystä väärin
Edit: Oli yleinen vika, tarkistussummaa laskettiin .jar -tiedostosta, eikä .zip tiedostosta... Laitan tällä viikolla lisää älyä tarkistimeen... että antaisi palautetta, kun nykyinen ei anna ollenkaan.
Edit: älylä laitettu mainitulla viikolla, kommentti unohtui päivittää silloin.

23 Aug 21 (edited 13 Jan 22)
# t11b
# t11c
# t11d

Kryptoanalyysi

Kryptoanalyysi on nimitys tieteenalalle, joka tutkii ja kehittää menetelmiä salausten purkamiseen. Tieteenala tarjoaa hyödyllistä tietoa salausmenetelmien kehittämiseen turvallisemmaksi, kun opitaan mitä vastaan pitää suojautua.

Salausten murtaminen - esimerkkejä

# video2019Luento5f
# v2018L5_5

Esimerkki: 128 bittinen SSL salausavain

  • Avainvaihtoehtoja on 2128 = 340282366920938463463374607431768211456 = 34 × 1037
    • Eli 340 sekstiljoonaa, kiitokset taas opiskelijoille tuon selvittämisestä :)
  • Oletetaan että 50 supertietokonetta tarkistaa 1018 (miljardi miljardia) avainta sekunnissa
  • Avainten läpi käyminen kestää 340282366920938463463 = 34 × 1019 sekuntia
  • vuodessa on 31 556 926 sekunttia, joten vaadittu aika on 10783127828133 vuotta eli noin 10783 miljardia vuotta.

Yksi mahdollisuus salauksen purkamiseen on tallentaa salattua liikennettä ja odottaa kvanttitietokoneita joilla suurin osa nykyisistä salausmenetelmistä voitaisiin purkaa polynomisessa ajassa.

Ratkaisu edellä kuvattuun tietoturvauhkaan on käyttää salausmenetelmää, joka mahdollistaa ns. eteenpäin tai tulevaisuuteen salaamisen, englanniksi Forward secrecy. Esimerkiksi nykyään verkkoliikenteen salaukseen käytettävässä TLS protokollassa voidaan ottaa Forward secrecy käyttöön.

Esimerkkejä salasanoista

# v2018L5_6
  • Katso esimerkiksi Jyu digipalveluiden ohjeet hyvälle salasanalle.
  • Tehdään nyt väärin minimin mukainen eli vähintään 8 merkkiä, esim. 'salasana' → kräkätään heti 'sanakirjan' avulla, kokeile itse:
  • Koodataan salasana SHA-256 hash generator ja kräkätään salasana Password Hash Cracker
  • Kokeile muuttaa osa kirjaimista isoiksi, sitten osa kirjaimista numeroiksi ja viimeisenä kokeile tuplata salasana 'salasana salasana', välilyönnillä tai ilman.
  • Pieniä kirjaimia 26, salasanan pituus 8 = 268 = n. 208 miljardia läpikäytävää kombinaatiota
  • Tämän päivän tietokone laskee n. 4 miljardia vaihtoehtoa sekunnissa → Kokeilee kaikki vaihtoehdot 52 sekunnissa.
  • Testaa itse salasanojen turvallisuutta esimerkiksi palvelussa https://www.security.org/how-secure-is-my-password/
    • Kokeile myös salasanaa: correcthorsebatterystaple [ks. xkcd 936]
  • Hyvä järjestelmä ei tietenkään saisi antaa kokeilla rajattomasti eri vaihtoehtoja

xkcd 936 - tietäjät tietää

P.S. Insinööriltä kuultuna jatkokehityksenä periaatteeseen, tee yhdestä sanasta "epäsana" muuttamalla yhtä kirjainta niin correcthorsebatterystaple -tyylin salasanasta tulee vielä vahvempi. Ajatuksena kait ettei voi käyttää sanakirjaa salasanan murtamiseen.

15 Mar 22 (edited 15 Mar 22)
# videoJohdanto44
# videoWireshark

Salasanasuosituksia

  • NIST (National Institute of Standards and Technology) suosituksia vuodelta 2017
    • Salasanaa ei tule vaihtaa säännöllisin väliajoin
      • Ainoastaan silloin kun tiedetään salasanojen yksityisyyden vaarantuneen
    • Ei enää erikoismerkki-vaatimuksia salasanoihin
      • Ihmiset käyttävät niitä ennalta arvattavasti
    • Generoitavia salasanoja tulee verrata tunnettuihin huonoihin salasanoihin, joista pidetään listaa
      • Ei hyväksytä huonoja salasanoja
    • Suositus hyväksyä ja tukea salasanalauseita, joissa sanat erotettu välilyönneillä

TLS/SSL

# video2019Luento5g
# v2018L5_7
# v2018L5_8

Transport Layer Security (TLS) on protokolla, jota käytetään esimerkiksi WWW-palvelinten ja verkkoselainten välisen tietoliikenteen luottamuksellisuuden sekä eheyden takaamiseen. Lisäksi TLS:ää käytetään WWW-palvelimen todentamiseen, mutta asiakkaita, eli verkkoselaimia, ei todenneta.

TLS toteuttaa luottamuksellisuuden symmetrisiä salausmenetelmiä käyttäen. Palvelimen todentaminen, eli autentikointi, tehdään julkisen avaimen salausmenetelmällä.

Viestien eheyden tarkistamiseen sekä lähettäjän todentamiseen käytetään viestin tunnistamiskoodeja, englanniksi Message Authentication Code (MAC), jotka muodostetaan joko tiivistealgoritmeilla, esimerkiksi HMAC-koodeilla, tai lohkosalausalgoritmeilla. Viestin ei tarvitse olla salattu, MAC-koodilla saadaan selville se ettei viestiä ole muutettu ja se että viesti on oikealta lähettäjältä, kun tunnetaan lähettäjän käyttämä salausavain.

# t11e
# t11f

Jos testaat HMAC-tunnistekoodin generointia jollakin internetistä löytyvällä työkalulla, niin rivinvaihtojen eroavaisuuksien vuoksi, saat niillä erilaisia tuloksia, jos tiedostossa on rivinvaihtoja. TIM-järjestelmä muuttaa kaikki rivinvaihdot LF eli \n -rivinvaihdoiksi, kun taas selaimet muuntavat rivinvaihdot online-työkaluja käytettäessä CRLF eli \r\n -rivinvaihdoiksi. Halutessasi käytä tekstiä, jossa ei ole yhtään rivinvaihtoa.

# t11g

TLS protokollassa on useita valinnaisia määrityksiä, joilla on vaikutusta saavutettavaan tietoturvan tasoon, kuten esimerkiksi salausalgoritmien valintamahdollisuus tai mahdollisuus pyytää vanhemman TLS version, tai jopa SSL version, käyttöä.

Secure Sockets Layer (SSL) on TLS:n edeltäjä, jonka käytön IETF on kieltänyt, myös viimeisimmän 3.0 version, RFC 7568. Lisäksi TLS protokollien ei enää tulisi mahdollistaa TLS protokollan neuvotteluvaiheessa sitä, että käytettäisiinkin SSL protokollaa. Keväällä 2018 noin 10 % maailman suosituimmista palveluista mahdollisti vielä SSL version 3.0 käytön ja pari prosenttia myös SSL version 2.0 käytön, lähde https://www.ssllabs.com/ssl-pulse/. Maaliskuussa 2020 5.8 % salli SSL 3.0 käytön ja 1.2 % SSL 2.0 käytön. Helmikuussa 2021 3.8 % salli SSL 3.0 käytön ja 0.6 % salli SSL 2.0 käytön. Samaan aikaan 42.9 % palvelimista tuki TLS 1.3 version käytössä ja 99.3 % TLS 1.2 version käyttöä. Huomattavaa on että palvelimet voivat tukea useamman version käyttöä ja yksi heikkous on siinä, jos palvelin hyväksyy asiakkaan pyynnön käyttää vanhempaa versiota. Nykyään SSL on terminä kuitenkin vielä usein käytössä, vaikka tarkoitetaankin ainoastaan TLS protokollaa.

TLS protokollaa vastaan kehitetään jatkuvasti uusia hyökkäyksiä ja näin ollen palveluiden tarjoajien tulisi jatkuvasti ottaa käyttöön tehokkaampia ominaisuuksia TLS protokollan uusimmista versioista. Sivuston https://www.ssllabs.com/ssl-pulse/, mukaan esimerkiksi maaliskuussa 2020 yli 76 % maailman 150 000 suosituimmasta verkkopalvelusta oli joko haavoittuvainen tunnetuille hyökkäyksille tai niiden konfiguroinnissa ei ollut otettu käyttöön nykyään tarpeellisia ominaisuuksia uhkien torjumiseksi. Tilanne kuitenkin paranee pikku hiljaa ja esimerkiksi helmikuussa 2021 vastaava prosenttiluku oli pudonnut arvoon 59.1 %.

# t11h
# t11i

TLS protokollan versiosta 1.3 julkaistiin RFC dokumentti elokuussa 2018.

# t11j

MiKä on SSL/TLS

  • SSL on Secure Sockets Layer
    • Uusin SSL versio 3.0
      • mikään SSL versio ei ole enää turvallinen
      • IETF on kieltänyt SSL versioiden käytön
      • Versio 3.0 kiellettiin 2015 RFC 7568
    • TLS 1.0 on oikeastaan SSL 3.1 versio
    • SSL on TLS:n edeltäjä
      • monesti termejä käytetään tarkoittamaan samaa
      • joko erikseen (SSL tai TLS) tai yhdistettynä SSL/TLS tai TLS/SSL
  • TLS on Transport Layer Security
    • 2015 - TLS 1.0 ei ole enää turvallinen
    • 2016 - TLS 1.1 ei ole enää turvallinen
    • 2017 - TLS 1.2 versiota pidetään enää ainoana turvallisena versiona
    • 2018 - Keväällä TLS 1.3 on IETF Draft vaiheessa, ei vielä lopullinen RFC
    • 2018 - Elokuussa julkaistiin TLS 1.3 RFC
    • 2022 - TLS 1.2 ja TLS 1.3 versioita pidetään turvallisena
      • Kun niiden päivitykset pidetään ajantasalla
    • Testaa itse palvelinten SSL/TLS valmius https://www.ssllabs.com/ssltest/
  • QUIC - Googlen selaimissa ja palvelimissa - "designed to provide security protection equivalent to TLS/SSL"
  • RFC 7457 - Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS)
  • SSL/TLS käyttö suosituimmissa palveluissa

Tässä sanoo että TLS 1.2 on ok mutta myöhemmin taas tulee vastaan "tietoturvauhat" -osiossa

"TLS 1.2 haavoittuvuus - helmikuussa 2019"

Kumpi on oikeassa?

av: Päivitin molempia kohtia, TLS 1.2 on vielä turvallinen, kun se pidetään päivitettynä. Kyseinen haavoittuvuus tulisi tällä hetkellä olla korjattuna kaikissa tunnetuissa ohjelmistoissa

15 Mar 22 (edited 15 Mar 22)
# videoJohdanto43

Tietoverkkoturvallisuusjärjestelmät

Palomuuri

Ensimmäinen sukupolvi

Ensimmäisen sukupolven palomuurit kykenevät yksinkertaiseen liikenteen rajoittamiseen. Ne tutkivat kaikki läpimenevät paketit ja päästävät läpi paketteja tallennettujen sääntöjen mukaan. Jos paketti ei ole säännön mukainen, se pudotetaan, englanniksi dropped. Käytännössä pudottaminen tarkoittaa sitä, että paketti poistetaan palomuurin muistista, ilman että sitä välitetään eteenpäin. Palomuuriin tehdyt asetukset määräävät sen lähetetäänkö pudottamisesta ilmoitus paketin lähettäjälle ICMP-protokollan mukaisella viestillä vai ei. Sääntöjä voidaan määritellä lähettäjän ja vastaanottajan verkko-osoitteiden, eli IP-osoitteiden, käytetyn protokollan sekä lähettävän tai vastaanottavan sovelluksen käyttämien kuljetuskerroksen osoitteiden, eli porttinumeroiden, mukaan.

Toinen sukupolvi

Toisen sukupolven palomuurit tarkkailevat kommunikaatiota pidemmällä ajanjaksolla. Paketeissa olevista verkko- ja kuljetuskerroksen osoitteista pidetään yllä listaa, josta nähdään se että liittyykö tuleva paketti johonkin aiempaan kommunikaatioon vai onko se uusi kommunikaatio palomuurin läpi. Näin voidaan saada kerättyä siis pidempikestoista informaatiota kommunikoivista osoitteista ja tarvittaessa rajoittaa liikennettä. Palomuurin muisti, jossa tilaa yhteyksistä säilytetään, on rajattu. Tämä mahdollistaa palvelunestohyökkäyksen palomuuria vastaan, jossa tukahdutetaan muisti valheellisilla TCP yhteydenavauksilla.

Korjaus: Kolmas virke - kirjoitusvirhe: "Näin VOIDAAN SAADAAN kerättyä siis pidempikestoista informaatiota kommunikoivista osoitteista ja tarvittaessa rajoittaa liikennettä."

av: kiitos, korjattu

06 Jun 22 (edited 07 Jun 22)
Kolmas sukupolvi

Kolmannen sukupolven palomuurit ymmärtävät sovelluskerroksen protokollia. Esimerkiksi, olkoon meillä WWW-palvelin, jota suojataan palomuurilla. Palvelin palvelee kuljetuskerroksen porttinumerossa 80. Ensimmäisen sukupolven palomuuriin voidaan määrittää, että vain kuljetuskerroksen porttinumeroon 80 voidaan lähettää dataa. Toisen sukupolven palomuuri voi tutkia sitä, kuka lähettää ja kuinka paljon lähetetään. Kolmannen sukupolven palomuuri voi tutkia sitä, että lähetetty data on oikeanlaista, eli sellaista mitä palvelin kykenee ymmärtämään. Eli se ymmärtää WWW-palvelimen ja WWW-selaimen käyttämää kieltä, HTTP-protokollaa. Näin kolmannen sukupolven palomuuri voi estää vääränlaisen liikenteen sekä myös sovellusprotokollan virheellisen käytön.

Nykyään jokaisella on käytössä erilaisia ja eritasoisia palomuureja: käyttöjärjestelmien palomuurit, erillisen palomuurisovellukset ja kotiverkon reitittimeen toteutetut palomuurit. Yleensä näiden asetuksia voidaan muuttaa, jolloin ne voivat toimia minkä tahansa sukupolven palomuurin mukaisesti. Palomuureissa on vakiona nykyään myös NAT-palvelu osoitteiden muunnokseen, jotta sisäverkossa voidaan käyttää ei-julkisia IP-osoitteita.

Seuraavan sukupolven palomuuri

Verkko-operaattoreilla on järeitä palomuureja, joihin on toteutettu lisää ominaisuuksia kolmannen sukupolven ominaisuuksien tukemiseksi. Näitä ovat esimerkiksi

  • Intruder Prevention System (IPS)
  • Deep Packet Inspection (DPI)
  • SSL/TLS liikenteen tarkastus
  • Antivirus tarkastus
  • ...

Tietoverkkouhat

# video2019Luento5h
# v2018L5_9

Joitain tietoverkkojen tietoturvauhkia

  • Haittaohjelmat (eng. malware) - pääsy laitteeseen Internetistä
    • Virus - vaatii käyttäjän toimenpiteen
    • Mato - esim. haavoittuvan verkkosovelluksen kautta
    • Suojautuminen: Mieti mitä klikkaat, pidä kaikki päivitettynä, palomuuri ja virustorjunta
  • Pakettien kaappaaminen
    • onnistuu helposti salaamattomassa WLAN verkossa
    • salatussa WLAN verkossa vie jonkin aikaa purkaa salaus
      • Lisää esim. TIES327 Tietoverkkoturvallisuus kurssilla
    • HTTPS vs. HTTP protokolla
    • Suojautuminen: Salataan liikenne
# videoJohdanto40

Tietoverkot mahdollistavat myös haitallisten ohjelmien, englanniksi malicious software tai malware, tunkeutumisen Internetiin yhdistettyyn laitteeseen. Haitallinen ohjelma voi esimerkiksi tuhota tiedostoja, kerätä käyttäjän tietoja, nauhoittaa näppäimenpainalluksia tai AV-laitteiden signaalia, salata koneen tiedot ja vaatia maksua salauksen purkamisesta (ns. ransomware) tai liittää laitteen osaksi bottiverkkoa. Bottiverkkoon joutuneet laitteet ovat osittain etähallittavia ja ne voidaan laittaa osallistumaan esimerkiksi sähköpostin massalähetyksiin (späm) tai hajautettuun palvelunestohyökkäykseen. Haittaohjelmat yleensä pyrkivät myös monistumaan, eli lähettämään kopiota itsestään löytämilleen uusille uhrilaitteille.

Haitalliset ohjelmat voidaan jaotellaan kahteen luokkaan sen mukaan kuinka ne tunkeutuvat verkkoon liitettyyn laitteeseen. Virukset vaativat aina käyttäjän toimenpiteen, josta yleisin esimerkki on sähköpostin liitetiedostona saapuva haittaohjelma, joka käynnistyy liitettä klikattaessa. Madot puolestaan hyödyntävät verkkoa käyttävien sovellusten haavoittuvuuksia tunkeutuakseen järjestelmään, eivätkä vaadi käyttäjän toimenpiteitä.

Tietoverkoissa sijaitsevien palveluiden saatavuus on tänä päivänä yksi suosituimmista tietoverkkohyökkäysten kohteissa. Tällöin hyökkääjän tarkoituksena ei ole saada itselleen suoraa hyötyä, vaan estää palvelun käyttö kaikilta. Tällaista hyökkäystä kutsutaan palvelunestohyökkäykseksi, englanniksi Denial of Service (DoS). DoS -hyökkäyksen ideana on tukahduttaa palveluntarjoajan verkkoyhteys, itse palvelin tai jokin muu laite. Tukahduttaminen toteutetaan tekemällä turhia palvelupyyntöjä, jolloin verkkolaitteiden, linkkien tai palvelinten kapasiteetti ei enää riitä tarjoamaan palvelua uusille asiakkaille. Yhdeltä laitteelta saapuva DoS hyökkäys on nykyään helppo torjua, kun se havaitaan. Palomuuri tai muu tietoturvajärjestelmä estää kaiken kyseiseltä laitteelta saapuvan tietoliikenteen. Käytännössä paketit pudotetaan, sen jälkeen kun ne on vastaanotettu ja lähettäjä tarkastettu.

Hajautetussa palvelunestohyökkäyksessä, englanniksi Distributed Denial of Service (DDoS), hyökkäys saapuu usealta laitteelta, jotka voivat sijaita missä vaan Internetissä. Hajautetun hyökkäyksen estäminen on vaikeaa, koska joudutaan blokkaamaan useita eri laitteita. Hajautettuihin hyökkäyksiin käytetään bottiverkkoja, jotka koostuvat tavallisten ihmisten Internetiin yhdistetyistä laitteista, mukaan lukien IoT laitteet, jotka haittaohjelma on ottanut osittain tai kokonaan haltuunsa. Bottiverkko voi olla lepotilassa, kunnes se valjastetaan hyökkäykseen bottiverkon kontrolloijan toimesta. Tyypillisesti bottiverkkoon voi kuulua satoja, tuhansia tai jopa miljoonia laitteita. Tänä päivänä bottiverkon muodostamiseen on tarjolla useita työkaluja, joiden avulla, pienellä teknisellä osaamisella, voi helposti toteuttaa DDoS hyökkäyksen. Toisaalta DDoS hyökkäyksen, esimerkiksi päivän ajaksi, voi ostaa parilla sadalla eurolla. Jos itsellä ei ole resursseja esimerkiksi DDoS hyökkäykseltä suojautumiseen, voi yksi mahdollisuus olla ostaa palvelu DDoS hyökkäykseltä suojautumiseksi. Esimerkkinä tällaisesta palveluntarjoajasta mainitaan Yhdysvaltalainen Cloudflare tai Venäläinen DDoS-Guard, jotka tarjoavat muitakin palveluita. Käytännössä palveluissa reititetään liikenne DDoS-suojaavan palveluntarjoajan verkkoon, ennen kuin se päästetään oikealle palvelimelle. Ison palveluntarjoajan mahdollisuudet DDoS hyökkäyksen estämiseen ovat nykyään melko hyvät ja ne kehittävät suojausta jatkuvasti.

DDoS hyökkäyksiä tehdään eri tekniikoilla, mutta yhteistä niille on protokollien, niiden ominaisuuksien tai heikkouksien, käyttö. Hyökkäykset voidaan jakaa kerrosarkkitehtuurin mukaisesti niiden hyödyntämän protokollan mukaan.

  • Sovelluskerroksen hyökkäyksiä (Kerroksen 7 hyökkäys)
    • HTTP flood
    • Slowloris
    • RUDY
    • Zero-day
    • BGP Hijacking
    • Käyttöjärjestelmän haavoittuvuuksia hyödyntävät
    • Ohjelmistojen haavoittuvuuksia hyödyntävät
  • Kuljetuskerroksen hyökkäyksiä (Kerroksen 4 hyökkäys)
    • UDP flood
    • SYN flood
    • NTP amplification
    • DNS amplification
  • Verkkokerroksen hyökkäyksiä (Kerroksen 3 hyökkäys)
    • IP fragmentation
    • Ping of Death
    • ICMP flood

DDoS hyökkäyksiltä on vaikea suojautua kokonaan ja hyökkäystekniikat kehittyvät kokoajan, jotta ne olisi vaikeampi havaita. Tehokkain suojausmenetelmä olisi saada bottiverkot suljettua, mikä vaatii bottiverkkojen ylläpitäjien löytämistä, sekä kaikkien Internetiin liitettyjen laitteiden jatkuvaa tietoturvan päivitystä, jotta bottiverkoille ei ole tarjolla orjalaitteita, tai zombie-laitteita, miksi niitä usein kutsutaan.

DDoS hyökkäyksiin kannattaa varautua etukäteen ja hyökkäysten havaitsemiseen ja estämiseen sekä jo alkaneen hyökkäyksen lopettamiseen on erilaisia teknisiä ratkaisuja, laitteistoja sekä palveluita. Ollaakseen tehokkaita, menetelmien tulisi olla laitteistolla toteutettuja, jottei turvamenetelmät itsessään hidasta palvelun saatavuutta.

  • Palomuuri
    • estää yksinkertaisimmat hyökkäykset lähettäjän osoitteen tai käytetyn protokollan mukaan
  • Reititin tai kytkin
    • Voi ylläpitää listaa sallituista ja ei-sallituista osoitteista
  • Erillinen laite verkon Internet-liityntään
    • tutkii ja luokittelee liikennettä, ennen kuin liikenne päästetään omaan verkkoon
  • IDS (Intrusion detection system) ja IPS (Intrusion prevention system)
    • Havaitsee haittaliikenteen, mutta ei sellaista DDoS hyökkäystä, joka näyttää normaalilta liikenteeltä.
    • IPS lisäksi estää havaitun liikenteen
    • Pääasiassa järjestelmät tunnistaa tunnettuja uhkia
    • Kehitetään jatkuvasti uusia menetelmiä, joilla havaitaan
      • normaalilta liikenteeltä näyttävät uhat
      • vielä tuntemattomat uhat
  • DDS (DoS Defense System)
    • Erityisesti useiden erityyppisten DoS hyökkäysten torjumiseen
  • Upstream filtering
    • Kaikki liikenne kierrätetään pilvipavelun kautta, joka torjuu useita erilaisia hyökkäyksiä sekä haittaliikennettä
    • Palvelua tarjoaa useat isot sisällönjakeluverkot, englanniksi Content Delivery Network CDN, sekä pilvipalveluiden tarjoajat.

Tietoturvan kiertäminen

# video2019Luento5i
# v2018L5_10
  • Kontrolloidaan kansainvälistä salausstandardointia
    • Aiemmin rajoittamalla salausavainten pituuden 56 bittiin
    • Esim. patentoimalla salaustekniikoita, jotta niitä ei voi käyttää
  • Hyväksikäyttämällä implementoinnin haavoittuvuuksia
    • Tekemällä 'yhteistyötä' salausteknologioista vastaavien yritysten kanssa - lisäten haavoittuvuuksia
    • Käyttämällä hyväksi löytämäänsä haavoittuvuutta, sen sijaan että julkaistaan se jotta sen voisi korjata
  • Supertietokoneiden väsytyshyökkäys, englanniksi brute force attack
    • Kaikki salausmenetelmät voi purkaa tuntemalla salausavaimen, joten etsitään salausavain
    • Käytetään järjetön määrä laskentatehoa salausavainten etsimiseen (käydään kaikki vaihtoehdot läpi)
    • Varastetaan tai muuten saadaan tietoon salausavaimia, jolloin ei tarvitse testata kaikkia vaihtoehtoja
# videoJohdanto41

Joitain tietoturvaan liittyviä haavoittuvuuksia

# video2019Luento5j
# v2018L5_11
  • The Heartbleed Bug - Julkisuuteen 11.4.2014 - [Viestintävirasto ei enää tarjoa tiedotteita Kyberturvallisuuskeskus tarjoaa vain uusimmat tiedotteet 2018 vuodesta alkaen.]
    • SSL/TLS salauksen implementointiin liittyvä ongelma, SSL/TLS liikenne pysyy salattuna, ei siis tietoverkkohaavoittuvuus, vaan ohjelmistohaavoittuvuus
      • Ohjelmointi 2 kurssin jälkeen → C++ lisäosassa tarkemmin → ja sitten ITKST53 Ohjelmistoturvallisuus kurssille
    • ns. Buffer overflow -bugi, jossa (palvelin)koodi ei tarkista SSL/TLS viestin ilmoittamaa muistipuskurin kokoa
    • Muuttamalla arvon suuremmaksi kuin palvelimen muistipuskurin todellinen koko, voidaan lukea palvelimen muistissa olevaa tietoa, sisältäen esim. sertifikaatit, käyttäjätunnukset sekä salasanat
  • Gemalton SIM korttien Ki -salausavainten varkaus - Julkisuuteen 20.2.2015, tapahtunut vuonna 2010
# videoJohdanto42

Dataa vääriin käsiin

# v2018L5_12

Yksityisyydestä

  • Tietoturva ei ole vain turvallisia protokollia, turvallista ohjelmointi sekä salausta
  • Myös yksityisyys (eng. privacy) liittyy tietoturvaan
  • Eli se mitä tietoa jokainen jakaa itsestään sosiaalisessa mediassa
  • Alla video vanhasta Facebook palvelun esittämisestä luennolla
    • Palvelu oli tehty korostamaan sitä, mitä kaikkea informaatiota saattaa huomaamattaan tai ajattelemattaan antaa kenen tahansa tekemälle sovellukselle
# v2015takethislollipop

Tietoverkkojen historia

# video2019Luento5k
# v2018L5_13

Internetverkon edeltäjänä pidetään ARPANET verkkoa, jonka kehityksen yhteydessä ovat syntyneet monet nykyisen Internetin toimintaan liittyvät tekniikat ja protokollat. ARPANET syntyi kun Yhdysvaltojen Advanced Research Projects Agency (ARPA) päätti 1960 luvun loppupuoliskolla tehdä pakettikytkentäisen verkon neljän ARPA:lle tietokoneisiin liittyvää tutkimusta tekevän organisaation kanssa, (i) Kalifornian yliopisto (UCLA) (ii) Stanford Research Institute (SRI) (iii) Kalifornian yliopisto, Santa Barbara (UCSB) sekä (iv) Utahin yliopisto. ARPA:n nimi on sen jälkeen vaihdellut useamman kerran termien ARPA ja DARPA välillä. Edellä mainituilla organisaatioilla oli kaikilla eri valmistajien keskustietokoneet ja niissä eri käyttöjärjestelmät, joten tarvittiin yhteinen rajapinta, jonka avulla koneet saadaan kommunikoimaan tulevan pakettiverkon yli. Laitetoimittajien kilpailutuksen jälkeen pakettiverkon solmulaitteiden, pakettikytkinten, Interface Message Processor (IMP), toimittajaksi valittiin Bolt, Beranek and Newman -yhtiö. IMP vastasi lähinnä reititintä, tosin silloin ei vielä ollut mm. kerrosarkkitehtuuria, mutta järjestelmän protokollan toteutuksen voidaan katsoa jaetun kolmeen kerrokseen: fyysiseen, linkki- ja verkkokerrokseen. Myöskään verkkoa hyödyntäviä sovelluksia ei ollut vielä olemassa ja tehtävään ajautuivat tutkimusorganisaatioiden vastavalmistuneet opiskelijat. Heidän työstään verkossa käytettävän ohjelmiston kehittämiseksi saivat alkunsa RFC dokumentit, jotka olivat aluksi dialogia ARPANET:in ja sen sovellusten ja protokollien kehittämiseksi.

# t12a
# t12b
# t12c

Useammassa RFC dokumentissa on listattu toisia RFC dokumentteja. Seuraavassa tehtävässä pyydetään RFC dokumenttia, jossa on RFC:t on listattu ja jaoteltu sisällön perusteella. Lisäksi kysytyssä RFC dokumentissa on lyhyt yhteenveto, jokaisesta RFC:stä, joiden numero on väliltä 1 - 999.

Seuraavassa tehtävässä ei kysytä RFC dokumenttia, jossa listataan RFC:t lähdeluettelona (engl. bibliography). Siinä listassa on tiedot RFC dokumenteista, joita käytetään lähdeluetteloissa, kun RFC dokumentteihin viitataan.

# t12d

Seuraavassa tehtävässä kysytty RFC dokumentti on julkaistu helmikuussa 1974, tosin joissain listauksissa esim. https://tools.ietf.org/rfc/index on virheellisesti merkitty että kysytty RFC dokumentti olisi julkaistu helmikuussa 1973.

# t12e
# t12f

Internetin historiaa Internetin palveluilla

Seuraavia tehtäviä luodessa on käytetty useita lähteitä, joiden perusteella on arvoitu vuoden tarkkuudella tapahtumat ja asetettu järjestykseen:

# t12g

Huomasin bugin tämäntyyppisissä tehtävissä: Jos klikkaa heti tallenna, niin antaa täydet pisteet, vaikka järjestys on ihan väärin. Heti kun siirtää yhtäkin asiaa eri paikkaan, heittää punaista ja ei anna pisteitä.

av: kiitokset tiedosta, asiaa selvitellään
EDIT: Korjattu

11 Apr 21 (edited 30 Apr 21)
# t12h

Moi Ari, pitääkö tässä lähteä siitä, että R. Metcalfe kehitti ethernetin jo 1973, kun ideoi tätä esimiehelleen eikä 1976, kun julkaisi Boggsin kanssa aiheesta paperin? Aiemmat kompuroinnit tulivat, kun tihrustin rivejä väärin.

av: Tässä, ja yleensä, Ethernet katsotaan kehitetyksi 1973.

11 Oct 21 (edited 12 Oct 21)
# t12i

Moi Ari, nyt kiinnostaa valtavasti, mitkä lähteet sanelevat tämän järjestyksen?

av: Lisäsin materiaaliin tehtävien yläpuolelle kappaleen, jossa listaan käytettyjä lähteitä. Olen käyttänyt useita eri lähteitä ja voi olla, että kaikkia ei ole mainittu. Jos joidenkin tapahtumien järjestys jää epäselväksi, niin ota yhteyttä ja tutkitaan niitä tarkemmin.

11 Oct 21 (edited 12 Oct 21)
# t12j

Moi Ari, olen nyt työstänyt Teoria 1 osuuden tehtävät ja varmaan joitain WiKi kohtia vielä täydennän, kun työt joustavat. Onko niin, että sen jälkeen voin kokeilla tuota kotikoetta suorittaa Teoria 1 osuus ja kaiken järjen mukaan pitäisi onnistua vai pitääkö ilmoittautua etukäteen johonkin tenttipäivään /-aikaan vai miten toimin? Kiitos ja Yst. Kimi

av: Kotikokeen voi tehdä milloin vain, ilman ennakkoilmoittautumista, eli varaa itselleen 20 minuuttia aikaa ja tekee kokeen. Koe arvostellaan ja pisteytetään automaattisesti ja koe tehtävien pisteet päivittyvät kurssin yhteispisteisiin vastaavasti kuin kurssin muidenkin tehtävien.

11 Oct 21 (edited 12 Oct 21)

Teoria 2

Teoria 2 osion osaamistavoitteina on ymmärtää tietoverkkojen toteutuksen haasteet sovellus-, kuljetus-, verkko- ja linkkikerroksilla sekä Internetissä toteutetut ratkaisut haasteisiin.

Sovelluskerros (Teoria 2)

# video2019Luento6
# video2018Luento6

Sisältöä

# video2019Luento6a
# v2018L6_1
  • Sovelluskerros ja sen protokollat
    • HTTP
      • WWW, HTTP, HTTPS, evästeet, välimuisti
    • DNS (Domain Name System)
    • Sähköposti
      • SMTP, POP3, IMAP
    • FTP
    • Tor
  • Kuljetuskerros
  • Verkkokerros
  • Linkkikerros

Johdantoa

Koska Internetin toiminta perustuu kerrosarkkitehtuuriin, on uusien sovellusten ja niiden vaatimien sovelluskerroksen protokollien kehittäminen riippuvainen vain mielikuvituksesta ja osaamisesta. Sovelluksen kehittäjän tarvitsee käytännössä valita mikä kuljetuskerroksen palvelu sopii parhaiten omalle sovellukselle ja sen jälkeen voi vapaasti valita sovelluksensa kommunikaatioon käytettäväksi jonkin julkisen sovelluskerroksen protokollan tai kehittää jonkin uuden protokollan.

Alla on Javascript visualisointi eräästä julkisen sovelluskerroksen protokollan, BitTorrent, toiminnasta. Kaikki, edes julkiset, protokollat eivät ole määritelty RFC dokumenteissa. BitTorrent protokollasta ei ole RFC dokumenttia. Protokolla on yksi monista, joita käytetään vertaisverkoissa. Protokollalla haetaan tiedostosta pieniä paloja kerrallaan, missä tahansa järjestyksessä, mistä tahansa verkon lähteestä. Näin verkon kuormaa saadaan tasattua hajauttamalla tiedonsiirtoa.

# videoBitTorrent

Porttinumero

av: Porttinumero luku on lisätty uutena 13.1.2022.

13 Jan 22

Verkkosovellukset ja niiden dataa kuljettavat sovellusprotokollat tarvitsevat kuljetuspalvelun internetin läpi. Kuljetuspalveluna internetissä toimii kuljetuskerroksen protokollat, jotka sijaitsevat verkon päätelaitteissa, niin sanotuissa reunalaitteissa. Päätelaite on laite, joka on yhdistetty internetiin esimerkiksi kytkimen, tukiaseman, reitittimen tai niiden yhdistelmän kautta.

Kuljetusprotokollan yhtenä tehtävänä on se, että saapuva data välitetään oikealle verkkosovellukselle. Tämä on toteutettu siten, että jokaisella verkkosovelluksella on portti tai porttinumero (engl. port (number)) tai useampia. Verkkosovelluksilla voi olla käytössä myös useita porttinumeroita. Jotta tiedetään mitä porttinumeroa verkkosovellus käyttää on sovellusten käyttämille sovellusprotokollille määritelty jokin porttinumero. IANA ylläpitää ja hallinnoi määriteltyjä porttinumeroita. Hyvän yhteenvedon määritellyistä porttinumeroista ja niiden statuksesta saa Wikipedian artikkelista. Uusia sovellusprotokollia kehitettäessä kehittäjä valitsee yleensä jonkin vapaan porttinumeron. Porttinumeron rekisteröintiä oman verkkosovelluksen käyttöön voi pyytää IANA:lta. Määriteltyjen porttinumeroiden avulla saadaan dataa lähetettyä jossain verkko-osoitteessa sijaitsevaan palvelimeen. Palvelin saa vastaanotetun datan mukana tiedon mm. asiakassovelluksen käyttämästä porttinumerosta. Tämän vuoksi asiakassovelluksille ei yleensä valita kiinteitä porttinumeroita, vaan porttinumero voi olla mikä tahansa. Normaalisti sovellukset antavat käyttöjärjestelmän valita vapaan porttinumeron.

Portit sovelluksille ja sovellusprotokollille eivät siis ole fyysisiä portteja, vaan ne ovat kuljetuskerroksen keino erotella eri sovellusten data. Portti muodostuu, kun käyttöjärjestelmä avaa, sovelluksen pyynnöstä, "portin" tai "oven", mitä kautta sovellus voi siirtää dataa. Tällainen datan siirtoon käytettävä portti toteutetaan soketilla (engl. (network) socket) Kyseessä on siis eräänlainen virtuaalinen portti, jonka numero välitetään datan mukana kuljetuskerroksen protokollan otsikkotiedoissa. Eli kun paketti saapuu, on siinä vastaanottajan sekä lähettäjän porttinumerot, jonka perusteella ohjataan oikealle sovellukselle. Ja jos sovelluksella, kuten esimerkiksi selaimella, on samanaikaisesti useita eri kommunikaatiota, selaimessa välilehtiä auki, niin jokaista välilehteä kohden on ainakin yksi portti käytössä. Ja käytännössä yhdenkin www-sivun avaamiseen voidaan käyttää useita portteja, jotta tieto voidaan siirtää rinnakkain.

Käytännössä portit mahdollistavat samanaikasen verkkosovellusten käytön, vaikka laitteessa on vain yksi verkkokortti (ja yksi fyysinen liitin), jonka kautta kaikki data kulkee.

Porttinumeroille on varattu 16 bittiä, täten porttinumeroita ei ole käytössä rajattomasti, mutta nykyään vielä riittävästä. Kaikkia porttinumeroita ei kaikissa käyttöjärjestelmissä voi vapaasti ottaa käyttöön.

Porttinumerot 0-1023 on varattu järjestelmän käyttöön. Numeroaluetta kutsutaan myös nimellä hyvin tunnetut portit (engl. well-known ports). Numeroalueella 0-1023 on suurin osa porttinumeroista, jotka on varattu yleisimmin käytössä oleville sovelluskerroksen protokollille. Siitä nimitys hyvin tunnetut portit. Numeroalueelle 0-1023 ei myöskään ole yhtä helppoa saada rekisteröityä uutta sovellusta, kuin sitä suuremmille porttinumeroille. IANA vaati standardointiprosessin läpikäynnin, jotta numeroalueelle 0-1023 voidaan rekisteröidä porttinumero uudelle sovellukselle. Sama porttinumero voi olla käytössä myös useammalle protokollalle, eräs esimerkki on DHCP, joka käyttää vanhemman vastaavan BOOTP kanssa samaa porttinumeroa. Koska DHCP suunniteltiin myöhemmin, on se suunniteltu siten, että DHCP kehysrakenne on taaksepäin yhteensopiva BOOTP keshysrakenteen kanssa. Täten voidaan tunnistaa eri protokollan mukainen paketti ja tarvittaessa hylätä se tai käsitellä se eri tavoin.

# t13a
# t13b
# t13c
# t13d
# t13e
# t13f
# t13g
# t13h
# t13i
# t13j

Porttinumerot 1024 - 49151 ovat rekisteröitäviä porttinumeroita, joista voidaan valita uusille sovellusprotokollille porttinumero rekisteröitäväksi. Myös rekisteröitävä porttinumero voidaan rekisteröidä useammalle eri protokollalle. Jos kahdella eri sovellusprotokollalla on käytössä sama porttinumero, voi se estää kyseisiä protokollia käyttäviä verkkosovelluksia toimimasta samaan aikaan samassa laitteessa. Normaalisti samaa porttinumeroa ei voi samaan aikaan käyttää eri sovellukset. Tämä tosin vaihtelee käyttöjärjestelmän sekä kuljetuskerroksen protokollan mukaan. Sovellusprotokollissa tulisi olla menetelmä hylätä kaikki vääränlaiset datapaketit mahdollisen saman porttinumeron käytön vuoksi.

Porttinumerot 49152 - 65535 ovat dynaamisia porttinumeroita tai yksityisiä porttinumeroita, joita käytetään usein, kun käyttöjärjestelmä varaa asiakkaalle porttinumeron käyttöön. Osa käyttöjärjestelmistä käyttää myös rekisteröityjä porttinumeroita dynaamisesti antaen niitä asiakassovellusten käyttöön.

Tutustutaan seuraavaksi muutamaan yleiseen sovelluskerroksen protokollaan.

HTTP (Hypertext Transfer Protocol)

# video2019Luento6b
# v2018L6_2

HTTP (Hypertext Transfer Protocol) on yleisin Internetissä käytetty sovelluskerroksen protokolla. HTTP protokollaa käytetään välittämään informaatiota verkkoselainten ja WWW-palvelinten välillä. HTTP toimii asiakas-palvelin arkkitehtuurin mukaisesti. Kuljetuskerroksella HTTP käyttää yhteydellistä TCP-protokollaa. Verkkoselain, asiakas, avaa TCP-yhteyden palvelimeen ja välittää sovelluskerroksen pyynnön palvelimelle. Usein kyseessä on GET-pyyntö, jolla pyydetään esimerkiksi WWW-palvelimella sijaitseva HTML-sivu. Protokollan versio HTTP/1.1, jota vielä yleisesti käytetään, on tekstipohjainen protokolla. Kommunikaation käytetään siis tekstiä, joka on ihmisenkin luettavissa. Teksti toki koodataan binääriseksi tiedonsiirtoa varten, aivan kuten kaikki teksti tallennetaan binäärisenä digitaalisissa laitteissa, kuten tietokoneissa tai matkapuhelimissa.

Viimeinen virke - kirjoitusvirhe

Teksti toki koodataan binääriseksi tiedonsiirtoa varten, aivan kuten kaikki teksti tallennetaan binäärisenä DIITAALISISSA laitteissa, kuten tietokoneissa tai matkapuhelimissa.

av: kiitos, korjattu

08 Jun 22 (edited 09 Jun 22)

GET-pyynnössä on yleensä useita rivejä tekstiä, mutta ensimmäisellä rivillä on GET-metodi ja riviä kutsutaan monesti metodiriviksi. HTTP/1.1 protokollan viestit ovat siis tekstiä, joka välitetään bitteinä. Teksti on HTTP/1.1 protokollan otsikkokentissä koodattu binääriseksi ASCII merkistökoodauksella. Seuraavassa tehtäväkohdassa selvitä isoja kirjaimia GET vastaavat 7-bittiset ASCII binääriluvut, lisää vasemmanpuolimmaiseksi bitti 0.

# t1a

Seuraavassa tehtäväkohdassa on kokonaisuudessaan yksinkertaisin GET-metodirivi, ilman rivinvaihtomerkkejä. Huomaa, että rivillä on välilyöntejä, jolle on oma binäärilukunsa. Lisäksi esimerkiksi erikoismerkeille / ja . on määritelty omat binääriluvut.

# t1b
  1. kohdassa tulee viesti “Tarkistin ei löydä tiedostoa, ilmoita virheestä opettajalle”

av: Kiitos, vika korjattu

30 Mar 21 (edited 30 Mar 21)

Miksi en saa pisteitä vaikka tulos on oikein?

av: jos tulostuvat merkit on oikein, mutta tarkistin ilmoittaa virheestä, niin yleensä syynä on jokin ei-tulostuva merkki, esimerkiksi rivinvaihto tekstin lopussa.

11 Nov 21 (edited 11 Nov 21)

Uusin protokollan versio HTTP/2 on binäärinen, siinä ei siis siirretä tietoa enää tekstinä, vaan informaatio koodataan muulla tavalla. Version HTTP/2 käyttö ei ole vielä ehtinyt yleistyä kovin laajalle. Tarkemmin HTTP/1.1 protokollasta voi opiskella, teoriassa ja käytännössä, esimerkiksi tämän kurssin Demo 4 sivulla.

HTTP otsikkokentät

# video2019Luento6c

HTTP protokolla siirtää nykyään paljon tietoa verkkoselaimen ja palvelimen välillä HTTP protokollan otsikkokentissä, otsikoissa, englanniksi headers. HTTP/1.1 versio protokollasta on tekstipohjainen ja siinä on määritelty, että yksi otsikko on aina yhdellä rivillä. Otsikorivillä on otsikkokentän nimi ja siitä kaksoispisteellä erotettuna otsikkokenttään liittyvä arvo. Uusia otsikkokenttiä määritellään lisää jatkuvasti mm. verkkosovellusten käytön monipuolistamiseksi sekä tietoturvan parantamiseksi.

Eräs palvelu minkä tahansa WWW-palvelun käyttämän HTTP protokollan otsikkokenttien turvallisuuden tutkimiseen on Security Headers.

  • Tekstipohjainen protokolla (vielä)
  • WWW sivujen siirtoon palvelimelta asiakkaalle (selaimelle)
  • Selain lähettää pyynnön johon palvelin vastaa
  • Yleisin pyyntö on GET ja palvelin vastaa status koodilla, joka kertoo miten pyyntöön vastaaminen onnistui
# t1c
HTTP Evästeet otsikkokentissä
# video2019Luento6d

HTTP protokolla ei muodosta yhteyttä selaimen ja palvelimen välille. HTTP protokolla on siis tilaton protokolla, palvelin ei esimerkiksi tiedä onko selain pyytänyt jotain sivua aikaisemmin. Selain voi kyllä asettaa HTTP protokollan otsikkokenttiin tiedon aikaleimasta, jota uudemman sivun se haluaa, muutoin se käyttää omassa välimuistissa sijaitsevaa sivua. Jokainen asiakkaan pyyntö on erillinen, eikä palvelin voi tietää pyyntöjen liittyvän esimerkiksi saman henkilön TIM-sivujen selaamiseen, ilman lisäinformaatiota. Jos lisäinformaatiota ei olisi, niin esimerkiksi TIM-järjestelmässä, joutuisi käyttäjä aina kirjautumaan uudestaan siirtyessä uudelle sivulle.

HTTP eväste, englanniksi cookie, on pieni määrä tekstimuotoista dataa, eräänlainen tunniste, jonka palvelin lähettää asiakkaalle HTTP otsikkokentässä. Asiakas, eli selain, tallentaa datan laitteelle. Jatkossa, kun selain lähettää pyyntöjä samalle palvelimelle, lisää se aina saamansa evästeet HTTP pyyntöjen otsikkokenttiin. Palvelin pystyy vastaanottamansa evästeen avulla yhdistämään uudet HTTP pyynnöt aiempiin saman laitteen ja selaimen tekemiin pyyntöihin. Esimerkiksi, kun kirjautuu TIM-järjestelmään, palvelin lähettää tunnistautumisevästeen, jonka selain liittää kaikkiin tuleviin pyyntöihin. Tunnistautumisevästeen vastaanottaessaan palvelin tietää että selaimen käyttäjä on aiemmin tunnistautunut, eikä näin ollen tarvitse aina kirjautua uudestaan, kun siirtyy TIM-järjestelmässä sivulta toiselle.

HTTP evästeitä on tunnistautumisen lisäksi myös muihin tarkoituksiin. Evästeillä voidaan esimerkiksi tallentaa tietoa siitä mitä painikkeita sivulla klikataan, millä sivuilla vieraillaan tai mitä on valittu sivuston ostoskoriin. Evästeitä voidaan käyttää sen muistamiseksi, mitä tietoja on aiemmin annettu sivulla sijaitseviin lomakkeiden kenttiin, esimerkiksi nimi, käyttäjätunnus, salasana tai luottokorttinumero.

Evästeiden käytön suurin riski liittyy yksityisyyteen. Jos palvelun sivusto käyttää muiden palveluntarjoajien palveluita, kuten esimerkiksi mainoksia, joiden lähteenä on eri verkkotunnus, kuin käytetyn palvelimen, niin nämä ulkopuoliset palvelun tarjoajat voivat asettaa omia evästeitään. Tällaisia ulkopuolisten palveluiden asettamia evästeitä kutsutaan kolmannen osapuolen evästeiksi. Nykyisissä selaimissa voi asetuksista estää kolmannen osapuolen evästeiden asettamisen. Jos samaa mainosta esitetään esimerkiksi useilla eri sivustoilla, pystyy mainostaja keräämään tietoa siitä millä sivustoilla käyttäjä liikkuu.

Käyttäjän toimesta tietoturvariskin evästeet muodostavat harvoin. Esimerkiksi silloin, jos evästeitä, eli HTTP liikennettä, ei ole salattu, välitetään kirjautumiseen liittyvät evästeet selkokielisenä, jolloin ne voidaan kaapata verkkoliikenteestä. Kun käyttäjä kirjautuu vain palveluihin, jotka käyttävät salattua HTTP-protokollaa, ei evästeiden pitäisi olla kaapattavissa, olettaen että palveluntarjoaja on luotettu. Toinen harvinaisempi käyttäjän toimintaan liittyvä uhka on, jos vahingossa jakaa selkokielisen kirjautumiseen liittyvän evästeen. Eli käyttäjän pitää itse selvittää omalta laitteelta eväste ja jakaa se jollain menetelmällä toisille käyttäjille. Tämä vastaa sitä, että jakaisi käyttäjätunnuksen sekä salasanan. Yleisesti kaikki tunnistautumista vaativat luotettavat palvelut käyttävät nykyään salattua HTTP:tä, mutta niin tekevät myös ei luotettavat palvelut.

Esimerkiksi evästeen, jolla olet kirjautunut TIM-sivulle, pääsee näkemään Chrome selaimen kehittäjän työkaluilla (CTRL-Shift-I) tai muiden selainten vastaavilla. Valitse Network-välilehti ja lataa sivu uudestaan. Työkalu näyttää kaikki tiedostot, jotka liittyvät sivun lataamiseen, sekä tietoja esimerkiksi latausajoista ja HTTP protokollan mukaisista viesteistä tiedostojen noutamiseen. Valitse ensimmäinen tiedosto; jos latasit esimerkiksi sivun https://tim.jyu.fi/view/kurssit/tie/itkp104/2021/teoria-2, niin tiedosto on teoria-2. Valitse Headers-välilehti ja sieltä alakohta Request headers, joka sisältää otsikkokentät, jotka selaimesi lisäsi HTTP-pyyntöön tiedoston hakemiseksi. Sen alta löytyy otsikkokenttien nimiä, kuten Connection erotettuna kaksoispisteellä otsikkokentän arvosta keep-alive. Otsikkokentän Cookie arvo sisältää informaation siitä, kuka on kirjautunut TIM-järjestelmään. Kuka tahansa, joka saisi kyseisen evästeen arvon voisi, pienellä työllä, esittää että on kirjautunut sinuna TIM-järjestelmään, niin kauan kunnes kirjaudut ulos. Seuraavalla kirjautumiskerralla muodostetaan uusi eväste kirjautumisen yhteydessä.

Tunnistautumisevästeiden turvallisuus tiedonsiirrossa riippuu evästeen asettavan palvelimen sekä käytettävän verkkoselaimen tietoturvan laadusta. Tietoturvan haavoittuvuudet voivat johtaa evästetietojen päätymiseen ulkopuolisille tahoille ja näin voidaan mahdollisesti "kirjautua" käyttäjien tileille palveluun, jonka evästetiedot ovat vaarantuneet. Esimerkkinä tietoturvauhkista, joiden kautta mm. evästetieto voi vaarantua on Cross-site scripting (XSS) ja Cross-site request forgery (CSRF tai XSRF). XSS-hyökkäyksessä selaimella voidaan syöttää oma koodi (käytetään myös termiä injektoida) palvelimen kautta muiden käyttäjien pyytämiin verkkosivuihin. XSS-haavoittuvuus on tänäkin päivänä yksi suurimmista uhkista, joita syntyy huolimattomasti toteutetuille WWW-sivustoille. XSS hyväksikäyttää käyttäjän luottamusta palveluntarjoajaan. XSRF on muuten samankaltainen, mutta se hyväksikäyttää luottamusta, joka palveluntarjoajalla on käyttäjän verkkoselaimeen.

Miten käy kirjautumiselle jos selain kaatuu tai yhteys katkeaa?

# v2018L6_3
  • HTTP on yhteydetön protokolla, ei ylläpidä yhteyttä palvelimeen (alapuolinen kuljetuspalvelu on yhteydellinen, mikä on eri asia)
  • HTTP on tilaton protokolla, eli HTTP protokolla ei välitä informaatiota mahdollisesta aiemmasta vierailusta sivulla
  • Evästeillä palvelin pystyy tunnistamaan/muistamaan käyttäjän (selaimen) aiemmat vierailut
  • Palvelin pystyy tallentamaan lomakkeilla syötettyä tietoa ja yhdistämään sen evästeen avulla käyttäjään
# videoJohdanto50
# t1d

Web välimuisti (cache)

# video2019Luento6e
# v2018L6_4

Web välimuisti tai HTTP välimuisti, englanniksi Web cache tai HTTP cache, on jokin teknologia, jolla WWW-palvelimelta haettu resurssi tallennetaan väliaikaisesti jonnekin muualle, jotta se olisi uudelleen pyydettäessä nopeammin haettavissa. Lisäksi välimuistit pienentävät WWW-palvelinten kuormaa. Web välimuisti voi olla erillinen laitteisto, palvelin tai päätelaitteessa sijaitseva ohjelmisto.

Web välimuistit voidaan jakaa kahteen ryhmään. Asiakas-puolen välimuisteja ovat esimerkiksi ne, jotka sijaitsevat käyttäjän tietokoneessa toteutettuna selaimen yhteyteen, internetoperaattorin tai yrityksen verkossa erillisenä palvelimena. Palvelin-puolen välimuisteja on esimerkiksi palveluntarjoajilla omassa verkossaan, jotka tarjoavat suosituimpia resursseja todellisen palvelimen sijaan, pienentäen todellisen palvelimen kuormaa. Web välimuisteiksi voidaan ajatella myös CDN (Content Delivery Network)-palveluntarjoajat. CDN- eli sisällönjakeluverkon avulla WWW-palvelut voidaan hajauttaa laajemmalle alueelle ympäri maailman, sen sijaan että ne olisivat ainoastaan palveluntarjoajan omassa verkossa.

Web välimuistipalvelin sekoitetaan monesti välityspalvelimeen tai välipalvelimeen, englanniksi proxy server. Välipalvelin eroaa välimuistipalvelimesta siten, että se ei tallenna välittämäänsä informaatiota pitkäksi aikaa. Välipalvelin välittää selainten pyyntöjä esimerkiksi WWW-palvelimille, mahdollistaen esimerkiksi käyttäjän sijainnin piilottamisen WWW-palvelimelta.

  • Tallennetaan väliaikaisesti HTTP protokollalla haettuja objekteja
  • Web sivu tulee näkyviin nopeammin, kun se haetaan lähempää
  • Sivun tallentaminen välimuistiin voidaan sallia HTTP otsikkokentillä
  • Välimuistissa oleva sivun voimassaolo voidaan määrittää
    • Jos sivu on tuore, ei tarvitse kysyä uutta sivua
    • Jos sivu on vanha, kysytään palvelimelta, voiko sitä vielä käyttää
  • Pienentää tiedonsiirron tarvetta, helpottaa ruuhkia pullonkaula -linkeillä
  • Selain tallentaa hakemiaan resursseja välimuistiin (browser cache)
  • ISP:llä tai organisaatiolla voi olla välimuistipalvelin (Web cache tai HTTP cache)
  • Web proxy on eri asia, ei tallenna välimuistiin, välittää pyynnön eteenpäin
  • Joskus Web cache:sta käytetään nimitystä Web proxy cache, korostamaan että välimuisti on erillisessä palvelimessa
# videoJohdanto51
# t1e

HTTPS (Hypertext Transfer Protocol Secure)

# video2019Luento6f
# video2019Luento6g
# v2018L6_5

HTTP protokollaa, kuten montaa muutakaan vanhaa protokollaa, ei alunperin suunniteltu tietoturvalliseksi, koska ei aavistettu sitä, että protokollaa käytetään palveluissa, joissa tietoturvan on oltava hyvä. Toimivan protokollan muuttaminen on toisinaan turhan työlästä hyötyihin nähden. Nykyään HTTP protokollalla siirrettävä tieto voidaan salata ja kommunikaatio voidaan saada turvalliseksi käyttämällä HTTP protokollan turvallista versiota, HTTP Secure (HTTPS). HTTPS ei ole uusi protokolla, vaan se on nimitys sille, että HTTP kommunikaatio siirretään turvallisesti, käyttämällä TLS-protokollaa. HTTP:llä siirrettävä tieto salataan ensin TLS:n avulla ja annetaan sitten kuljetuskerrokselle TCP protokollan kuljetettavaksi.

HTTPS protokollaa käytettäessä URL:in skeemana on https eli http-skeemaan on lisätty kirjain s. Nykyään selaimet saattavat piilottaa käyttäjältä URL-skeeman, kun käytössä on HTTPS ja näyttävät sen sijaan selaimen osoite rivillä visuaalisen kuvion suojauksesta. Esimerkiksi Chrome-selain näyttää lukon kuvan, jos sivustossa on kaikki kunnossa. Visuaalista kuvaa klikkaamalla saa lisätietoja sivuston turvallisuudesta.

Aiemmin, esimerkiksi ITKP104 kurssin materiaalista selain ilmoitti, että se ei ole turvallinen. Syynä oli se, että osa materiaalin kuvista sijaitsi users.jyu.fi palvelimella, joka ei käytä HTTPS:ää. Ne kuvat ovat täten haavoittuvia MITM hyökkäykselle, tosin todennäköisyys hyökkäykselle on mitätön ja hyöty olisi lähinnä kiusanteko. Kuvat on nyt siirretty TIM-järjestelmään. Selaimet ovat alkaneet estämään salaamattomilta HTTP palvelimilta kuvien lataamisen HTTPS:ää käyttävälle sivulle.

HTTPS:n tarkoituksena on tunnistaa verkkosivua tarjoava palvelin sekä suojata siirretyn datan yksityisyys ja oikeellisuus. HTTPS:n käyttö suojaa esimerkiksi mies välissä -hyökkäykseltä, englanniksi man-in-the-middle attack (MITM). MITM hyökkäyksessä kolmasosapuoli on kommunikaation välissä (keskellä) kaapaten kaikki viestit ja mahdollisesti kopioi, muuttaa tai tuhoaa viestejä kummankaan kommunikoivan osapuolen huomaamatta. HTTPS:n salaus siis estää sen ettei kaapattua dataa saada dekoodattua. Salausmenetelmä havaitsee kaikki pienetkin muutokset datassa, joten hyökkääjä ei saavuta mitään mahdollisella satunnaisella datan muuntamisella. HTTPS:n salauksen suoja perustuu käytetyn TLS protokollan suojaan, eli jos TLS:n ominaisuuksissa tai niiden toteutuksessa on haavoittuvuus, vaarantaa se HTTPS liikenteen. Koska TLS salattu data kuljetetaan salaamattomassa TCP paketissa, joka kuljetetaan salaamattomassa IP-paketissa, eivät porttinumerot ja IP-osoitteet ole salattuja, joten vaikkei kommunikaation sisältöä pystytä dekoodaamaan, voidaan kommunikaatiosta ja sen osapuolista saada jotain informaatiota seuraamalla TCP- ja IP-pakettien tietoja.

HTTPS palvelimen tunnistaminen vaatii jonkin luotettavan kolmannen osapuolen allekirjoittaman palvelinpuolen digitaalisen sertifikaatin. Digitaalista sertifikaattia kutsutaan yleisesti SSL sertifikaatiksi tai harvemmin vielä TLS sertifikaatiksi. Käytännössä SSL ja TLS menetelmät käyttävät samaa digitaalista sertifikaattia, joten SSL sertifikaatti termin käyttö myös TLS:n yhteydessä on jäänyt käytännöksi. Sertifikaatti mahdollistaa palvelimen tunnistamisen ja tiedonsiirron salaamisen. Palvelimen asetusten mukaisesti SSL tai TLS mekanismi sitten ratkaisee sen kuinka turvallisesti sertifikaattia todella käytetään. Jatkossa materiaalissa käytetään termiä digitaalinen sertifikaatti tai sertifikaatti. HTTPS ei tunnista asiakaspuolta eli käyttäjien selaimia, koska selaimen tunnistamiselle ei ole tarvetta. Näin ollen selaimilla ei ole omaa sertifikaattia. Käyttäjän tunnistaminen tehdään selaimesta riippumattomasti.

HTTPS:n käyttö on yleistynyt paljon vasta 2010 luvun loppupuolelta lähtien, koska aiemmin digitaaliset sertifikaatit olivat kalliita. Vuonna 2016 Electronic Frontier Foundation (EFF) julkaisi kampanjan HTTPS:n saamisesta laajempaan käyttöön. Käytännössä HTTPS alkoi vauhdilla leviämään, kun vuonna 2014 perustettiin Internet Security Research Group (ISRG) -organisaation ylläpitämä Let's Encrypt konsortio, joka alkoi tarjoamaan ilmaisia digitaalisia sertifikaatteja 12.4.2016. Lisäksi sertifikaatin luonnin, validoinnin sekä allekirjoituksen toteutus automatisoitiin, kun ne ennen jouduttiin tekemään manuaalisesti.

Verkkoselaimen valmistajat päättävät ne sertifikaattiauktoriteetit, joihin luotetaan. Lista sertifikaatin tarjoajista on sisällytetty asennettavaan verkkoselainohjelmistoon. Täten käyttäjän tulee luottaa verkkoselainvalmistajaan (ja joissain tapauksissa käyttöjärjestelmän valmistajaan) ja siihen että HTTPS on implementoitu kunnolla sekä selaimen hyväksymät sertifikaatin tarjoajat ovat luotettavia. Tarvittaessa Internetistä löytyy ohjeita siihen kuinka voi itse muokata verkkoselainten hyväksymiä sertifikaattiauktoriteetteja.

Sertifikaattiauktoriteetit, varmenteiden myöntäjät, englanniksi Certificate Authority (CA), jakautuvat hierarkkisesti. Ylimmällä tasolla ovat juuritason (engl. root) CA:t, jotka jakavat sertifikaatteja välitason (engl. intermediate) CA:ille. Välitason CA:t voivat vielä jakaa sertifikaatteja alemman, kolmannen, tason sertifikaatin myöntäjille, englanniksi issuer CA. Sertifikaattihierarkia on täten joko kaksi- tai kolmetasoinen. Useimmiten asiakkaille sertifikaatit tulevat välitason CA:lta, jolloin hierarkia on kaksitasoinen.

"Välitason CA:t voivat jakaa sertifikaatteja..., mutta useimmiten sertifikaatit tulevat välitason CA:lta." Onko lauseessa virhe?

av: Tarkensin tekstiä, jotta olisi selkeämmin sanottu

23 May 22 (edited 24 May 22)

Esimerkiksi huhtikuussa 2020 TIM-palvelimen sertifikaatin on Jyväskylän yliopistolle myöntänyt välitason CA TERENA, jolle sertifikaatin on myöntänyt juuritason CA DigiCert. Nykyään yliopisto hyväksyy mm. juuritason CA Let's Encrypt:n myöntämien sertifikaattien käytön, joten sertifikaatin myöntäjä voi esimerkiksi TIM:in osalta joskus vaihtua. Tammikuussa 2022 TIM:in juuritason CA on ISRG Root X1 ja välitason CA on Let’s Encrypt R3, jotka ovat Let's Encrypt sertifikaatteja.

  • "HTTP Secure", myös "HTTP over TLS" tai "HTTP over SSL"
  • Keneen luotetaan? Selainten valmistajiin, Sertifikaatin myöntäjiin
  • Selainten valmistajat valitsevat luotetut juurisertifikaatit
  • Palvelimen admin luo julkisen avaimen sertifikaatin , jonka joku (luotettu) Sertifikaatti auktoriteetti allekirjoittaa
  • Jos Sertifikaatti auktoriteetti on selaimen valmistajan mukaan luotettu, niin selain ei anna varoitusta
  • Tuli 2016: ilmainen automatisoitu sertifikaatin myöntäjä: Let's Encrypt
# videoJohdanto52
# t1f

HTTP protokolla kehittyy hitaasti

# video2019Luento6h

HTTP protokollan pyytäessä informaatiota palvelimelta aiheuttaa kuljetuskerroksella tapahtuvat yhteyden muodostus viivettä. Alunperin, jos esimerkiksi HTML-sivulla oli useita samalla palvelimella sijaitsevia kuvia, avattiin jokaista kuvaa varten uusi yhteys kuljetuskerrokselle. Myöhemmin tehtiin HTTP protokollaan lisäys, jossa kuljetuskerroksen yhteys voidaan jättää "päälle" ja siten samaa yhteyttä voidaan käyttää kaiken informaation siirtoon. Uusi menetelmä sai nimen HTTP persistent ja samalla alkuperäistä menetelmää alettiin kutsumaan nimellä HTTP non-persistent.

Kuljetuskerroksen protokolla TCP pyrkii jakamaan käytössä olevan tiedonsiirtokapasiteetin tasan kaikkien yhteyksien kesken. Selainvalmistajat alkoivat tätä ominaisuutta kiertääkseen käyttämään useita samanaikaisia yhteyksiä, joilla voitiin rinnakkain siirtää informaatiota. Näin, jos HTML-sivulla on useita siirrettäviä objekteja, esimerkiksi kuvia, saatiin verkosta käyttöön enemmän resursseja yhden sivun informaation siirtoon.

# video2019Luento6i

HTTP/2 versiossa on paremmin otettu huomioon kuljetuskerroksella käytettävän TCP protokollan ominaisuudet. HTTP/2 kykenee siirtämään eri objekteja samalla yhteydellä rinnakkain. Lisäksi on mahdollista että palvelin lähettää objektit ilman pyyntöäkin, kun ne kerran ovat samalla sivulla, niin objekteja ei tarvitse erikseen pyytää, kuten HTTP/1.1 versiossa.

# t1g
# video2019Luento6j

HTTP/3 tulee vaihtamaan TCP tilalle kuljetuskerrokselle QUIC protokollan, jolloin TCP:n tiedonsiirtoa rajoittavista ominaisuuksista päästään eroon.

# t1h

https://tools.ietf.org/ Osoiteesta johtaa URL osoitteeseen joka päättyy .txt mutta tätä ei hyväksytä. Voisiko korjata hyväksymään .txt pääteen

av: nyt on päivitetty, että hyväksyy aina .txt päätteen

10 Sep 21 (edited 13 Sep 21)

Dokumentti on saanyt RFC numeron toukokuussa 2021, eikä datatracker.ietf.org suostu antamaan sille URLia joka kepaisi tarkistukseen. Myöskään viimeisen draft-version URL ei ole kelvollinen (päättyy /xx/)

av: lisätty tehtävänantoon maininta valmistuneesta RFC:stä, lisätty tuki /xx/ muodolle, poistin numeron opiskelijan kommentista, joka paljasti vastauksen.

07 Oct 21 (edited 08 Oct 21)
# t1i

Datatracker on muuttanut draftien versioinnin polkumuotoilua, uusi muotoilu on "/dokumentin-nimi/versionumero", tarkistin hyväksyy vain /dokumentin-nimi-versionumero" muodon

av: palvelimella on näköjään eri tapoja esittää dokumentit, ja niillä eri URL:it. Lisäsin tuen että tarkistin hyväksyy myös muodon "/dokumentin-nimi/versionumero/"

07 Oct 21 (edited 08 Oct 21)

Ei tunnista uusinta versiota 34? https://datatracker.ietf.org/doc/html/draft-ietf-quic-http-34

av: Ei vaan pitää olla "uusin vanhalla nimellä" ollut versio. Eli pitää tutkia, missä vaiheessa tehtiin dokumentin otsikon muutos.

13 Jan 22 (edited 13 Jan 22)

Ei suoranaisesti palvele oppimista "etsi linkki/RFC" -tyyppiset tehtävät.

av: RFC tehtävien tarkoitus on tutustuttaa internetin kehitykseen ja RFC järjestelmään. Tehtäviä ei ole pakko tehdä, voi hypätä ne yli jos ei tarvitse pisteitä ja RFC järjestelmästä tietää kaiken tarpeellisen

08 Feb 22 (edited 08 Feb 22)
# t1j

Minun mielestä tämä osoite on kuitenkin oikein vaikka sitä ei hyväksytä: https://datatracker.ietf.org/doc/draft-ietf-quic-http/

av: URL:issa pitää olla versionumero tarkistinta varten, klikkaa vaikka ko. sivulla sitä versiota, joka on oikein, niin URL:iksi päivittyy sellainen, jossa mukana versionumero. Päivitin ohjeistusta tämän osalta.

02 Jan 22 (edited 07 Jan 22)
# v2018L6_6
  • 1991: HTTP/0.9
  • 1996: HTTP/1.0 - HTTP non-persistent: Voidaan siirtää vain yksi objekti samalla TCP yhteydellä
  • 1997: HTTP/1.1 - HTTP persistent: Voidaan siirtää useita objekteja samalla TCP yhteydellä
    • Mutta ei voida siirtää rinnakkain samalla TCP yhteydellä
    • Selaimet avaavat useita rinnakkaisia TCP yhteyksiä
  • 2015: HTTP/2: voidaan siirtää useita objekteja rinnakkain samalla TCP yhteydellä
  • HTTP/2 muita muutoksia: binäärinen, otsikoiden pakkaaminen, palvelin voi työntää sivuja välimuistiin ilman selaimen pyyntöä,...
  • Demo: HTTP/1.1 vs. HTTP/2
  • HTTP/3
  • https://w3techs.com/technologies/overview/site_element
    • Huhtikuussa 2022 46.3% kaikista palvelimista tukee HTTP/2 versiota
    • Huhtikuussa 2022 24.8% kaikista palvelimista tukee HTTP/3 versiota
# videoJohdanto53
# videoHTTPrinnakkain
HTTP:n TCP yhteyksien visualisointeja
# video2019Luento6k

Alla on Javascript visualisointi, jossa pyritään havainnollistamaan HTTP protokollan ja käytettävien TCP yhteyksien eri vaihtoehtoja.

# v2018L6_7

HTTP Autentikointi

HTTP protokollaan on RFC dokumenteissa määritelty tunnistusmenetelmiä, autentikointimenetelmiä. HTTP Basic access authentication on yksinkertaisin mekanismi toteuttaa tunnistautuminen www-sivulle. Siinä tunnistaminen toteutetaan käyttämällä HTTP:n otsikkokenttiä, eikä tarvetta ole esimerkiksi evästeille, istunnon tunnisteille tai erillisille kirjautumissivuille. HTTP Basic access authentication on turvaton yksinään, joten sitä tulisi käyttää vain TLS:llä salatussa HTTP-kommunikaatiossa. Käyttäjätunnus ja salasana enkoodataan Base64 koodausmenetelmällä, joka ei ole salausmenetelmä.

HTTP Digest access authentication on myös RFC dokumenteissa määritelty autentikointimenetelmä. Siinä käyttäjätunnus ja salasana kryptataan käyttämällä tiiviste-funktioita. HTTP Digest access authentication on turvallisempi käyttää kuin HTTP Basic access authentication ja on tarkoitettu sen korvaajaksi. Menetelmässä on kuitenkin heikkouksia ja haavoittuvuuksia eikä sitä ole tarkoitettu vahvasti turvalliseksi autentikointimenetelmäksi.

Kun tarvitaan vahvoja autentikointimenetelmiä, täytyy autentikointiin käyttää muita kuin HTTP protokollaan määriteltyjä menetelmiä, esimerkiksi julkisen avaimen salausmenetelmiä tai Kerberos autentikointi protokollaa.

DNS (Domain Name System)

# video2019Luento6l
# v2018L6_8

Domain Name System (DNS) on järjestelmä Internetissä sijaitsevien laitteiden ja palveluiden nimeämiseen. DNS on hierarkkinen ja hajautettu järjestelmä, jonka tärkein tehtävä on liittää verkkotunnukset, englanniksi domain name, verkkokerroksen osoitteisiin, IP-osoitteisiin. Järjestelmän palvelimia kutsutaan DNS palvelimiksi tai nimipalvelimiksi.

# videoJohdanto48
# t2a
# t2b

Verkkotunnuksen hakeminen

# video2019Luento7
# video2019Luento7a
# video2019Luento7b
# v2018L6_9
  • Esimerkiksi itkp104.fi
  • Suomessa (.fi päätteiset) myöntää Traficom
    • Hakeminen 5.9.2016 jälkeen vain verkkotunnusvälittäjän kautta
    • Verkkotunnusvälittäjien kautta voi hakea muitakin päätteitä
      • päätteiden myöntämisperusteiden ehdot vaihtelevat
  • Tarkista onko verkkotunnus varattu: Esimerkiksi Traficom:in verkkotunnushaku
  • Sitten etsi verkkotunnuksenvälittäjä valiten mahdollisia muita tarvittavia palveluja, esimerkiksi sähköpostiosoitteet
  • Voiko hankkia loppupäätteen, jota ICANN ei ole hyväksynyt, esimerkiksi verkkotunnuksen itkp104.ari?
  • Periaatteessa... Alternative DNS root
    • ... jos joku suostuu ylläpitämään .ari verkkotunnusta
    • ja lisäksi sivuston löytämiseen tarvittaisiin erillinen ohjelmisto tai lisäosa selaimeen
# videoJohdanto49

DNS palvelimet

# video2019Luento7c
# v2018L6_10

DNS järjestelmä koostuu DNS palvelimista, nimipalvelimista, joilla on hierarkkinen rakenne. Autoritäärinen nimipalvelin on palvelin, jolla on virallinen tieto jonkun verkkotunnuksen, tai useamman, muunnoksesta. Tieto muunnoksesta, eli verkkotunnusta vastaava IP-osoite, joudutaan hakemaan joltain nimipalvelimelta. Ratkaisijanimipalvelimen tehtävä on selvittää verkkotunnusta vastaava IP-osoite. Tieto muunnoksesta voi olla jo aiemmin selvitetty ja voi täten olla ratkaisijanimipalvelimen välimuistissa. Jos tieto ei ole ratkaisijanimipalvelimen välimuistissa, niin ratkaisijanimipalvelin kysyy ensin juurinimipalvelimelta, sitten ylätason nimipalvelimelta ja lopuksi autoritääriseltä nimipalvelimelta muunnosta. Edellinen siis silloin, kun muunnos ei ole minkään nimipalvelimen välimuistissa ja ratkaisijanimipalvelin käyttää iteratiivista kyselyä.

Ratkaisijanimipalvelin on tietokoneen asetuksissa oletusnimipalvelin, jota tietokoneen DNS-palvelu käyttää, jos DNS-palvelulla ei ole tietoa tallennettuna välimuistiin, tai hosts-tiedostoon. Nykyään verkkoselaimissa voi olla oma välimuisti muunnoksille, jonne tallennetaan tietokoneen DNS-palvelulta saadut tiedot muunnoksesta. Kun verkkotunnusta vastaava IP-osoite on tallennettu välimuistiin, niin tiedonsiirron aloituksessa koettava viive on sitä pienempi mitä lähempää muunnos löytyy.

Ratkaisijanimipalvelin voi joskus olla sama kuin autoritäärinen nimipalvelin. Esimerkiksi, aiemmin ennen syksyä 2024, kun Jyväskylän yliopiston verkkoon kuuluvalla tietokoneella selvitettiin yliopiston verkkotunnuksia vastaavia IP-osoitteita, niin tietokoneeseen oli asetettu oletuspalvelimeksi ns1.jyu.fi (130.234.4.30), joka oli myös jyu.fi -verkkotunnuksista vastaava autoritäärinen nimipalvelin. Toisena, eli (pakollisena) varanimipalvelimena, toimi ns2.jyu.fi (130.234.5.30).

Nykyään, syksystä 2024 lähtien, Jyväskylän yliopiston laitteiden oletusnimipalvelimet on erotettu eri laitteiksi kuin autoritääriset nimipalvelimet. Jyväskylän yliopiston verkossa oletusnimi palvelin on ins1.jyu.fi ja varalla toimii ins2.jyu.fi. Autoritääriset nimipalvelimet, jotka vastaavat ulkopuolelta tuleviin kyselyihin ovat vastaavasti ens1.jyu.fi ja varalla ens2.jyu.fi.

Lisäksi FUNET-verkon puolella on yksi autoritäärinen varanimipalvelin, joka on siltä varalta että yliopiston oma sekä varalla oleva autoritäärinen DNS-palvelin, ovat molemmat poissa käytöstä. Myös autoritääriset varanimipalvelimet antavat virallisia, autoritäärisiä, vastauksia niistä verkkotunnuksista, joista ne vastaavat.

# video2019Luento7d
  • Hajautettu hierarkkinen rakenne
  • URL: www.jyu.fi.[tyhjä]
  • DNS Palvelinten roolit
    • Juurinimipalvelin ["piste tyhjä"]
    • Ylätason nimipalvelin [.fi] (TLD-nimipalvelin)
    • Autoritäärinen nimipalvelin [jyu.fi]
    • Ratkaisija (Resolveri) nimipalvelin
      • alkaa pyynnöstä selvittää IP-osoitetta
        • DNS-asiakasohjelmisto laitteessa kysyy ratkaisijalta, joka on
        • oletusnimipalvelin laitteen verkkoasetuksissa

# video2019Luento7e

Juurinimipalvelimet

# video2019Luento7f
# v2018L6_11

# videoDNS1

Kokeile traceroute ohjelmalla selvittää useamman juurinimipalvelinten sijaintia. Jyväskylän yliopiston verkossa traceroute käyttää (keväällä 2021) IPv4 osoitteita ja tällöin jäljitys onnistuu. Joidenkin operaattoreiden verkoissa käytetään juurinimipalvelimille ja ylätason nimipalvelimille IPv6 osoitteita. Tällöin traceroute saattaa näyttää vain ensimmäisen reitittimen IPv6 osoitteen ja ilman reittiä nimipalvelimen IPv6 osoitteen. Lisäksi voi olla että traceroute ei toimi ollenkaan IPv4 osoitteilla. Halutessasi käytä VPN-yhteyttä Jyväskylän yliopistoon.

DNS: kokeile itse nslookup tai dig-ohjelmalla

# video2019Luento7g
# v2018L6_12

Käyttöjärjestelmissä on komentoriviltä ajettava ohjelma, jolla voi selvittää Internetin verkkotunnusta vastaavan IP-osoitteen. Windows-käyttöjärjestelmässä ohjelman nimi on nslookup. Käyttöjärjestelmissä macOS ja Linux on nslookup-ohjelman lisäksi myös ohjelma dig, joka on monipuolisempi kuin nslookup. Kun selvitetään verkkotunnusta vastaava IP-osoite käyttöjärjestelmään määritetyltä oletusnimipalvelimelta, annetaan verkkotunnus parametrina nslookup tai dig -ohjelman nimen jälkeen. Esimerkiksi, jos kysytään users.jyu.fi verkkotunnusta vastaavaa IP-osoitetta, kirjoitetaan komentoriville

nslookup users.jyu.fi

tai

dig users.jyu.fi

Tee seuraava tehtävä käyttöjärjestelmän nslookup-ohjelmalla tai Linux ja macOS käyttöjärjestelmissä voit käyttää myös dig-ohjelmaa.

# t2c

av: tarkistin on uusittu 19.3.2021, jättäkää kommenttia, jos tarkistin ei toimi oikein, kaatuu, tms tässä tai seuraavissa tehtäväkohdissa. Testausta ei ole tehty kaikilla mahdollisilla käyttöjärjestelmillä, molemmilla ohjelmilla, eri verkkotunnuksilla, IPv4 tai IPv6 osoitteilla. Päivitän tarkistinta, kun ilmenee toimimattomuutta.

bugeja tarkistimessa, annettu pisteet 14.4.2021 niille, joiden vastaus oikein, mutta. tarkistin ei ollut hyväksynyt vastausta.

av: Tarkistimesta korjattu bugeja sekä lisätty, että antaa palautetta enemmän, kun havaitsee virheitä

19 Mar 21 (edited 15 Apr 21)

Koska olet tim.jyu.fi palvelimella sijaitsevassa materiaalissa, on tieto tim.jyu.fi verkkotunnuksen IP-osoitteesta haettu oletusnimipalvelimen välimuistiin. Näin vastauksen antaa oletusnimipalvelin, jonka nimen ja IP-osoitteen näet tulosteesta, jos nslookup tai dig-ohjelma sai ne vastauksen mukana. Jos olet Jyväskylän yliopiston verkossa, niin oletusnimipalvelin on samalla verkkotunnuksen autoritäärinen nimipalvelin.

Käynnistämällä nslookup ilman parametreja, aukeaa nslookup -sovellus, jota voi käyttää myös muiden DNS-palvelun tarjoamien informaatioiden kysymiseen. Tällöin nslookup-ohjelman kommunikoi oletusnimipalvelimen kanssa.

Jos halutaan kommunikoida jonkun tietyn nimipalvelimen kanssa, niin nslookup -ohjelmalla on siihen kaksi vaihtoehtoa, interaktiivinen tai suora kysymys. Interaktiivinen kommunikaatio avataan antamalla väliviiva-merkin jälkeen parametrina sen DNS-palvelimen nimi tai osoite, jota halutaan käyttää DNS-kyselyn tekemiseen.

nslookup [-opt ...] - server # interactive mode using 'server'

Interaktiivinen kannattaa valita, jos tekee useamman kyselyn samalta palvelimelta. Jos tehdään vain yksi kysely, niin DNS-kysely voidaan ohjata halutulle DNS-palvelimelle komennolla, jossa kysyttävän verkkotunnuksen perään annetaan parametriksi DNS-palvelin, jolta kysytään.

nslookup [-opt ...] host server # just look up 'host' using 'server'

Esimerkiksi yliopiston viralliselta nimipalvelimelta, ens1.jyu.fi, kysytään voidaan kysyä interaktiivisesti kirjoittamalla nslookup, väliviiva ja sitten palvelimen nimi, tai IP-osoite.

nslookup - ens1.jyu.fi

Komento käynnistää nslookup -sovelluksen, joka alussa ilmoittaa DNS-palvelimen nimen ja IP-osoitteen, jonka kanssa kommunikoit. Jos IP-osoitteena vastauksena on IP-protokollan version 6 osoite, heksadesimaalilukuja ja kaksoispisteitä, eikä IP-protokollan version 4 osoite, kokonaislukuja ja pisteitä, niin käynnistä nslookup-ohjelma uudestaan antamalla parametriksi DNS-palvelimen verkkotunnuksen sijaan DNS-palvelimen IPv4-osoite. Se pakottanee palvelimen tarjoamaan vastaukset IPv4-osoitteina. Jyväskylän yliopiston nimipalvelimen tapauksessa, siis

nslookup - 130.234.255.20

Suoran kyselyn Jyväskylän yliopiston nimipalvelimelta esimerkiksi users.jyu.fi verkkotunnukselle voi tehdä komennolla

nslookup users.jyu.fi ens1.jyu.fi

Ohjelmalla dig DNS-palvelin määritellään lisäämällä DNS-palvelimen nimi komentoriville @-parametrilla. Esimerkiksi

dig @ens1.jyu.fi users.jyu.fi

DNS kyselyn voi siis tehdä myös juurinimipalvelimille, eli kuka tahansa voi kommunikoida juurinimipalvelimien kanssa. Juurinimipalvelimet eivät kuitenkaan anna vastauksia, vaan ohjaavat kysymyksen lähettäjän seuraavan tason nimipalvelimelle. Selvitä DNS-järjestelmän juurinimipalvelimet, voit kokeilla useampiakin. Kysy niistä joltain IP-osoitetta verkkotunnukselle tim.jyu.fi.

# video2019Luento7j
# video2019Luento7k
# t2d

Serverit ei vastaa tai tulee vain Non-authoritative answer

av: tässä tehtävässä pitää saada vastaus joltain jurinimipalvelimelta. Vastaus on aivan erilainen kuin miltään alatason nimipalvelimelta.

17 Oct 21 (edited 18 Oct 21)

Moi Ari, minun piti kirjautua yliopiston verkkoon VPN - yhteydellä, kun henkilökohtainen reititin ei välitä / tarjoa DNS - palvelua eikä firman VPN - yhteydellä saanut listaa ohejiden mukaan noista juuripalvelimista. Niinpä kirjauduin yliopiston verkkoon VPN - yhteydellä ja tein kaikki samat kyselyt/haut nslookup:lla, kuten videoissa neuvot ja löysin vastaavat a. - g.fi tms. juuripalvelimet, joilta sitten kysyin tuota tim.jyu.fi osoitetta. Vastauksessani antama juuripalvelimen osoite 193.166.4.1 oli se a.fi, mutta pitääkö minun nyt tulkita vastauksesi mukaan, että tuo osoite ei kelpaa? Vai olenko ymmärtänyt tehtävänannon täysin väärin? Yst. Kimi Tämä viimeisin vastaukseni pohjaustuu siiten, että kaivoin esiin c.fi DNS palvelimen ja sen osoite on tuo 194.0.11.104. Kysyin siltä tim.jyu.fi IP - osoitetta, mutta ei näytä toimivan.

Ok. Tämä näytti menevän läpi, kun kokeilin eri vaihtoehtoja. Ehkä pää ei ollut kirkkaimmillaan, kun näitä vaihtoehtoja kävin läpi aj ehkä osaksi aprikoin myös sitä, että mitä sinä tässä oikein kysyt eli miltä tasolta tämä näyte pitää oikeasti ottaa, jotta hyväksyy vastauksen. Pääasia, että lopulta ymmärsin mitä tässä haettiin ja ehkä vähän sattuman kauppaa, että otin tulosteen oikeasta kohdasta. Kimi

av: vika oli siinä, että kommunikoit aluksi Suomen ylätason (.fi) palvelinten kanssa.

07 Jan 22 (edited 10 Jan 22)

Moi Ari,

luulen tehneeni tämän oikein mutta tarkistin antaa 0.07/0.1 ja viesti on: "Tarkistin ei löytänyt riviä, jossa on fi". Mikähän tässä mahtoi mennä pieleen? Antamani komennot olivat: 1. "nslookup - (tähän ip)" ja 2. "tim.jyu.fi"

av: Olet tehnyt tehtävän ihan oikein, jostain syystä vastaukseksi ei tule Suomen nimipalvelinten listaa, vaan suoraan TIM:in IP-osoite. Syytä en tiedä, mutta voi olla, että jokin (operaattorisi) DNS-palvelin nappaa juurinimipalvelimille menevät viestit ja palvelee ne itse, jos tietävät vastauksen. Kokeiletko jotain toista juurinimipalvelinta tai toista internetyhteyttä. Katson jossain vaiheessa, täytyykö tarkistimeen lisätä tuki tällaisille tapauksille.

26 Mar 22 (edited 28 Mar 22)

Juurinimipalvelin kertoo vastauksessaan .fi osoitteista vastaavat ylätason nimipalvelimet. Valitse jokin .fi osoitteista vastaavista DNS palvelimista ja kysy siltä IP-osoitetta verkkotunnukselle tim.jyu.fi.

# video2019Luento7l
# t2e

Ficoran dns palvelin asetuksissa, mikähän tässä on pielessä?

av: Ficoran DNS palvelin tld.ficora.fi ei ole Suomen ylätason nimipalvelin. Suomen ylätaon nimipalvelimet on saatu vastauksena edelliseen tehtäväkohtaan, kun juurinimipalvelimelta kysytään (mitä tahansa) .fi päättyvää verkkotunnista.

13 Jan 22 (edited 13 Jan 22)

Ylätason nimipalvelimet antavat seuraavan tason nimipalvelimen tiedot. Eli .fi palvelimet antavat tiedon siitä, mitkä DNS palvelimet vastaavat .jyu.fi osoitteista. Nämä palvelimet ovat .jyu.fi verkkotunnusten virallisia, autoritäärisiä, DNS-palvelimia. Kysy seuraavaksi IP-osoitetta tim.jyu.fi verkkotunnukselle viralliselta nimipalvelimelta. Riippumatta siitä onko alkuperäinen kysely iteratiivinen vai rekursiivinen, palauttaa virallinen palvelin IP osoitteen.

# video2019Luento7m
# t2f
# video2019Luento7n

DNS palvelimet tarjoavat myös muuta informaatiota. Kun esimerkiksi sähköpostipalvelimen pitää lähettää sähköposti, niin DNS-palvelimilta voi kysyä erikseen, että mikä on jonkin verkkotunnuksen sähköpostipalvelin. Jyväskylän yliopiston henkilökunnan sähköposti osoitteiden verkkotunnus on jyu.fi.

# video2019Luento7h
# video2019Luento7i

Aloita nslookup-ohjelmalla kommunikaatio Jyväskylän yliopiston virallisen DNS palvelimen kanssa. Kun ohjelma on käynnistynyt, aseta kyselyn tyypiksi MX, jolla kerrotaan että kysytään sähköpostipalvelinta.

set type=MX

Anna sitten kysyttävä verkkotunnus, eli esimerkiksi jyu.fi.

# t2g

Vastaukseksi saatiin tieto Jyväskylän yliopiston henkilökunnan sähköpostipalvelimista, niiden IP-osoitteista sekä mahdollisesti lisäinformaatiota esimerkiksi virallisista DNS-palvelimista. Henkilökunnan sähköpostipalvelimet ovat jyu.fi verkkoalueella ja ne ovat ainakin vielä Jyväskylän yliopiston digipalveluiden hallinnassa.

Selvitä seuraavaksi Jyväskylän yliopiston opiskelijoiden sähköpostiosoitteista vastaavat sähköpostipalvelimet.

Käynnistä nslookup-ohjelma uudestaan (tarkistin vaati sen tällä hetkellä). Aseta uudestaan kyselyn tyypiksi sähköpostipalvelimen tiedustelu ja anna sitten kysyttäväksi verkkotunnukseksi student.jyu.fi.

# t2h

av: Korjattu bugi, kun nslookup ohjelman käynnisti (jyväskylän yliopiston verkkoalueella) ilman parametreja ja sitten kysyi MX tietoja

26 Mar 21 (edited 13 Jan 22)

Jyväskylän yliopiston opiskelijoiden sähköpostipalvelu oli ulkoistettu Googlen sähköpostipalvelimille 2000 luvun alkupuolilta vuoteen 2021 asti. Silloin DNS-kysely antoi sähköpostipalvelimiksi Googlen palvelimia, mutta että student.jyu.fi osoitteista vastaa virallisesti Jyväskylän yliopiston DNS-palvelimet. Nykyään sekä henkilökunnan että opiskelijoiden sähköposti hallinnoidaan Jyväskylän yliopistossa Microsoftin Outlook sähköpostipalvelulla. 1900-luvulla Jyväskylän yliopiston henkilökunnan ja opiskelijoiden sähköpostit hallinnoitiin yliopiston omilla sähköpostipalvelimilla.

Edellä toteutettu kysely juurinimipalvelimelta ja sitten ylätason nimipalvelimelta ja lopuksi viralliselta nimipalvelimelta vastaa iteratiivista DNS kyselyä. Eivätkä juurinimipalvelimet tai ylätason nimipalvelimet tue ollenkaan rekursiivista DNS kyselyä. Seuraavassa kappaleessa käydään tarkemmin läpi molemmat DNS kyselytyypit.

  • Kokeile komentoriviltä: nslookup (Linux ja Mac -järjestelmissä myös monipuolisempi dig)
    • www.google.com
    • www.google.fi
    • www.jyu.fi
    • users.jyu.fi
    • set type=MX
    • jyu.fi
    • student.jyu.fi
    • set type=all
    • jyu.fi
  • Juurinimipalvelimen ja TLD-nimipalvelimen tiedot
    • set type=all
    • .
    • fi.
  • Tietojen kysyminen miltä tahansa DNS palvelimelta
    • nslookup - 8.8.8.8
    • set type=all
    • jyu.fi
# videoDNS3
# video2019Luento7o

DNS Iteratiivinen vs. rekursiivinen kysely

# video2018Luento7
# v2018L7_1

DNS-kyselyt toteutetaan joko rekursiivisena tai iteratiivisena. Olkoon esimerkkinä verkkotunnuksen www.tietokone.fi IP-osoitteen kysyminen. Rekursiivisessa DNS-kyselyssä kysymys menee ratkaisijalta juurinimipalvelimelle '.', joka kysyy TLD palvelimelta '.fi', joka kysyy autoritääriseltä palvelimelta 'tietokone.fi'. DNS-vastaus toimitetaan samaa reittiä vastakkaiseen suuntaan. Iteratiivisessa DNS-kyselyssä juurinimipalvelimet ja TLD-palvelimet eivät lähetä kysymystä edelleen ja palauta vastausta. Iteratiivisessa DNS-kyselyssä vastauksena annetaan kysyjälle tieto siitä, mistä tulee kysyä seuraavaksi. DNS-palvelimen asetuksista voidaan valita se tukeeko palvelin rekursiivista kyselyä. Juurinimipalvelimet ja TLD-palvelimet eivät pääsääntöisesti tue rekursiivista kyselyä. Organisaatioiden oletusnimipalvelimet tarjoavat pääasiassa rekursiivista kyselyä. Eli ne hoitavat kyselyn muiden laitteiden puolesta ja saavat näin tallennettua välimuistiinsa tiedot osoitteista, joita sen kautta kysytään. Seuraavassa visualisoinnissa oletetaan että kaikki palvelimet tukevat myös iteratiivista kyselyä.

# videoDNS2
# t2i
# t2j

Sähköposti Internetissä

# v2018L7_2

Sähköposti on yksi Internetin vanhimmista sovelluksista. Sähköposti on määritelty useissa RFC dokumenteissa, joista ensimmäiset määrittelivät sekä sähköpostin välitykseen että sähköpostin sisältöön liittyvät asiat. Aluksi sähköposti luettiin suoraan kirjautumalla sähköpostipalvelimelle ja lukemalla posti palvelimen sähköpostilaatikossa, inbox. Myöhemmin kehitettiin protokollia sähköpostin noutamiseen, joilla sähköpostit saattoi hakea luettavaksi sähköpostisovellukseen. Viimeisimpänä lisäyksinä sähköpostiin on RFC dokumentit, joissa määritellään se, kuinka sähköpostia voidaan käyttää siirtämään myös muitakin merkistökoodauksia, kuin 7-bittistä ASCII -koodausta, sekä muun tyyppistä informaatiota kuin teksti.

Sähköpostin lukemiseen ja lähettämiseen käytettävät sovellukset voidaan jakaa karkeasti kahteen eri kategoriaan

Jakona toimii se mitä protokollia sovellukset käyttävät kommunikoimiseen sähköpostipalvelinten kanssa.

# video2019Luento7p
# video2019Luento7q

Nykyään useimmiten sähköpostin lähettämiseen ja lukemiseen käytetään verkkoselainta, jossa sähköpostin lähettäminen sähköpostipalvelimelle sekä noutaminen sähköpostipalvelimelta tehdään HTTP protokollalla, mutta HTTP protokollaa ei kuitenkaan käytetä sähköpostipalvelinten välisessä kommunikaatiossa.

Kaikki kommunikaatio sähköpostipalvelinten välillä tehdään SMTP protokollalla. SMTP protokollaa käytetään sähköpostin lähettämiseen sähköpostipalvelinten välillä. Sähköpostipalvelimet eivät nouda posteja toisilta sähköpostipalvelimilta.

SMTP protokollaa käytetään myös sähköpostisovelluksissa, jotka eivät ole www-pohjaisia. Sähköpostisovellukset käyttävät SMTP protokollaa sähköpostin välittämiseen omalle sähköpostipalvelimelle, joka sitten lähettävät sen edelleen SMTP protokollalla vastaanottajan sähköpostipalvelimelle. Sähköpostisovellusten käyttö on nykyään yleistynyt, kun matkapuhelin valmistajat tarjoavat omia sovelluksia sähköpostin käyttöön.

Käyttäjät voivat noutaa sähköpostin sähköpostisovellusta käyttäen POP3 tai IMAP4 protokollalla tai www-pohjaisesti HTTP protokollalla. Jos sähköpostisovellus ei ole www-pohjainen, niin se käyttää SMTP ja POP3 tai IMAP4 protokollia, joita on käytetty jo vuosikymmeniä.

Sähköpostiliikenteen turvaamiseen käytetään TLS protokollaa sovelluskerroksen sähköpostiprotokollan ja kuljetuskerroksen TCP protokollan välillä.

Seuraava visualisointi havainnollistaa protokollien käyttöä sähköpostisovellusten sekä selainpohjaisten sähköpostipalveluiden käytössä.

# videoJohdanto54
# t3a
# t3b

Sekaannusta aiheutti että dokumentti on kahdessa osassa.

08 Feb 22

Edelliseen kommenttiin viitaten, tämä taitaa olla useammassa kuin kahdessa osassa :)

av: joo RFC:t voivat olla useassa eri osassa :)

26 Mar 22 (edited 28 Mar 22)
# t3c
# t3d
# t3e

Tehtävä ei jostain syystä hyväksy oikeata RFC dokumenttia

av: Yleisesti, jos ei hyväksy, niin kannattaa katsoa, vaaditaanko tehtävässä esimerkiksi uusinta (onko vastaamasi RFC dokumentti vanhentunu)t, tai onko viimeaikoina tullut uudempaa (2021 tai uudempi), jolloin tehtävänanto ei enää vastaa nykyhetkeä. Tässä tehtäväkohdassa usein vastataan vanhentunut dokumentti, kun haetaan uusinta.

13 Sep 21 (edited 13 Sep 21)
# t3f

SMTP (Simple Mail Transfer Protocol)

# video2019Luento7r
# v2018L7_3

Simple Mail Transfer Protocol (SMTP) kehitettiin sähköpostien lähettämiseen sähköpostipalvelimelle. SMTP protokolla voi käyttää sähköpostipalvelimet, asiakassovellukset tai vaikka kuka tahansa henkilö, joka osaa avata TCP yhteyden ja tietää miten tekstipohjainen SMTP protokolla toimii. Ensimmäinen RFC määriteltiin vuonna 1981, mutta jo seuraavana vuonna 1982 määriteltiin uusi versio, joka on käytännössä saanut ensimmäisen SMTP RFC leiman ja on paljon tunnetumpi kuin vuoden 1981 määritys. Nykyään SMTP protokollan uusin RFC on yksi monista Internet standardeista.

SMTP:tä voi käyttää vain viestien lähettämiseen tai välittämiseen sähköpostipalvelimelle. Sähköpostien noutaminen tehdään eri protokollilla. Nykyään sähköpostista on käytössä laajennettu versio, Extended SMTP, johon on lisätty mm. tunnistautumiseen ja tietosuojaan liittyviä ominaisuuksia.

# videoSMTP

SMTP protokollaa on päivitetty vuosien kuluessa. Ensimmäinen RFC julkaistiin vuonna 1981. Etsi ihan ensimmäinen SMTP RFC.

# t3g

Vuonna 1982 julkaistiin uusi versio SMTP protokollasta RFC dokumentista, joka on yksi viitatuimmista RFC dokumenteista. Tätä versiota pidetään alkuperäisenä RFC dokumenttina SMTP protokollan määrittelylle.

# t3h

Seuraavassa versiossa yhdistetään asioita SMTP protokollan RFC dokumentista sekä kahdesta muusta RFC dokumentista, jätetään käyttämättömiä osia pois ja tuodaan esimerkiksi laajennetun HELO-komennon (EHLO) määritys SMTP protokollan RFC dokumenttiin.

# t3i

Viimeisin SMTP RFC on vuodelta 2008. Siinä on esimerkiksi yhdistetty ja selvennetty aiempien RFC dokumenttien SMTP protokollaan liittyviä määrityksiä sekä käytänteitä.

# t3j

SMTP protokollalla tapahtuva kommunikaatio menee RFC dokumenttien määritysten mukaisesti. Kommunikaatio tapahtuu tekstimuotoisena. Alla on yksinkertainen SMTP kommunikaatio, jossa viestien järjestys on sekoitettu. Laita viestit oikeaan järjestykseen.

# t4a

Alkuperäisessä SMTP protokollassa ei ole minkäänlaista tunnistautumista tai viestiliikenteen salaamista. Laajennetut SMTP komennot määriteltiin aluksi omassa RFC dokumentissaan, mutta myöhemmin määritykset sisällytettiin SMTP protokollan uusimpiin RFC dokumentteihin.

# t4b

Laajennetut SMTP komennot voidaan ottaa käyttöön EHLO-komennolla. Nykyään käytännössä kaikki SMTP palvelimet vaativat laajennettujen komentojen käyttöä, jotta sähköpostin lähettäjä tai välittäjä voidaan tunnistaa. SMTP protokollan laajennus tunnistautumiselle on määritelty omassa RFC dokumentissaan.

# t4c

Tunnistautumisen yhteydessä käytetään Base64 koodausta, joka ei ole salausmenetelmä. Koodausmenetelmän purkaminen on suoraviivaista ja Base64 koodaus sekä dekoodaus on määritelty RFC dokumentissa.

# t4d

Base64 koodauksen purkamiseen on menetelmät useimmissa ohjelmointikielissä. Lisäksi esimerkiksi uusimmissa verkkoselaimissa on natiivi-tuki, eli omat komennot Base64 Javascript dekoodaamiseen. Internetistä löytyy useita online-työkaluja Base64 koodauksen tekemiseen tai purkamiseen.

Seuraavassa tehtäväkohdassa on yksinkertaistettu esimerkki SMTP kommunikaatiosta, jossa käytetään tunnistautumista. Jos haluat dekoodata kommunikaatiossa näkyvät Base64 koodatut tekstit, saat ne kopioitua maalaamalla kaikki viestit, liittämällä viestit johonkin tekstieditoriin ja poimimalla Base64 koodatut sanat sieltä. Tehtävätyypistä johtuen ei yksittäisen viestin kopioiminen onnistu kaikilla selaimilla.

# t4e

Vaikka SMTP protokollaan on lisätty tunnistautuminen ja muitakin tunnistautumismenetelmiä, kuin edellisessä tehtäväkohdassa esitetty, välitetään kommunikaatio silti tekstimuotoisena. Näin esimerkiksi Base64 koodatut tunnistautumistiedot voi kaapata ja saada selville.

Tietoturvan takaamiseksi tulee sähköpostiviestit salata. SMTP protokolla mahdollistaa tiedonsiirron salaamisen TLS protokollalla. Komennolla STARTTLS voidaan salata käyttäjän tunnistautuminen AUTH komennolla. Samalla salataan myös välitettävä sähköpostiviesti, eli tunnistautumisvaihe on tehty salattuna ja täten käyttäjän tunnistautumistiedot ovat turvassa. Sähköposti on myös välitetty sähköpostisovellukselta sähköpostipalvelimelle salattuna.

# t4f

Kannattaa ottaa huomioon, että jotkin sähköpostipalvelimet voivat lähettää sähköpostin eteenpäin ilman TLS salausta, vaikka sähköpostipalvelin olisi saanut viestin salattuna. Tällöin siis viesti välitetään salaamattomana sähköpostipalvelinten välisessä kommunikaatiossa. Eli sähköpostin edelleen välitys vastaanottavalle sähköpostipalvelimelle voi tapahtua salaamattomana, ilman että siitä ilmoitetaan sähköpostin lähettäjälle.

Käytännössä nykyään hyvin tunnetut sähköpostipalveluita tarjoavat organisaatiot kyllä pitävät huolen siitä, että sähköpostin tietoturva on kunnossa. Kannattaa ottaa huomioon, jos käyttää vähemmän tunnettua sähköpostipalvelinta, että käytännössä kuka tahansa voi pistää pystyyn sähköpostipalvelimen omalle verkkotunnukselleen, eli kaikkiin Internetin sähköpostipalvelimiin ei voi luottaa.

POP3 (Post Office Protocol)

# video2019Luento7s
# v2018L7_4

Sähköpostin noutamiseen sähköpostipalvelimelta käytetään eri protokollaa kuin sähköpostin välittämiseen palvelimelle. Nykyisin esimerkiksi puhelinten sähköpostisovellukset noutavat sähköpostin palvelimelta joko POP3 tai IMAP4 protokollia käyttäen.

POP3 on yksinkertainen tekstimuotoinen protokolla sähköpostin noutamiseen palvelimelta. POP3 protokollan puutteena on se ettei protokollalla pysty hallitsemaan sähköposteja palvelimella, vaan ne ladataan omalle laitteelle, jossa hallinta tapahtuu. Lataukselle on kaksi vaihtoehtoa, sähköposti ladataan ja säilytetään palvelimella tai latauksen jälkeen sähköposti poistetaan palvelimelta. Omalla päätelaitteella voi sitten sähköpostiohjelmalla tehdä esimerkiksi eri kansioita ja siirrellä viestejä kansioista toiseen. Tämä on kuitenkin laitekohtainen ja useita laitteita käytettäessä, on jokaisella laitteella paikallinen näkymä sähköposteihin. POP3 protokollan ominaisuuksista johtuen palvelimen toteutus on yksinkertainen.

# videoPOP3
# t4g
# t4h

IMAP4 (Internet Message Access Protocol)

IMAP4 protokolla kehitettiin POP3:n puutteiden ratkaisijaksi ja siinä on enemmän ominaisuuksia, kuin POP3:ssa. IMAP4 protokollaa käyttävällä palvelimella saapuvat viestit sijoitetaan oletuksena INBOX-kansioon. Käyttäjä voi luoda palvelimelle muita kansioita, joihin sähköposteja voi sitten siirtää. IMAP4 protokollassa on siis erikseen käskyt esimerkiksi kansioiden luomiselle ja viestien siirtämiselle, jotka POP3 protokollasta puuttuvat. IMAP4 protokollalla voi lisäksi siirtää päätelaitteelle vain osan sähköpostista, esimerkiksi otsikkotiedot viestin tärkeyden tarkistamiseksi. Näin eikä aina tarvitse ladata koko viestiä, jos esimerkiksi internet-yhteydestä laskutetaan siirretyn datan mukaan.

# t4i
# t4j

Sähköposti Nordealta?

# video2019Luento7t
Image
Image

"Nordean" viestin lähetystiedot

Sähköposti APPIELD:ltä

Image
Image

Huomaa ison I -kirjaimen huijausyritys pienenä l -kirjaimena, sekä pienen l -kirjaimen huijaus isona I -kirjaimena

FTP (File Transfer Protocol)

# video2019Luento7u
# v2018L7_5

Vuoden 2021 aikana FTP-protokollan käytön tuki lopetettiin selaimissa. Sitä aiemmin kyseessä oli selaimissa Passive-moodi. Tämä siis koska aktiivista moodia käytettäessä ei ole järkevää tehdä palomuuriin sääntöjä asiakasohjelman (FTP-sovellus tai selain) puolelta. Jokainen eri valmistajan asiakassovellus joutuisi tekemään säännöt laitteen palomuuriin, jolloin tietoturvan hallinta vaikeutuisi. Lisäksi verkkotasolla reitittimet voivat estää tarvittavia portteja ja lisäksi NAT-menetelmän käyttö, jossa porttinumerot muuttuvat aiheuttaisi toimimattomuutta, tai vaatimusta NAT-asetusten säätämiseen.

Käytännössä FTP-asiakas ehdottaa käytettävää moodia, ja edellisessä kappaleessa mainituista syistä johtuen, on yksinkertaisempaa käyttää passiivista moodia. Siinä ei tarvitse avata aukkoa tietoturvaan datansiirtoa varten, jotta palvelin saa yhteyden asiakkaan avaamaan porttiin. Selain siis ehdotti passiivista moodia. Palvelin lopulta päättää mitä käytetään, normaalisti monet palvelimet estävät aktiivisen moodin käytön, jos sitä yrittää, ja ehdottavat passiivisen moodin käyttöä.

Kun nykyään selaimet käyttävät vain HTTP protokollaa FTP-palvelinten kanssa kommunikointiin, niin silloin porttina on 80 tai HTTPS tapauksessa 443. Tällöin siis FTP-palvelimessa on käynnissä myös HTTP(S) palvelin ja tiedonsiirtoon selaimen ja palvelimen välillä ei käytetä FTP-protokollaa.

Kirjoitusvirhe - Toinen kappale, ensimmäinen virke: Käytännössä FTP-asiakas ehdottaa käytettävää moodia, ja em. syistä johtuen on yksinkertaisempaa käyttää passiivista moodia, jottei tarvitse avata datareikää tietoturvaan sitä varten, että palvelin saa yhteyden asiakkaan AVAAPAAN porttiin.

av: kiitos, korjattu ja muokattu hieman kieliasua

13 Jun 22 (edited 14 Jun 22)
  • FTP protokollaa käytetään tiedostojen siirtoon.
  • Esimerkiksi selaimella käyttäen FTP:tä ftp://ftp.funet.fi
    • selaimet lopettivat ftp://-skeeman tukemisen vuonna 2021.
    • ftp://-skeeman käyttö ei enää ole mahdollista
    • vastaavat linkit selain ehdottaa avattavaksi jollain FTP-sovelluksella.
  • Vastaava sivun siirto HTTP protokollalla http://ftp.funet.fi

Moi Ari, kävin läpi tätä esimerkkiä ja katsoin noita käytettyjä portteja. Tämä on esimerkki Passive FTP Mode:sta, kun käytetään vain porttia 21 ja ajatuksena on, että asiakkaan ja ftp - palvelimen välissä on palomuuri, eikö niin? Jolloin se on myös turvallisempi. Kun otetaan selaimella yhteys ftp-palvelimeen eli http-protokollalla, niin onko selaimessa määritelty, onko kyseessä Active vai Passive FTP Mode? Käsittääkseni tuo portti 20 toimii vain palvelimen päässä ja ns. toimii datakanavana palvelimelta asiakkaalle, eikö? Tuo ftp - palvelin ilmeisesti tunnistaa, mikä Mode on kyseessä ja sen mukaan käyttää porttia 20, vai miten se käytännössä toimii? Kimi

av: Vuoden 2021 aikana FTP-protokollan käytön tuki lopetettiin selaimissa. Sitä aiemmin kyseessä oli selaimissa Passive-moodi. Tämä siis koska aktiivista moodia käytettäessä ei ole järkevää tehdä palomuuriin sääntöjä asiakasohjelman (ftp-sovellus tai selain) puolelta. Jokainen eri valmistajan asiakassovellus joutuisi tekemään säännöt laitteen palomuuriin, jolloin tietoturvan hallinta vaikeutuisi. Lisäksi verkkotasolla reitittimet voivat estää tarvittavia portteja ja lisäksi NAT käyttö, jossa porttinumerot muuttuvat aiheuttaisi toimimattomuutta, tai vaatimusta NAT:in säätämiseen.
Käytännössä FTP-asiakas ehdottaa käytettävää moodia, ja em. syistä johtuen on yksinkertaisempaa käyttää passiivista moodia, jottei tarvitse avata datareikää tietoturvaan sitä varten, että palvelin saa yhteyden asiakkaan avaapaan porttiin. Selain siis ehdotti passiivista moodia. Palvelin lopulta päättää mitä käytetään, normaalisti monet palvelimet estävät aktiivisen moodin käytön, jos sitä yrittää.
Kun nykyään selaimet käyttävät vain HTTP protokollaa FTP-palvelinten kanssa kommunikointiin, niin silloin porttina on 80 tai HTTPS tapauksessa 443. Tällöin siis FTP-palvelimessa on käynnissä myös HTTP(S) palvelin ja tiedonsiirtoon selaimen ja palvelimen välillä ei käytetä FTP-protokollaa.
Lisäänpä tämän tekstin materiaaliinkin

11 Jan 22 (edited 13 Jan 22)
# v2018L7_6
# videoFTP
# t5a
# t5b

Salattu tiedostojen siirto

FTP on haavoittuvainen muutamalle hyökkäykselle ja salaamattomana sitä ei tulisi käyttää tärkeiden tiedostojen siirtämiseen. FTP:tä voi käyttää esimerkiksi Internetissä muutenkin julkisten tiedostojen siirtämiseen. Tiedoston siirto salattuna voidaan toteuttaa käyttämällä salausmenetelmää sovelluskerroksen ja kuljetuskerroksen välissä, kuten esimerkiksi FTPS (FTP Secure tai FTP over SSL) sekä FTP over SSH. Lisäksi on olemassa muita salattuja tiedoston siirtoon sopivia protokollia, kuten esimerkiksi SSH File Transfer Protocol (tunnetaan myös nimillä Secure File Transfer Protocol tai SFTP) sekä Secure copy (SCP). Lyhenteitä FTPS ja SFTP käytetään usein tarkoittamaan eri protokollia ja yleensä on hyvä tapa selventää asiaa käyttämällä protokollan koko nimeä. Lisäksi on olemassa FTP:tä yksinkertaisempi Simple File Transfer Protocol, joka myös lyhennetään SFTP, jossa ei ole minkäänlaista salausta. Simple File Transfer Protocol:laa yksinkertaisempi on vielä Trivial File Transfer Protocol (TFTP), jota käytettiin pääasiassa aikoinaan yksinkertaisten päätelaitteiden käynnistystiedoston lataamiseen lähiverkon palvelimelta.

Secure Copy (SCP) on tiedostonsiirtoprotokolla, joka perustuu BSD (Berkley Software Distribution):n rcp (remote copy) -ohjelmaan, joka on yksi monista, jotka BSD kehitti omaan Unix-käyttöjärjestelmäänsä. SCP:stä, kuten rcp:stä, ei ole olemassa RFC dokumenttia. SCP suojaa tiedostot käyttämällä SSH:ta.

SSH File Transfer Protocol (SFTP) mahdollistaa monipuolisempaa tiedostojen operointia, esimerkkinä tiedostojen muokkaaminen tai poistaminen, kuin esimerkiksi SCP, jolla voi vain siirtää tiedostoja. SFTP olettaa että alapuolella on turvallinen SSH:lla toteutettu tiedonsiirtokanava. SFTP ei koskaan valmistunut RFC-dokumentiksi vaan jäi Draft vaiheeseen. SFTP ja FTP ovat kaksi aivan erilaista protokollaa, eivätkä riipu toisistaan.

Kun FTP liikennettä salataan, käytetään sen alapuolella TLS -protokollaa, nimetään FTP over TLS tai FTPS.

# t5c
# t5d
# t5e
# t5f
# t5g
# t5h

Network File System (NFS)

Network File System (NFS) on protokolla hajautettujen tiedostojärjestelmien, kuten verkkolevyjen, toteuttamiseen. NFS ei tunnista asiakasta tai palvelinta, eikä salaa liikennettä, joten sen kanssa tulee käyttää jotain autentikointimenetelmää sekä salata liikenne, jotta jaettujen tiedostojärjestelmien tiedot eivät ole ulkopuolisten saatavissa.

# t5i

Kerberos-protokolla

av: Lisätty Kerberos 9.3.2022.

09 Mar 22

Hajautettujen tietojärjestelmien autentikointi voidaan toteuttaa esimerkiksi Kerberos autentikointiprotokollalla. Se on suunniteltu asiakas-palvelin järjestelmiin ja tarjoaa molempien autentikoinnin. Kerberos protokolla käyttää kryptografisia menetelmiä tiedonsiirron salaukseen ja joidenkin tietoturvauhkien torjuntaan.

# t5j

Antaa vinkiksi maaliskuun 1993 mutta piti mennä googlen kautta, ja onkin siis syyskuu kyseistä vuotta

av: Kiitokset, korjattu, oli varmaan copy-paste virhe

25 Apr 22 (edited 26 Apr 22)

Tor (The Onion Router - anonyymi verkko)

Tor (The Onion Router)-verkko muodostuu verkkoon liitetyistä päätelaitteista, jotka toimivat virtuaalisen piirikytketyn verkon solmulaitteina. Tor käyttää solmulaitteista nimitystä sipulireititin, englanniksi onion router, vaikka käytännössä solmulaitteet eivät tee reititystä. Reitin Tor-verkon läpi muodostaa käyttäjän Tor-sovellus, valiten Tor-solmut, joiden kautta viestit välitetään. Näin muodostuu eräänlainen virtuaalinen piirikytketty verkko, toisin sanoen eräänlainen overlay-verkko, toisen verkon, tässä tapauksessa Internetin, päälle rakennettu (virtuaalinen) verkko.

Yleistä Tor-verkon tietoturvasta

Sipuli sanan käyttö liittyy sipulissa olevien eri kerrosten samankaltaisuudella Tor-verkon käyttämään kerroksittaiseen salaukseen. Tor-verkossa lisätään uusi salauskerros jokaista reitille lisättävää sipulireititintä kohden. Salauksen ansiosta jokainen sipulireititin tuntee vain, edellisen sipulireitittimen, joka pyysi muodostamaan reitin sen läpi ja seuraavan sipulireitittimen, jonne reitti jatkuu seuraavaksi. Sipulireititin ei voi tietää onko pyyntö reitin muodostamisesta tullut alkuperäiseltä reitinmuodostajalta vai reitille aiemmin lisätyltä sipulireitittimeltä. Reitin päätepisteessä voidaan saada viesti selkokielisenä siinä tapauksessa että vastaanottaja ei kuulu Tor-verkkoon, esimerkiksi WWW- tai sähköpostipalvelimet. Nykyään tosin käytetään aika usein TLS:ää, tällöin Tor-verkon ulkopuolelle välitetyt "selkokieliset" viestit ovat siis TLS:n salaamia. Seuraavassa kappaleissa käydään tarkemmin läpi Tor-verkon tietoturvan toteuttamista.

Tor-verkon directory authorities

Tor-verkko tarjoaa käyttäjälle anonymiteetin, salaa siirrettävän tiedon sekä varmistaa sipulireitittimien aitouden. Tor-sovellukseen on kovakoodattuna, englanniksi hard-coded, tiedot laitteista, directory authorities (DA), jotka ylläpitävät listaa tunnetuista Tor-verkon sipulireitittimistä. Suurin riski Tor-verkon käyttäjän tietoturvalle on se, että käyttäjä ottaa käyttöön Tor-sovelluksen, jonka DA-listaa hyökkääjä on muuttanut. Lista Tor-verkon DA-laitteista löytyy esimerkiksi metrics.torproject.org -sivustolta.

Sipulireitittimien aitous

Tor-sovelluksen aitouden varmistamista varten Tor-sovellus on allekirjoitettu GnuPG:llä. Lisäksi Tor-verkon DA-laitteilla on Directory signing key Tor-verkon sipulireititin listan allekirjoittamiseen. Allekirjoitukset tarkastamalla voidaan selvittää se onko sovellukseen tai niiden ylläpitämiin listoihin tehtyä muutoksia. Listoissa on sertifikaatti jokaiselle sipulireitittimelle. Jokaisen sipulireitittimen sertifikaatti on allekirjoitettu kyseisen sipulireitittimen identiteettiavaimella, joka on pitkäkestoinen julkinen avain. Sipulireitittimen sertifikaatti pitää sisällään tiedot sipulireitittimestä, esimerkiksi sijainnin sekä tiedot sipulireitittimen käyttämistä lyhyen aikavälin salausavaimista, ns. sipuliavaimista, englanniksi onion keys. Sipuliavaimet ovat julkisia salausavaimia, joita sipulireitittimet kierrättävät viikon välein. Kun Tor-verkossa muodostetaan virtuaalinen reitti, tunnistetaan reitin solmu oikeaksi Tor-verkon laitteeksi sen julkisella sipuliavaimella.

Liikenteen salaaminen

Tulevaa kommunikaatiota varten muodostetaan lyhytkestoiset yksityiset salausavaimet, joilla salataan sipulireitittimelle saapuvat viestit. Kun Tor-sovellus muodostaa virtuaalisen reitin Tor-verkon kautta, se valitsee ne sipulireitittimet joita käytetään. Sipulireititinten kanssa sovitaan liikenteen salaamiseen yksityiset symmetriset salausavaimet käyttäen Diffie-Hellman julkisen avaimen salausmenetelmää. Diffie-Hellman kättelyvaiheen ensimmäinen viesti salataan käyttämällä sipulireitittimen julkista sipuliavainta, näin ollen vain sipulireititin pystyy tulkitsemaan viestin. Salaus on luonteeltaan eteenpäin salaavaa, englanniksi Forward secrecy Menetelmä on sellainen, että jos joku kaappaa salatun liikenteen, ei salausta voi tulevaisuudessakaan purkaa. Edellä mainittujen lisäksi kaikki liikenne käyttää myös TLS salausta päästä-päähän, englanniksi end-to-end, viestin salaamiseen.

Tor-sovellus muodostaa virtuaalisen yhteyden ensimmäiseen sipulireitittimeen ja samalla muodostetaan sille yhteydelle salausavain. Sitten Tor-sovellus pyytää ensimmäistä reititintä jatkamaan reittiä seuraavaan sipulireitittimeen. Ensimmäinen sipulireititin muodostaa virtuaalisen yhteyden itsensä ja toisen sipulireitittimen välille, mutta salaukseen käytetään sovelluksen ilmoittamia salaukseen liittyviä parametreja. Toinen sipulireititin ei siis tiedä kenen kanssa se on sopimassa salauksesta, vaan ainoastaan, että ensimmäinen sipulireititin toimii salauspyynnön välittäjänä. Vastaavasti ensimmäinenkään sipulireititin ei voi tietää onko sen saama yhteydenmuodostuspyyntö ollut alkuperäiseltä yhteyden luojalta vai toimiiko sekin vain välittäjänä.

Sen jälkeen, kun reitti Tor-verkon läpi on muodostettu, voi sovellus aloittaa datan lähettämisen. Tor-sovellus muodostaa useita reittejä ja vaihtaa reittejä tietyin väliajoin, jotta esimerkiksi kovin montaa eri TCP-yhteyttä ei välitettäisi samalla reitillä. Reitille lähetettävät paketit sovellus salaa siten, että todellinen viesti salataan viimeisen sipulireitittimen salausavaimella, viestiin asetetaan lähettäjäksi toiseksi viimeinen sipulireititin ja vastaanottajaksi viimeinen. Edellä kasattu viesti lähettäjineen ja vastaanottajineen salataan seuraavaksi toiseksi viimeisen sipulireitittimen salausavaimella, eli lisätään seuraava salauskerros. Ja lähettäjäksi laitetaan kolmanneksi viimeinen sipulireititin ja vastaanottajaksi toiseksi viimeinen sipulireititin. Samaa toistetaan jokaista reittiin valittua sipulireititintä varten. Näin ollen jokainen sipuli reititin kykenee tulkitsemaan sille itselleen tulevan viestin ja löytää viestistä seuraavan sipulireitittimen, jolle paketti tulee välittää.

# video2019Luento8

Moi Ari, katselen Luentoa 8, jossa käyt läpi Tor - verkkoa. Olen kohdassa, jossa kerrot tuosta salauksesta ja miten laitteelta toiselle tuo purku tapahtuu, jotta laite tietää, mille laitteelle se pitää seuraavaksi lähettää.

Kysymys liittyy tuon salauksen rakentamiseen ja yhteyden luomiseen. Normaalistihan tuo salattu liikenne muodostetaan siten, että käytetään asymmetristä metodia luomaan yhteys asiakkaan ja palvelimen välillä, ja kun se on luotu, niin sovitaan symmetrisen avaimen käytöstä, koska se on nopeampi jne.

Miten tässä Tor - verkossa tuo salaus luodaan, kun se periaatteessa kulkee satunnaisesti ties kuinka monen laitteen kautta ennen kuin tavoittaa ko. palvelimen, johon viestin on tarkoitus toimittaa?

Missä nuo avaimet säilytetään ja miten tuo salaustieto kulkee laitteelta toiselle?

Vai liittyykö tähän sen monimutkaisempaa rakennetta kuin normaalistikaan? Onhan perinteisessäkin liikenteessä logiikka se, että asiakas ottaa yhteyttä palvelimeen ja kulkee ties kuinka monen reitittimen kautta, mutta tässä noiden reitittimien sijaan linkkinä on toiset Tor - verkkoon kuuluvat laitteet.

Miten tuo satunnaisuus sitten muodostetaan? Pelaako siellä jokin algoritmi taustalla, ja jos pelaa, niin millä periaatteella? Normaalistihan reititin hakee sen optimaalisen reitin, mutta jos ketjussa vain toisia laitteita, niin miten tuo linkki niiden välillä oikein toteutuu?

Yst. Kimi

Moi Ari, eipä tähän aiempaan vuodatukseen tarvitse vastata. Kun luin tämän tekstin, niin tästä ymmärtää kyllä, miten tuo salaus on hoidettu.

av: Joo tekstiin olen kirjoittanut tarkemmin salauksen toteutuksesta, kuin mitä luennoilla olen käynyt läpi. Lyhyesti, Tor-verkossa on vastaavanlainen salausjärjestelmä kuin HTTPS-maailmassa. Taho, joka varmistaa allekirjoituksin listan turvallisista sipulireitittimistä (eli niiden julkisista avaimista). Ja sitten vastaavat menetelmät, kuin HTTPS selaimen ja palvelimen välillä on käytössä kaikkien sipulireitittimien välillä, joiden kautta muodostetaan virtuaalinen sipulireitti. Erona se että selaimen ja HTTPS palvelimen liikenne on päästä-päähän samoilla salausavaimilla ja mekanismilla, kun TOR-verkossa on oma salaus jokaisella välillä.

18 Mar 22 (edited 22 Mar 22)
# video2019Luento8a
# v2018L7_7

  • Muodostaa virtuaalisen piirikytkennän (ketjun reitittäviä laitteita) kommunikoivien osapuolten välille
  • Virtuaalinen piiri Sovellus- ja kuljetuskerrosten välissä → voidaan käyttää eri sovellusprotokollia
  • Ennen lähetystä sovelluskerroksen data 'paketoidaan' ja salataan useaan kertaan (sipuliin lisätään kerroksia)
  • Jokaisella kerroksella on tieto vain edellisestä ja seuraavasta 'reitittävästä laitteesta'
  • Kun dataa siirretään, jokainen virtuaalisen piirikytkennän reititin poistaa uloimman kerroksen
# videoTOR

Kuljetuskerros (Teoria 2)

Sovelluskerrokselta kuljetuskerrokselle

  • Requirements for Internet Hosts -- Application and Support - RFC 1123
  • Requirements for Internet Hosts -- Communication Layers - RFC 1122

Sovelluskerroksen protokolla määrittelee

  • Mitä viestejä käytetään
  • Viestien syntaksin: mitä kenttiä viestissä ja kuinka ne erotetaan toisistaan
  • Viestien semantiikka (merkitys)
  • Säännöt sille, milloin lähetetään viestejä ja miten reagoidaan viesteihin
  • Avoimia protokollia (RFC) ja yksityisiä protokollia
# videoSovellusProtokollat

Sovelluskerroksen tarpeet → Kuljetuspalvelu

Eri tyyppisillä sovelluksilla ja sovelluskerroksen protokollilla on monia erilaisia tarpeita Internetin kuljetuskerroksen palveluille. Internetin alkuvaiheessa tarpeita oli vähemmän, eikä kaikkia tarpeita vieläkään tueta Internetin toteutuksessa. Sovelluskerroksen tarpeiden mukaisesti valitaan kuljetuskerrokselta kuljetuspalvelu, joka parhaiten tukee sovelluksen vaatimuksia ja ei-tuetut tarpeet ratkaistaan joko sovelluksessa tai käyttämällä jotain välikerrosta kuljetus- ja sovelluskerroksen välissä.

Usean sovelluksen data

Kaikille sovelluksille yhteisenä tarpeena on se, että data saadaan kuljetettua oikealle sovellukselle, riippumatta siitä onko samaan aikaan käytössä muitakin verkkosovelluksia samassa laitteessa. Eli, on tarve kuljetuskerroksen palvelulle, joka jollain tavalla tunnistaa sen, mille sovellukselle data on tarkoitettu ja mahdollistaa verkkosovellusten yhtäaikaisen käytön. Eri sovelluksille kuuluvat lähetettävät ja saapuvat datapaketit tunnistetaan sovelluksen käyttämälle protokollalle määritellyn porttinumeron avulla. Määritelty porttinumero kuuluu melkein aina verkkosovelluksen palvelimelle. verkkosovellusten asiakkaat käyttävät pääasiassa dynaamisia porttinumeroita. Joissakin tapauksissa myös asiakkaan käyttämä porttinumeroksi on määritelty jokin tietty porttinumero. Internetin alkuaikoina myönnetyt ja määritellyt porttinumerot julkaistiin tietyin väliajoin RFC dokumentteina. 2000 luvun alussa käytännöstä luovuttiin ja porttinumeroita ylläpidetään nykyään IANA:n tietokannoissa.

# t6h

av: tämä (h) ja seuraavat (i) ja (i) tehtäväkohdat lisätty 9.3.2022. kirjainmerkinnät ei tässä kohtaa mene aakkosjärjestyksessä, kun tehtävät on lisätty myöhemmin kuin näitä seuraavat tehtävät, joille oli jo määritelty kirjaimet.

09 Mar 22

Kirjoitusvirhe: Mikä on viimeisin RFC dokumentti, jossa listattiin IANA:n määrittelemät porttiMumerot, sekä muita internetin toimintaan liittyviä numeroita?

av: kiitos, korjattu

15 Jun 22 (edited 16 Jun 22)
# t6i

Datan eheys

Sovelluksilla voi olla erilaisia tarpeita datan eheydelle, eli sille että datassa ei ole virheitä tai data ei katoa. Suurin osa datasta Internetin alkuaikoina oli tiedonsiirtoa, joko tiedostojen tai sähköpostin. Siten kehitettiin protokollia, jotka kykenivät takaamaan datan eheyden, kuten alkuperäinen vuoden 1974 TCP ja sitä ennen käytössä olleet verkko- ja kuljetuskerroksen protokollat. Toisaalta, joillakin sovelluksilla, kuten ajan tai päivämäärän kyselyyn käytettävillä protokollilla, ei ole vastaavia tarpeita. Jos palvelin ei esimerkiksi saa kuittausta sille, että sen lähettämä kellon aika on mennyt perille, ei vanhaa kellon aikaa kannata lähettää uudestaan, vaan antaa asiakkaan pyytää uutta nykyistä kellon aikaa. Nykyään esimerkiksi puhetta tai videota suoratoistettaessa voidaan sallia datan vääristyminen tai katoaminen. Tällöin tarjotaan huonompaa palvelua, sen sijaan että palvelu pysähtyisi kokonaan.

# video2019Luento8b
# v2018L7_8
  • Data perille
    • Oikealle sovellukselle
  • Mahdollisuus käyttää useita verkkosovelluksia samaan aikaan
    • Yhdellä kuljetuskerroksen palvelulla?
  • Datan eheys? Eri tarpeita
    • Ei virheitä datassa eikä kadonnutta dataa, esim. sähköposti
    • Saa olla virheitä datassa
      • esim. puheliikenteen laatu kärsii
    • Saa kadota dataa
      • esim. palvelimen ei kannata lähettää uudestaan samaa kellon aikaa
        • jos asiakas ei sitä saa vastaanotettua ensimmäisellä kertaa
        • vaan lähetetään uusi aika, jos asiakas pyytää aikaa uudestaan

Viive

Alun perin Internetissä viive ei ollut kriittinen tekijä, koska ei ollut sovelluksia, jotka olisivat tarvinneet pientä viivettä toimiakseen kunnolla. Nykyään reaaliaikaiset sovellukset, kuten moninpelit, internetpuhelut tai videoneuvottelut vaativat pientä viivettä, jotta palvelu olisi mielekäs. Esimerkiksi Internet-puheluiden osalta on tutkittu, että ihminen ei koe vielä parin sadan millisekunnin viivettä häiritseväksi. Internet-puheluiden protokollat onkin suunniteltu siten, että viive pysyy pienenä, sillä datalla mitä käytetään. Jos jokin datapaketti myöhästyy tai hukkuu, sitä ei yritetä paikata datapaketin uudelleen lähetyksellä, vaan puuttuva datan joko annetaan heikentää puheen laatua, tai käytetään menetelmiä puuttuvan datan paikkaamiseen ennustamalla aiemmin saadun datan avulla sitä, mitä puuttuva data olisi voinut olla. Parin sadan millisekunnin viiveen sallimissa rajoissa voidaan mahdollisesti käyttää myös puuttuvan datapaketin jälkeisiä paketteja ennustamiseen, jos ne tulee ajallaan. Internet-puheluiden taustalla olevaa tekniikkaa kutsutaan usein Voice over Internet Protocol (VoIP) tekniikaksi. Internetpuheluita toteutetaan sekä yksityisillä protokollilla, kuten Skype tai julkisilla RFC dokumenteissa julkaistuilla protokollilla. Toteutukseen käytetään usein useita eri protokollia, jotka vastaavat jostain tietystä osasta. Esimerkkinä julkisista protokollista on yhteydenmuodostusprotokolla Session Initiation Protocol (SIP) sekä multimediatiedonsiirtoprotokolla Real-time Transport Protocol (RTP). RTP protokollalle on useissa RFC dokumenteissa tehty määrityksiä erilaisille multimediaformaateille, joita RTP pystyy kuljettamaan.

# t6j

Viivettä voidaan kompensoida esimerkiksi puheliikenteessä käyttämällä aina esimerkiksi 200 ms viivettä riippumatta siitä kuinka nopeasti puhe on saatu perille. Tai puheyhteyden alussa voidaan mitata viive ja käyttää sitä perustana puheen toistamisen vakioviiveen asettamiseen johonkin muuhun hieman suurempaan arvoon. Tällöin hyvällä yhteydellä puhetta siirretään nopeammin, kuin sitä välitetään ihmiselle. Tämä mahdollistaa viiveen kasvaessa sen, että odotetaan jonkin aikaa viivästynyttä datapakettia. Ongelmallisinta reaaliaikaisessa tiedonsiirrossa on viiveen vaihtelu, englanniksi delay variation tai delay jitter. Eli viive ei pysy vakiona, vaan riippuu verkon ruuhkautumisesta. Viiveen suurta kasvua on hyvin hankala kompensoida laadun kärsimättä, sen jälkeen kun reaaliaikainen kommunikaatio on aloitettu. Ei-reaaliaikaisessa äänen tai videon siirrossa kompensaatio tehdään yleensä viivästämällä toistamisen aloittamista jopa useilla sekunneilla. Näin kerätään toistettavaa mediaa muistipuskuriin ja sitten toiston aikana pienet viiveen vaihtelut eivät vaikuta, jos muistipuskuri ei pääse tyhjenemään.

Kaistanleveys

Nykyään Internet ei kykene palvelemaan läheskään kaikkea tiedonsiirron tarvetta. Varsinkin videoneuvotteluiden ja -puheluiden vaatima tiedonsiirtokapasiteetti on sen verran suurta, ettei nykyinen pakettikytketty verkkotekniikka mahdollista kovinkaan usein hyvälaatuista videokuvaa. Tiedonsiirtokapasiteetin lisäksi laatua rajoittaa internetverkon reitittimien ruuhkautuminen. Tiedonsiirtokapasiteetti on riippuvainen tarjolla olevasta fyysisestä tiedonsiirtomediasta. Yleensä suuren tiedonsiirtokapasiteetin tarve on sellaisilla sovelluksilla, joilla on myös tarpeita pienelle viiveelle. Aina pienen viiveen vaatimat sovellukset eivät tarvitse suurta tiedonsiirtokapasiteettia, kuten puheen siirtäminen Internet-verkossa.

Puheenkoodaukseen on useita standardeja sekä ei-julkaistuja menetelmiä. Monet Internet-puhelu sovellukset sekä protokollat tukevat useita puheenkoodausmenetelmiä, joita voidaan vaihtaa vaikka kesken puhelun. Yleensä parempi laatu vaatii enemmän tiedonsiirtokapasiteettia, mutta myös puheenkoodausmenetelmissä on eroja ja uudemmat, varsinkin matkapuhelinten puheen siirtoon kehitetyt menetelmät, tarjoavat vastaavaa puheen laatua pienemmällä tiedonsiirtokapasiteetilla, kuin vanhat, lankaverkkoihin kehitetyt puheenkoodausmenetelmät. Puheenkoodausmenetelmän toteuttaa laite tai ohjelmisto, jota kutsutaan termillä puhekoodekki, englanniksi speech codec. Englannin kielessä käytetään jonkin verran myös termiä voice codec. Puhekoodekki on erikoistunut puheen koodaamiseen digitaaliseksi. Audiokoodekki, englanniksi audio codec, puolestaan on yleisempi kaiken tyyppisen äänen koodaamiseen digitaaliseen muotoon. Wikipediasta löytyy vertailu erilaisten audiokoodekkien ominaisuuksista. Monesti audiokoodekkien ajatellaan sisältävän omana alaluokkanaan puhekoodekit, mutta toisissa lähteissä ne esitetään erillisiä menetelmäluokkina.

Näppäinvirhe - Toiseksi viimeinen virke: Audiokoodekki, englanniksi SUDIO codec, puolestaan on yleisempi kaiken tyyppisen äänen koodaamiseen digitaaliseen muotoon.

av: kiitos, korjattu

15 Jun 22 (edited 16 Jun 22)

Esimerkiksi ITU Telecommunication Standardization Sector (ITU-T) organisaation vuoden 1972 standardi G.711 koodaa puheen bittivirraksi, jonka nopeus on 64 Kbit/s. Menetelmä käyttää tiedonpakkausmenetelmää, joka ei hävitä informaatiota ja sillä saavutetaan noin 33% pienennys tiedonsiirron tarpeeseen. G.711 esimerkin 64 Kbit/s bittinopeus tarvitaan puheelle, mutta lisäksi Internetissä tarvitsee siirtää muitakin bittejä. Piirikytketyssä lankapuhelinverkossa ei puheen lisäksi tarvitse siirtää muuta informaatiota. Kun puhedata lähetetään Internetissä, paketoidaan se ensin kuljetuskerroksen pakettiin, joka puolestaan pakataan verkkokerroksen pakettiin ja se taas linkkikerroksen pakettiin. Sovelluskerroksella voi myös olla jokin sovelluskerroksen protokolla tai sitten koodattu data lähetetään sellaisenaan kuljetuskerroksen kautta. Jokainen kerros lisää omat otsikkokenttänsä, eli lisäävät bittejä lähetettävän datan ympärille. Täten 64 Kbit/s puhedatan bittinopeus vaatii käytännössä noin 80 - 90 Kbit/s tiedonsiirtokapasiteetin, kaistanleveyden, fyysiseltä siirtotieltä. Kapasiteetin tarve on riippuvainen alemman kerroksen protokollista sekä fyysisestä siirtotiestä. Huomioitavaa on, että 64000 bittiä pitää jakaa useampaan kuljetuskerroksen pakettiin, koska linkki- ja fyysisen kerroksen tekniikka rajoittaa käytännössä kuljetuskerroksella käytettävää maksimihyötykuormaa. Toisaalta Internet-puheluissa ei usein käytetä koko paketin kapasiteettia, vaan lähetetään pienempiä paketteja useammin viiveen minimoimiseksi. Sen vuoksi puheen siirrossa menee alempien kerrosten otsikkokenttiin suhteessa enemmän bittejä kuin esimerkiksi tiedoston siirrossa tai videokuvan siirrossa.

Videokuvan siirtoon on olemassa useita standardeja, mutta ylivoimaisesti eniten käytetään ITU-T organisaation H.264 standardia. Siinä on määritelty useita eri laatuisia koodausmenetelmiä, uusimpana 8K UHD. Koodausmenetelmät sisältävät myös erillisen äänen koodauksen. Yleisesti ääni koodataan, myös puhekoodekeissa, vakiobittinopeuksisella, englanniksi constant bitrate (CBR), koodauksella. Videokoodauksessa käytetään yleensä vaihtuvabittinopeuksista, englanniksi variable bitrate (VBR), koodausta. Koodausmenetelmän bittinopeutta voidaan täten muuttaa ja säästää tiedonsiirtokapasiteettia tietyissä tilanteissa. Videokuvassa voi olla paljon kuvia peräkkäin, missä muutos edelliseen kuvaan on pieni, jolloin riittää pienempi tiedonsiirtonopeus, jos esimerkiksi välitetään tieto vain muuttuneista pikseleistä.

Esimerkiksi H.264 standardin määrityksessä 4K laatuisen videokuvan siirtoon on videokuvan koodaukseen määritelty vaihtuva 8000 - 14000 Kbit/s bittinopeus. Lisäksi äänen koodaukseen on määritelty vakio 192 Kbit/s bittinopeus. Äänen koodauksen vaatima bittinopeus suhteessa videokuvaan on mitätön, sen vuoksi äänen koodaukseen videonkuvan yhteydessä käytetään enemmän bittejä kuin puheen koodaukseen. Äänen laatu ei enää huomattavasti paranisi, vaikka äänenkoodaukseen käytettäisiin enemmän bittejä. Minimissään alemman kerrosten otsikkokenttien vaatima bittien määrä on karkeasti noin 500 000 bittiä sekunnissa, eli luku ei sisällä mahdollista sovelluskerroksen protokollan tarvetta. Siten 4K laatuisen videokuvan siirrolle vaaditaan noin 9 - 15 Mbit/s tiedonsiirtokapasiteetti. Jos tiedonsiirtolinkki ei kykene tarjoamaan 15 Mbit/s, niin välillä videokuva pysähtyy, jotta saadaan vastaanotettua tarpeeksi dataa videon toiston jatkamiseen. Huomioitavaa on, että edellinen oletus pätee silloin, kun omassa verkossa tai verkkoliitynnällä ei ole mitään muuta liikennettä. Esimerkkinä nykyään joidenkin suoratoistopalveluiden 4K laatuinen videokuvan siirto vaatii 15.6 Mbit/s kaistanleveyden, kun mukaan otetaan myös sovelluskerroksen protokollan aiheuttama tiedonsiirron tarve. Käytännössä suositellaan, että tiedonsiirtokapasiteetti olisi tällöin ainakin 25 Mbit/s, jotta muu mahdollinen liikenne ei häiritsisi 4K videokuvan välittämistä.

# video2019Luento8c
# v2018L7_9
  • Ajoitus?
    • Viive (delay) ei voi olla sekuntiluokkaa esim. Internet-puheluissa
    • Viiveen vaihtelu (delay jitter) ei saa olla suuri esim. suoratoistossa
  • Kaistanleveys (tiedonsiirtokapasiteetti)?
    • Videopuhelussa kuvan siirto vie paljon enemmän 'kaistaa' kuin äänen siirto
  • Tietoturva?
    • Palvelin tunnistaa asiakkaan? Asiakas tunnistaa palvelimen? Selkokielinen datansiirto kryptataan?
# videoKuljetusPalvelu

Internetin kuljetuspalvelut

Internetin kuljetuskerroksen palvelut tarjoavat muutaman tyyppistä palvelua sovelluskerrokselle. Kuljetuskerroksella käytetään kuljetuskerroksen osoitteita, porttinumeroita, joiden avulla data osataan välittää oikealle sovellukselle. Porttinumeroita käyttäen on mahdollista välittää samalla kuljetuspalvelulla samanaikaisesti usean sovelluksen dataa, siten etteivät sovellukset joudu jonottamaan kuljetuspalvelua sen vuoksi, jos jokin muu sovellus käyttää sitä.

# video2019Luento8d
# video2019Luento8e
# v2018L7_10
  • Data viedään oikealle sovellukselle
  • Kuljetuskerroksen osoitteet (portit) laitteessa
    • useita samanaikaisia verkkosovelluksia
  • Yhteydellinen kuljetuspalvelu …
    • Luotettava kuljetuspalvelu
    • Ruuhkanhallinta ja vuonvalvonta
  • … tai yhteydetön kuljetuspalvelu
    • Ei-luotettava kuljetuspalvelu
# video2019Luento8f
# v2018L7_11
  • Ajoitus?
    • Ei tällä hetkellä, ehkäpä jonain päivänä
  • Kaistanleveys?
    • Ei tällä hetkellä, ehkäpä jonain päivänä
  • Tietoturva?
    • Ei, toteutetaan tarvittaessa kuljetuskerroksen ja sovelluskerroksen välissä
  • Käytännön implementointi?
    • Soketti (rajapinta käyttöjärjestelmän protokollapinon toteutukseen)
# videoKuljetusInternet

Internetin kuljetuspalveluiden nimet

# video2019Luento8g
# v2018L7_12
  • Transmission Control Protocol (TCP)
  • User Datagram Protocol (UDP)
  • Datagram Congestion Control Protocol (DCCP)
  • Stream Control Transmission Protocol (SCTP)
  • Kuljetuskerroksen protokollien vertailua
# videoKuljetusProtokollat
# video2019Luento8k

Vint Cerf ja Robert Kahn julkaisivat ensimmäisen version TCP protokollasta, nimellä Transmission Control Program, lehden IEEE Transactions on Communications toukokuun 1974 numerossa artikkelissa A Protocol for Packet Network Intercommunication. Myöhemmin samana vuonna Vint Cerf oli yksi kirjoittajista RFC dokumentissa, jossa TCP määriteltiin. Aluksi TCP piti sisällään myös nykyisen IP protokollan.

# t6a

User Datagram Protocol (UDP) määriteltiin myöhemmin tarjoamaan kevyempi, ei-yhteydellinen, ei virheitä korjaava, kuljetuskerroksen protokolla samalla kun IP protokolla irroitettiin aiemmasta TCP protokollan määrityksestä.

# t6b

RFC dokumentissa määritellään esimerkiksi UDP paketin kehysrakenne.

# video2019Luento8m
# t6c

Kun IP protokollan määritys irrotettiin TCP protokollan määrityksestä, julkaistiin RFC, jota pidetään ensimmäisenä nykymuotoisen TCP:n määrityksenä. Sen jälkeen TCP:tä on kehitetty useassa eri RFC:ssä, mutta perusmäärittely on pysynyt samana.

# t6d

Moi Ari, halusit täsä nimenomaan voimassa olevan Internet Standardin liittyen TCP:hen? Tuo RFC 761 on nykyisin statuksella Historic, ja aiemmassa tehtävänannossa Cerfin kirjoittama oli DoD:n aikaisia. En minä hiuksia halo, mutta eikös tuo 761 käytännössä määritä TCP:n ellei huomioida tuota Cerfin kirjoittamaa TCP kuvausta?

av: lisäsin tehtävänantoon: internet standardi, tarkoitus tässä tehtävässä on löytää se RFC, johon viitataan TCP:n yhteydessä, eli nykyinen voimassa oleva standardi. Ehkä 'määritelty' on huono sana, mutta en ole keksinyt parempaa.

14 Jan 22 (edited 09 Mar 22)

Tehtävänannossa on typo, joka sanoo "inetnet."

av: kiitos, korjattu

16 Jun 22 (edited 16 Jun 22)

RFC dokumentissa määritellään esimerkiksi TCP paketin kehysrakenne.

# video2019Luento8l
# t6e
# t6f
# t6g

xxxx Obsoleted by: yyyy at June 2022

av: Kiitoksia, päivitin tehtävänantoa, jotta vanha dokumentti käy vielä vastaukseksi. poistin numerot kommentista, jotteivat paljasta dokumenttia

16 Aug 22 (edited 16 Aug 22)

Kuljetuskerros tarjoaa...

# video2019Luento8i
# v2018L7_14
  • ... kuljetuspalvelun sovelluskerrokselle käyttäen verkkokerroksen palveluita apunaan
  • Minkälainen on verkkokerros Internetissä?
    • Pakettikytkentäinen
    • Kun verkko ruuhkautuu, paketteja saattaa hävitä
    • IP protokolla ei tarkista onko sen kuljettamassa datassa virheitä
  • Verkkokerroksen palvelu Kuljetuskerrokselle?
    • Vie datan virheettömästi oikeaan osoitteeseen, jos vain pystyy!
    • Best Effort -palvelu
    • IP protokollaa ei kiinnosta
      • jos reitittimet hukkaa paketteja
      • jos fyysisellä tai linkkikerroksella tulee virheitä
# videoKuljetusInternet3

Sovelluskerros haluaa kuljetuspalvelulta...

# video2019Luento8j
# v2018L7_15
  • Data perille (saa tulla virheitä)
    • Verkkokerros: Ok, verkkokerros vie oikealle laitteelle
    • Kuljetuskerrokselle jää: Data oikealle sovellukselle/prosessille
    • Toteutus: määritellään vastaanottajan kuljetuskerroksen osoite
  • Mahdollisuus käyttää useita verkkosovelluksia samaan aikaan
    • Verkkokerros: sama se mitä dataa paketissa on, paketit jonoon vaan ja laitetaan ne verkkoon
    • Kuljetuskerros:
      • Lähetys:
        • erotellaan lähtevät paketit lähettäjän ja/tai vastaanottajan (kuljetuskerroksen) osoitteen perusteella
      • Vastaanotto:
        • kun verkkokerrokselta saadaan paketteja, niin (kuljetuskerroksen) osoitteen perusteella ohjataan ne oikealle sovellukselle/prosessille
      • TCP: myös verkkokerroksen osoitteita käytetään lähettäjä/vastaanottajaprosessin määrittämiseen
# videoKuljetusInternet4
# videoKuljetusInternet5

Kuljetuskerrokselta verkkokerrokselle

# video2019Luento8n
# video2018Luento8
# videoPosti

Kuljetuskerroksen palvelut sovelluskerrokselle

# v2018L8_1
  • Datan eheys (virheettömyys)?
    • Verkkokerros: ei kiinnosta
    • Kuljetuskerros:
      • UDP: tarkastetaan otsikkokenttien sekä datan mahdolliset virheet (IPv4:n kanssa ei pakollinen), hylätään virheelliset paketit
      • TCP:
        • tarkastetaan otsikkokenttien sekä datan mahdolliset virheet, hylätään virheelliset paketit
        • Lähettäjä odottaa kuittausta paketin vastaanottajalta
        • Lähetetään uudelleen paketit joihin ei saada kuittausta
    • Sovelluskerros (verkko-ohjelman tekijä) voi valita käyttääkö TCP vai UDP palvelua
  • UDP ja TCP protokollien yhteiset palvelut sovelluskerrokselle
    • Data perille oikealle sovellukselle/prosessille
    • Palvellaan samanaikaisesti useita prosesseja samalla kuljetuspalvelulla
    • Tarkastetaan otsikkokenttien sekä datan virheettömyys

Virheiden havaitsemista ja korjaamista opiskellaan Teoria 3 osion loppuosassa.

# v2018L8_2
# videoKuljetus1
# videoKuljetusTCPjaUDP
# videoKuljetus2

Sovelluskerros haluaa kuljetuspalvelulta...

Ajoitus?

# video2019Luento8o
# v2018L8_3
  • Verkkokerros - I am doing my best, but all those other users...
    • pakettikytkentäinen, viive voi vaihdella paljon riippuen muun liikenteen määrästä
  • Kuljetuskerros
    • UDP:
      • Lähetetään niin nopeasti kuin alempi kerrospino mahdollistaa
      • ja toivotaan että viive (ja varsinkin sen vaihtelu) pysyy aisoissa
    • TCP:
      • Luotettavuus pääasia, uudelleenlähetykset aiheuttavat viivettä
      • On myös Vuonvalvonta ja Ruuhkanhallinta palvelut!
      • Mutta ne lisäävät viivettä...
# video2019Luento8p
  • Sovelluskerros - ei saa tätä palvelua kuljetuskerrokselta
    • Videostreamit:
      • valitaan yleensä TCP
        • lähetetään datapaketteja niin nopeasti kuin TCP kykenee
        • TCP:n pitää odottaa kuittauksia, yms.
      • puskuroidaan saapuvaa dataa
        • toivotaan että puskurissa oleva data riittää viiveen noustessa
        • jos ei riitä niin käyttäjä joutuu odottamaan
    • Reaaliaikainen video/puhe:
      • valitaan yleensä UDP
      • lähetetään datapaketteja niin nopeasti kuin UDP kykenee (tai sovelluksen tarve)
      • mahdollisesti korjataan virheitä vastaanottajalla
        • ei uudelleenlähetyksiä
      • mahdollisesti puskuroidaan paketteja
        • jotta selvitään pienistä viiveen vaihteluista
      • myöhästynyt paketti käytännössä sama kuin kadonnut paketti
        • kuvan/puheen laatu kärsii
# videoKuljetus3_1

Kaistanleveys?

# v2018L8_4
  • Kuljetuskerros: Lähetän niin paljon (bittiä sekunnissa) kuin verkkokerros kykenee palvelemaan
  • Verkkokerros: Lähetän niin paljon (bittiä sekunnissa) kuin linkkikerros kykenee palvelemaan
  • Linkkikerros: Lähetän niin paljon (bittiä sekunnissa) kuin fyysinen siirtotie vain kykenee lähettämään linkille
  • Linkkikerros: linkeillä voi olla eri tekniikka käytössä
  • Sovelluskerros: alemmat kerrokset eivät voi taata tiedonsiirtonopeutta, täytyy itse keksiä jotain
  • Sovelluskerros: Videostream, puskuroidaan dataa ennen kuin käyttäjä painaa 'play'
  • Sovelluskerros: Reaaliaikainen video/puhe, vaihdetaan/valitaan heikompi laatuinen kuvan/äänen laatu

Moi Ari, nyt alkaa tuntumaan, että halon hiuksia. En ole tästä kohdasta mennyt vielä eteenpäin Teoria 2 osuutta, tai tuleeko nämä vastaan Teoria 3.ssa, mutta kun tässä kaistanleveys? - kappaleessa puhutaan, että Kuljetuskerros: lähetän niin paljon (bittiä sekunnissa) kuin..., niin olisiko tässä selventävää puhua näiden kerrosten yhteydessä, miksi tuota Dataa varsinaisesti kutsutaan eli Kuljetuskerroksella kyse on Segment, jos kyseessä TCP ja (User) Datagram, jos UDP? Bittejä tai symboleita ne joka tapauksessa ovat pakettiinkin käärittynä, mutta itse olen lukenat aina siten, että (OSI mallista puhuttaessa) Fyysinen kerros kääntää Linkkikerrokselta tulevan Framen biteiksi tai symboleiksi ja valokuitukaapeleissa valosäikeiksi tai miksi niitä kutsutaankaan.

av: koska tässä on otsikkona kaistanleveys eli käytännössä tiedonsiirtonopeus, niin on minulla suluissa tiedonsiirtonopeus, bittiä sekunnissa. Harvemmin tiedonsiirtonopeuden yhteydessä käytetään termejä segmentti tai kehys, joskus ehkä paketti. OIkeastaan koko kuljetuskerrosluku vaatisi uudelleen suunnittelun kirjoittamisen. En ole koskaan ollut tyytyväine tähän kohtaa materiaalissa.
Segmentti kuljetuskerroksella ja kehys linkkikerroksella data-kokonaisuuden nimenä... Enpä nyt muista onko minulla nuo mainittu materiaalissa, luennoilla olen sen maininnut. Itse käytän aika usein termiä x-kerroksen paketti (tai kehys, kun oleellinen asia liittyy paketin kehysrakenteeseen). Täytyypä materiaalia päivittäessä kiinnittää huomiota nimityksiin "paketille" eri kerroksilla.

14 Jan 22 (edited 14 Jan 22)
# videoKuljetus3_01

Tietoturva?

# v2018L8_5
# video2019Luento8q
  • Kuljetuskerros: Ei tunnistautumista tai salausta
  • Verkkokerros: IPsec (Internet Protocol Security), tunnistautuminen ja koko verkkoliikenteen salaus kahden laitteen välillä
  • Verkkokerros: IPsec on yksi vaihtoehto VPN (Virtual Private Network) toteutukseksi
  • Linkkikerros: Riippuu linkistä, esim.
    • Ethernet: Ei tunnistautumista tai salausta
    • WLAN: Tunnistautuminen ja salaus optiona
    • 2G/3G/4G: tunnistautuminen ja salaus aina
  • Sovelluskerros: alempien kerrosten ei tarvitse taata tietoturvaa, täytyy itse keksiä jotain
  • Sovelluskerros: Transport Layer Security (TLS) tai vastaava sovelluskerroksen ja kuljetuskerroksen väliin
  • Sovelluskerros: Jokin muu salaus- ja/tai tunnistautumismenetelmä liitettynä sovelluskerroksen protokollaan
# videoKuljetus3

Ajoitus ja kaistanleveys tulevaisuudessa?

# video2019Luento8h
# v2018L7_13
  • IntServ
    • Yksi ehdotus ajoituksen ja kaistanleveyden takaamiseksi
    • Resource Reservation Protocol (RSVP)
      • Integrated Services arkkitehtuurin resurssienvaraus protokolla
    • Takaa ajoituksen ja kaistanleveyden
  • DiffServ
    • IntServ:n kilpailija
    • kevyempi, ei takaa absoluuttista ajoitusta tai kaistanleveyttä
    • Palvelun laatu (Quality of Service, QoS) on suhteellinen
# t7a
# t7b
# t7c
# t7d

Käsittääkseni tämä kohta ei jostain syystä hyväksy oikeaa vastausta.

av: RFC 2474 ei ole kysytty RFC, siinä määritellään Differentiated Services kenttä IP protokollan (otsikko)kehysrakenteeseen.

09 Mar 22 (edited 09 Mar 22)

Verkkokerros (Teoria 2)

Johdanto

# video2019Luento9

Moi Ari,

katselen tässä luentoa 9 ja tarkemmin osiota IPv4 ja IPv6 headereiden sisältöä ja parin linkin mukaan (mm. Wikipedia) koitan ymmärtää, että miksi tuo Versio on ensimmäisenä ja miksi se on tärkeä?

IPv4 se on aina 4:n ja IPv6 6:n, mutta miksi se on olennaista verkkolaitteiden tietää, mikä versio on kyseessä?

Silloin, kun IPv6 ei vielä ollut tietoa (tämä on käsitykseni), niin IPv4 header on aina sisältänyt tuon Version - kentän, mutta onko sillä merkitystä reitittimen näkökulmasta vai mikä on se tarve laitteilla tietää, mitä versiosta on kyse?

Nuo muut kentät tai otsaketiedot ovat loogisia, jotta paketit löytävät tiensä perille, mutta jos avaisit vähän tuon Versio - kentän merkitystä.

Yst. Kimi

av: versio-kenttä on siksi tärkeä, että laitteet tietävät, miten lähtevät tulkitsemaan seuraavia bittejä. Jos versio-kenttää ei olisi, niin reititin joutuisi arvaamaan ja kokeilemaan kenttien sisällön perusteella, että minkälainen on kehysrakenne. Jos versio-kenttää ei olisi niin IPv4 alkaisi 4 bitin pituisella IHL-kentällä, kun IPv6 alkaisi 8 bitin pituisella Traffic class -kentällä. Laitteet joutuisivat käyttää turhaa laskentatehoa siihen, että jollain logiikalla selvittävät että kumman version mukaan paketin otsikkobitit tulee tulkita. Versionumero on selkeä ja siksi alussa, jotta esimerkiksi IP:n tapauksessa tarvitsee tutkia vain 4 ensimmäistä bittiä, minkä jälkeen on selvillä se, mistä kohtaa löytyy muut otsikon kentät.

01 Apr 22 (edited 08 Apr 22)
# v2018L8_6
# video2019Luento9a

Verkkokerroksen palvelut

# v2018L8_7
# video2019Luento9b
# video2019Luento9c
# video2019Luento9d
# video2019Luento9e
  • Data oikealle laitteelle
    • Pitää selvittää reitti: Reititysprotokollat
    • Pitää kuljettaa data: IP protokolla
    • Virhetilanteet ja verkon diagnostiikka: ICMP protokolla
  • Laite: Reititin
    • Reititys (routing): selvitetään reitit IP osoitteisiin
    • Välitys (forwarding): lähetetään dataa eteenpäin reititysinformaation perusteella
    • Reititysprotokolla: kommunikoi muiden reitittimien kanssa jakaen reititysinformaatiota
    • Reititysalgoritmi: määrittää reitit ja ylläpitää reititystaulua
    • Kun pakettia välitetään, katsotaan reititystaulusta, osoitteen perusteella, seuraava laite jolle paketti lähetetään
  • Laite: Tietokone, puhelin, tabletti, ...
    • Reititystaulu kertoo, onko kohde samassa verkossa vai ei
    • Käyttöjärjestelmä muodostaa reititystaulun verkkoasetusten perusteella
    • Listaus: netstat -rn, Muokkaus: route add ...
# videoVerkko1

Hierarkkinen reititys - jos sitä ei olisi...

# v2018L8_8
# video2019Luento9f
# video2019Luento9g
  • Skaalautuvuus, jos ei olisi hierarkiaa
    • Jokaisen reitittimen täytyisi ylläpitää tietoa koko Internetin rakenteesta
    • Internet ruuhkautuisi reitittimien päivitysviesteistä
    • Reititysalgoritmien laskenta kestäisi kauan
  • Autonomia, jos ei olisi hierarkiaa
    • Kaikki maailman verkot joutuisivat käyttämään samaa reititysprotokollaa
    • Yritykset/organisaatiot eivät pystyisi piilottamaan oman verkkonsa toteutusta ulkopuolisilta
    • Oman verkon hallinta olisi maailmanlaajuisen reititysprotokollan vastuulla, eikä itsellä
# videoHierarkia1

Hierarkkinen reititys - Toteutus

# v2018L8_9
# video2019Luento9h
  • IP osoite on hierarkkinen (CIDR) - vertaa postiosoitteeseen
    • Maailmanlaajuisesti tiedetään se kenen operaattorin verkossa on mitkäkin osoitteet
    • Operaattorin verkossa tiedetään tarkemmin osoitteen sijainti
    • Esimerkiksi luentosalin tietokoneen IP osoite: 130.234.156.32
      • 130.234 osan mukaan tiedetään että on jyu:n verkossa
      • Loppuosan mukaan löydetään sijainti yliopiston verkon sisällä
# video2019Luento9i
  • Autonomous System (AS)
    • Reitittimet organisoidaan kuuluvaksi tiettyyn AS:ään
    • Yleensä yksi operaattori on yksi AS
      • isoilla operaattoreilla on useita AS tunnuksia
    • AS:n sisällä
      • operaattori hallitsee verkkoaan ja käyttää haluamaansa reititysprotokollaa
      • reitittimet osaavat välittää sisäisen liikenteen
      • ulosmenevästä liikenteestä tiedetään reunareititin, joka vastaa AS:n ulkoisesta liikenteestä
    • AS:stä ulos
      • Mainostetaan mitkä osoiteavaruudet kuuluvat AS:n verkkoon, ei yksittäisiä osoitteita
      • Mainostetaan myös mitä muita AS:iä voidaan kyseisen verkon kautta saavuttaa
      • ulosmenevä liikenne lähetetään sellaiseen AS:ään joka mainostaa reittiä
      • ulosmenevän liikenteen kohde-AS:ään vaikuttaa myös tiedonsiirron hinta
# videoHierarkia2
# t7e

Esimerkki hierarkkisesta reitityksestä

# v2018L8_10
JYU:n liittyminen Internetiin
JYU:n liittyminen Internetiin

Terve! Seuraavassa tehtäväosassa (IP), tulee virhe. "Error: Sorry, you don't have permission to use this resource."

av: korjattu, oli linkit testidokumentin tehtäväversioihin.

21 Mar 22 (edited 21 Mar 22)

Internet Protokolla (IP)

# video2018Luento9
# t7h

av: tehtävät (h) - (j) lisätty 10.3.2022 ja linkattu materiaalin IP luvun alkuun

10 Mar 22
# t7i
# t7j

IP osoite kertoo laitteen sijainnin?

# v2018L9_1
# video2019Luento9j
  • IP osoite ei kerro sijaintia maapallolla!
  • IP osoite kertoo sen kuinka paketit reititetään kohteeseen
  • IP osoitteiden sijainnista voi olla tietoa:
    • Sijaintitieto joudutaan keräämään esim. tietokannoista tai seuraamalla reittejä
# videoIP1

IP osoitteen voi piilottaa esim. proxy palvelimella

# v2018L9_2
# v2018L9_17
# video2019Luento9k
  • Etsi ensin jokin proxy palvelin, esim. google haku
  • Katso optioista että skriptien suoritus sallitaan
  • Mene kurssin pääsivulle kopioimalla ao. osoite proxy sivustolle
  • http://users.jyu.fi/~arjuvi/opetus/itkp104/
  • Sivulla olevat skriptit saattaa näyttää 'sijaintisi'
    • riippuu proxy palvelimesta ja käytetyistä asetuksista
  • Sen jälkeen, mene ao. sivulle
    • http://users.jyu.fi/~arjuvi/opetus/itkp104/2019/ITKP104_proxy_hits_2019.html
    • sivu kerää tietoa siitä, mistä päin maailmaa vierailijat tulevat
  • Kokeile eri maissa sijaitsevia proxy palvelimia, jotta Suomi saadaan alemmaksi listalla
# videoIP2
# videoIP3

IP osoite

# v2018L9_3
# video2019Luento9l
  • "A name indicates what we seek. An address indicates where it is. A route indicates how to get there." (RFC 791)
  • Kertoo laitteen sijainnin verkkohierarkiassa, ei fyysistä sijaintipaikkaa
    • Osoite on hierarkkinen
      • osoite on jaettu kahteen osaan:
        • alkuosa (network prefix) ja
        • laiteosa (host identifier)
      • aiemmin oli verkko-osa, aliverkko-osa, ja laiteosa
    • Alkuosan perusteella paketti välitetään oikeaan verkkoon
    • Alkuosan synonyyminä saatetaan nykyään käyttää myös verkko-osaa, tai englannista johdettua prefix-osaa
  • Osa IP osoitteista on varattu erityiskäyttöön
  • Organisaatioille jaetut /8 IP lohkot
  • Nykyään pääasiassa käytössä versio 4, rinnalla yleistyy version 6 käyttö
# videoIP4

IPv4 osoitteet

# v2018L9_4
# video2019Luento9m
  • Pituus: 32 bittiä, eli 4 294 967 296 (232) osoitetta
  • Osoitteen bitit jaetaan neljään tavuun
  • Ihmisystävällinen merkintä tapa (ns. pistedesimaalimuoto)
    • muutetaan tavut positiivisiksi kokonaisluvuiksi ja
    • erotetaan ne pisteillä
  • Esimerkki: 173.194.32.63 on binäärisenä 10101101 11000010 00100000 00111111
# t8a

Tässä ei taida "perus" ascii-taulukko toimia?

av: Hyvä huomio, asia joka ei välttämättä tällä kurssilla tule niin selvänä. ASCII määrittää binäärimuodon numero-merkeille 0-9, eli silloin kun numerot esiintyy tekstin ja muiden merkkien kanssa. IP-osoitteessa on desimaalipisteillä on eroteltuna kokonaislukuja, jotka muunnetaan eri tavoin. IP-osoitteen tapauksessa jokainen kokonaisluku on ns. byte, eli 8-bittinen positiivinen kokonaisluku. Tällöin luvut 0-255 voidaan esittää jokainen omalla 8 bitin binääriluvulla. ASCII merkkejä käyttäessä, pitäisi esimerkiksi luvun 255 kaikki numerot esittää ASCII binääriluvulla, jolloin esittämiseen tarvitsisi kolme kappaletta 8 bittisiä lukuja. Tarkemmin aiheesta löytyy esimerkiksi TIEP114 kurssin materiaalista.

25 Apr 22 (edited 26 Apr 22)
# t8b
# t8c
# t8d
# t8e
# t8f
# t8g
# t8h
# t8i
# t8j

IPv6 osoitteet

# v2018L9_5
# video2019Luento9n
  • Pituus: 128 bittiä, eli noin 3.4×1038 (2128) osoitetta
  • Ihmisystävällinen merkintä tapa
    • jaetaan kahdeksaan osaan, erotetaan kaksoispisteellä
    • jokaisessa osassa on 4 heksanumeroa, jotka vastaa 2 tavua, eli 16 bittiä
    • lyhennetään poistamalla peräkkäisiä nollia
  • Esimerkki: 2a00:1450:400f:801::1017, joka on lyhennys osoitteesta
    • 2a00:1450:400f:8010:0000:0000:0000:1017
    • Joka on binäärisenä
      • 0010 1010 0000 0000
      • 0001 0100 0101 0000
      • 0100 0000 0000 1111
      • 1000 0000 0001 0000
      • 0000 0000 0000 0000
      • 0000 0000 0000 0000
      • 0000 0000 0000 0000
      • 0001 0000 0001 0111
# videoIP5

IP osoitetyypit

# v2018L9_6
# video2019Luento9o
  • Unicast - täsmälähetys
    • Yleisin osoitetyyppi, "yhden" laitteen osoite, voidaan käyttää lähettämiseen sekä vastaanottamiseen
    • esim. Yle Areena, Nettiradiot, yms., kaikki 'normaali' liikenne Internetissä
  • Broadcast - yleislähetys
    • vastaa ~ TV- ja radiolähetyksiä radio- ja kaapeliverkoissa
    • Yleislähetysosoite, voidaan lähettää (ali)verkon kaikille laitteille sama paketti
      • siis yksi paketti, jonka kaikki vastaanottavat
    • 255.255.255.255 kaikille lähiverkon laitteille
      • ei mene reitittimen läpi
    • tai esim. aliverkon 192.0.2.0/24 yleislähetysosoite on 192.0.2.255
    • IPv6:ssa ei mahdollista, hoidetaan Multicast:illä
# v2018L9_7
# video2019Luento9p
  • Multicast - ryhmälähetys
    • näin 'pitäisi' Yle Areena yms. toimia!
    • Monilähetysosoite
      • laitteet voivat liittyä Multicast ryhmään
        • IGMP protokolla
      • Ryhmässä paketit välitetään kaikille jäsenille
    • Varattu osoitteet väliltä
      • 224.0.0.0 - 239.255.255.255 (224.0.0.0/4) (IPv4)
      • ff00::/8 (IPv6)
    • Reitittimet hoitavat
      • paketin kopioimisen ja
      • välittämisen kaikille ryhmän jäsenille
# video2019Luento9q
  • Anycast - 'Jokulähetys'
    • hajautetaan palvelu: asiakkaan sijainnin mukaan
    • Palvelupyyntö voidaan välittää monelle eri vastaanottajalle
      • välitetään sille, joka on fyysisesti lähimpänä
    • Käytetään kuorman tasaukseen palvelimilla sekä esim. DNS juurinimipalvelinten hajauttamiseen
    • IPv4:ssa ei suoraa tukea, hoidetaan yleensä AS:ien välisellä reititysprotokollalla (BGP)
      • BGP:llä asetetaan tieto reitittimien reititystauluihin
    • IPv6:ssa osa spesifikaatiota
# videoIP6

Mistä niitä IPv4 osoitteita saa?

# v2018L9_8
# video2019Luento9r
  • IANA jakaa osoitelohkot alueellisille rekistereille
    • 3.2.2011 jakoi viimeiset viisi IPv4 osoitelohkoa, Last /8, noin 16 miljoona osoitetta
    • Alueellisilla rekistereillä oma politiikka termille 'osoitteet loppui'
    • Osoitteet loppuu -politiikalla, pakotetaan siirtymään IPv6:een

IPv4 osoitteiden loppumisen eteneminen

Alueelliset rekisterit - Regional Internet Registry (RIR)

# v2018L9_9
# video2019Luento9s
RIPE Network Coordination Centre (RIPE NCC)
  • Käytti osoitelohkonsa toisena loppuun 14.9.2012
  • Osoitteiden loppuminen määritelty 'kun aletaan jakaa osoitteita viimeisestä /8 lohkosta'
  • Jakaa nyt rajoitetusti osoitteita viimeisestä /8 lohkostaan
  • Saanut lisää osoitteita käyttöönsä kevään 2014 ja kevään 2015 välillä
American Registry for Internet Numbers (ARIN)
  • Huhtikuun 2014 jälkeen jakaa osoitteita viimeisestä /8 lohkostaan
  • Osoitteiden loppuminen määritelty 'kun osoitteet loppuu viimeisestä /8 lohkosta'
  • Osoitteet loppui kokonaan 24.9.2015
Asia-Pacific Network Information Centre (APNIC)
  • Käytti osoitelohkonsa ensimmäisenä loppuun (15.4.2011)
  • Osoitteiden loppuminen määritelty 'kun aletaan jakaa osoitteita viimeisestä /8 lohkosta'
  • Jakaa nyt rajoitetusti osoitteita viimeisestä /8 lohkostaan
Latin American and Caribbean Internet Address Registry (LACNIC)
  • Jakoi osoitteita normaalisti kunnes n. 8 miljoonaa osoitetta jäljellä (last /9)
  • Käytti osoitelohkonsa loppuun 10.6.2014
  • Osoitteiden loppuminen määritelty 'kun aletaan jakaa osoitteita viimeisestä /9 lohkosta'
  • Jakaa nyt rajoitetusti osoitteita viimeisestä /9 lohkostaan
African Network Information Centre (AfriNIC)
  • 3.4.2017 alkoi jakaa IP osoitteita viimeisestä /8 lohkostaan - 'IP osoitteiden loppumisen vaihe 1 alkoi'
  • Jakaa nyt rajoitetusti osoitteita viimeisestä /8 lohkostaan
# videoIP14
# videoIP15

Saako Euroopassa enää IPv4 osoitteita?

# v2018L9_10
# video2019Luento9u
Tilanne keväällä 2019
  • RIPE Network Coordination Centre (RIPE NCC)
  • Käytti vapaat osoitteensa loppuun alkamalla allokoimaan osoitteita viimeisestä /8 lohkosta
  • Jakaa vain yhden /22 (1024 IPv4 osoitetta) kullekin paikalliselle rekisterille. LIR (Local Internet registry)
  • Myönnetään vain jos hakijalla on olemassa oleva IPv6 allokaatio
  • Enää ei ole mahdollista (uuden) operaattorin olla yhteydessä Internetiin vain IPv4 tekniikalla
  • Yksi /16 lohko varataan IPv4 → IPv6 siirtymistä varten
  • Kaikkien operaattoreiden tulisi ottaa IPv6 käyttöön
Tilanne 25.11.2019
  • RIPE Network Coordination Centre (RIPE NCC)
  • Jakoi viimeisen /22 osoitelohkon
  • Internetoperaattorit eivät enää uusia saa IPv4 osoitteita Euroopassa
  • Jos joku luopuu osoitteistaan, on niitä mahdollista vielä jakaa muiden käyttöön
# videoIP16

IPv4 vs IPv6

# v2018L9_11
# video2019Luento9v
  • Erot
    • IPv6 osoiteavaruus paljon suurempi
    • IPv6 kehysrakenne yksinkertaistettu IPv4 kehys, IPv6 kehys
      • poistettu harvoin käytettyjä kenttiä
      • Vähentää pakettien käsittelyaikaa reitittimillä
    • IPv6 osoite automaattisesti, IPv4 osoite pyytämällä
      • IPv4 laite pyytää IP osoitetta DHCP protokollalla
        • DHCP palvelimet jakavat verkossa IP osoitteita
      • IPv6 laite ei välttämättä tarvitse DHCP:tä
      • IPv6 laite kykenee automaattisesti generoimaan itselleen osoitteen
        • Neighbor Discovery Protocol
    • IPv6: ei erillisiä yleislähetysosoitteita
# videoIP17
Siirtymäkausi IPv4 → IPv6
  • IPv6 liikenne joudutaan tunneloimaan IPv4 verkon yli
  • Tunnelointimenetelmiä
    • 6TO4 - IPv6 liikenne kapseloidaan IPv4 paketin hyötykuormaksi
    • Terodo - IPv6 liikenne laitetaan UDP paketin hyötykuormaksi, joka välitetään IPv4:llä
    • Muita siirtymävaiheen menetelmiä
  • Tunnelointimenetelmistä tulee luopua kun Internet on kokonaan siirtynyt käyttämään IPv6 protokollaa
# video2019Luento9w
# v2018L9_12
# videoIP18

IP aliverkotus

# v2018L9_13
# video2019Luento9x
  • Aluksi ensimmäiset 8 bittiä oli verkko-osa ja loput 'muuta' osaa, sitten kehitettiin luokallinen osoitteistus
Class Leading
bits
Size of network
number
bit field
Size of rest
bit field
Number
of networks
Addresses
per network
Start address End address
A 0 8 24 128 (27) 16,777,216 (224) 0.0.0.0 127.255.255.255
B 10 16 16 16,384 (214) 65,536 (216) 128.0.0.0 191.255.255.255
C 110 24 8 2,097,152 (221) 256 (28) 192.0.0.0 223.255.255.255

  • D = Multicast, E = Varattu
  • Lopulta: Classless Inter-Domain Routing (CIDR)
  • Luokaton verkkotunnusten (domain) välinen reititys
# videoIP7
# t7f

Moi Ari, mitäköhän RFC dokumenttia haet, kun tuon RFC 790 päivämäärä on September 1981 ja olet laittanut, että ei kelpaa? Sitä edellinen on tammikuulta 1981 ja seuraava menee muistaakseni vuoteen 1983.

Tuo 776 on edellinen ja tammikuu 1981 ja seuraava 820, joka on päivätty tammikuu 1983. Näillä kaikilla on luonnollisesti Historic status.

av: Kiitokset huomiosta, tähän tarkistimen vaatima vastaus oli RFC 791, mutta se mitä dokumenttia hain on eri dokumentti! Tullut tehtävää laatiessa typo, tai ajatuskatkos, kun olen laittanut IP protokollan RFC:n.
Korjaus: 21.1.2022 vaihdettu tarkistimeen oikea RFC ja sitä vastaavat vinkit
Pisteytys: 21.1.2022 annettu pisteet kaikille, joiden olisi pitänyt saada pisteet.

19 Jan 22 (edited 21 Jan 22)

IP aliverkotus - CIDR

# v2018L9_14
# video2019Luento9y
  • Aliverkkomaski kertoo kuinka monta bittiä IP osoitteesta on prefix osaa (loput on sitten laitteille)
  • Esim. /8 tarkoittaa että 8 ensimmäistä bittiä on prefix osaa
  • Tällöin siis aliverkkomaskissa kahdeksalla ensimmäisellä bitillä on arvo 1 (ja lopuilla arvo 0)
  • Eli /8 aliverkkomaski on 11111111 00000000 00000000 00000000
  • Tai piste-desimaalimuodossa 255.0.0.0
  • Tai esim. /23 jota vastaa maski
  • 11111111 11111111 11111110 00000000
  • eli 255.255.254.0
  • JYU verkko 130.234.0.0/16 (eli maski 255.255.0.0)
  • IPv6 osoitteilla aliverkotus toimii samoin
  • RIPE tietokanta
  • https://stat.ripe.net/
  • JYU:n liittyminen Internettiin
# videoIP8
# t7g
Aliverkkomaski eri esitystavoilla
# t9a
# t9b
# t9c
# t9d
# t9e
# t9f
# t9g
# t9h

Onko tehtävä tarkoituksella kahteen kertaan peräkkäin?

av: luvut arvotaan eri tehtäväkohtiin, joten pienellä todennäköisyydellä voi jollain opiskelijalla olla samat arvot eri tehtäväkohdissa

19 Apr 21 (edited 19 Apr 21)
# t9i
# t9j
# video2019Luento9z
Esimerkki aliverkon osoitteista
  • Olkoon verkko 130.234.169.0/26 eli 26 bittiä on varattu verkko-osaan
  • osoite, jossa kaikki laiteosan bitit ovat nollia, on aliverkon osoite
    • 10000010 11101010 10101001 00000000 eli 130.234.169.0
  • osoite, jossa kaikki laiteosan bitit ovat ykkösiä, on aliverkon yleislähetysosoite
    • 10000010 11101010 10101001 00111111 eli 130.234.169.63
  • loput osoitteet ovat käytettävissä verkon laitteille
    • alkaen osoitteesta
      • 10000010 11101010 10101001 00000001
    • loppuen osoitteeseen
      • 10000010 11101010 10101001 00111110
# v2018L9_15
Toinen esimerkki aliverkon osoitteista
  • Aliverkon osoitteessa ei aina ole desimaalimuodossa nollaa
  • Olkoon verkko 130.234.169.64/26 eli 26 bittiä on varattu verkko-osaan
  • osoite, jossa kaikki laiteosan bitit ovat nollia, on aliverkon osoite
    • 10000010 11101010 10101001 01000000 eli 130.234.169.64
  • osoite, jossa kaikki laiteosan bitit ovat ykkösiä, on aliverkon yleislähetysosoite
    • 10000010 11101010 10101001 01111111 eli 130.234.169.127
  • loput osoitteet ovat käytettävissä verkon laitteille
    • alkaen osoitteesta
      • 10000010 11101010 10101001 01000001
    • loppuen osoitteeseen
      • 10000010 11101010 10101001 01111110
  • Verkossa olevan laitteen IP osoitteen ja aliverkkomaskin avulla voidaan selvittää ko. verkon aliverkon osoite ja yleislähetysosoite.
# v2018L9_16
Aliverkon osoite ja yleislähetysosoite

Laitteen IP osoite ja verkko, johon laite kuuluu voidaan esittää IP osoitteen ja aliverkkomaskin avulla. Olkoon meillä esimerkiksi IP osoite ja aliverkkomaski 192.168.140.82/21. Jotta voidaan selvittää, mitkä kaikki IP osoitteet ovat samassa verkossa, täytyy löytää verkon osoitteiden alaraja, aliverkko-osoite, sekä yläraja, yleislähetysosoite.

Aliverkkomaski / -merkin jälkeen kertoo sen kuinka monta MSB bittiä verkon aliverkkomaskissa on ykkösiä. Eli toisin sanoen kuinka monta bittiä IP osoitteesta on aliverkon osaa. Loput bitit verkossa ovat käytettävissä laitteiden osoitteiksi, kahta osoitetta lukuun ottamatta. Aliverkon ensimmäinen osoite, jossa kaikki laiteosan bitit ovat nollia, on varattu ko. aliverkon osoitteeksi. Aliverkon viimeinen osoite, jossa kaikki laiteosan bitit ovat ykkösiä, on varattu ko. aliverkon yleislähetysosoitteeksi.

Aliverkon osoitteen saa ottamalla IP osoitteesta ja aliverkkomaskista AND operaation. Yleislähetysosoitteen saa IP osoitteen ja negatoidun aliverkkomaskin OR operaationa. Alla on esitetty binäärisenä osoitteen 192.168.140.82/21 IP, maski, verkon osoite sekä yleislähetysosoite. Verkko-osa ja laiteosa on eroteltu toisistaan välillä ja maskin tapauksessa bitit on lisäksi värjätty.

IP in bits:		110000001010100010001 10001010010
Mask in bits:	        
111111111111111111111
00000000000
after AND: 110000001010100010001 00000000000 IP in bits: 110000001010100010001 10001010010 Negated Mask:
000000000000000000000
11111111111
after OR: 110000001010100010001 11111111111
# t10a

Onko tämän tehtävän kohtien (a)-(d) tarkistimissa jotain häikkää?

av: oli bugi, joka ilmaantui kun lisäsin tuen pisteen käytölle (e)-(h) kohtiin, nyt korjattu, siten että (a)-(d) käyttää vanhaa versiota tarkistimesta, kunnes ehdin korjaaman bugin
Edit: bugi korjattu, nyt käyttää uusinta versiota koko tehtävässä

03 May 21 (edited 23 Feb 22)
# t10b
# t10c
# t10d
# t10e
# t10f
# t10g
# t10h

Muissa tehtävissä binäärit voi erottaa pilkulla, tässä ei. Sekoitti hieman tehtävän tekemistä kun ei tiennyt mistä kiikastaa…

av päivitetty, että nämä tehtävät hyväksyvät piste-merkin käytön, kuten aiemmat tehtävät

24 Apr 21 (edited 26 Apr 21)

IP hierarkkinen reititys - CIDR aliverkkomaski

  • FUNET (AS1741) mainostaa (Announced Prefix):
    • Meillä reitti verkoon 130.234.0.0/16, reititys via AS1741
  • AS naapurit päivittää oman verkkonsa reitittimien reititystaulut
  • AS naapurit mainostaa omille naapureilleen, esim. Nordunet (AS2603):
    • Meillä reitti verkkoon 130.234.0.0/16 polku AS2603 AS1741
  • Telia (AS1299) mainostaa:
    • Meillä reitti verkkoon 130.234.0.0/16 polku AS1299 AS2603 AS1741
  • Jos reitti neljään verkkoon (1) 130.232.0.0/16, (2) 130.233.0.0/16, (3) 130.234.0.0/16, (4) 130.235.0.0/16
  • Niin voisi mainostaa "meillä reitti verkkoon 130.232.0.0/14", mikä sisältää yo. verkot
  • Kun paketti pitää välittää yliopiston verkkoon (esim. 130.234.4.129), Internet-operaattorit tietävät mainosten perusteella mitä reittejä kohteeseen on olemassa ja Internet-operaattorit joiden läpi reitti kulkee
  • Mainosten tunnetun alkuosan pituus kasvaa kun lähestytään kohdetta, esim.
  • JYU verkossa reititystaulussa voisi olla
    • 130.234.0.0/17 (130.234.0.0 - 130.234.127.255) ja
    • 130.234.128.0/17 (130.234.128.0 - 130.234.255.255)

Onko (4) kohdassa virhe? Myös ensimmäinen osa (130 -> 135) muutettu, jolloin esitetty mainos ei toimisi.

av: Joo, oli virhe, kiitoksia, nyt korjattu.

11 Jul 22 (edited 11 Aug 22)

Internetin reitityksessä saada reititysinformaatiota vähennettyä ja reititystaulujen kokoja siten pienemmäksi yhdistämällä, englanniksi aggregate, verkkojen mainoksia. Esimerkiksi NORDUnet-operaattorin verkon kautta on saavutettavissa verkot

jotka sijaitsevat Suomessa ja Ruotsissa. Mainokset yhdistämällä voidaan mainostaa, että NORDUnet:illä on reitti verkkoon

  • 130.232.0.0/14
    • mikä pitää sisällään osoitteet 130.232.0.0 - 130.235.255.255

Eli NORDUnet voisi yhdistää neljän verkon mainokset, koska muun Internetin ei tarvitse tietää sen tarkemmin, missä verkot sijaitsevat.

# videoIP13

Miksi tuossa ylemmässä on "meillä reitti verkkoon 130.232.0.0/14", jonka sanotaan tekstissä sisältävän yo. verkot. Miten, kun näissä verkoissa kaikissa aliverkkomaskin osoite on /16? Miten /16 muuttuu yhtäkkiä /14?

av: kyseessä on "verkkomainosten" yhdistäminen, englanniksi aggregate, jossa isommalla maskilla (/14 sisältää enemmän osoitteita kuin /16) voidaan yhdellä kertaa mainostaa kaikkia esimerkin verkkoja. Laitoin lisää infoa materiaaliin.

31 Mar 22 (edited 01 Apr 22)

IPv4 Reititystaulu

# t10i

Miksi reititystaulu antaa 0,085 pistettä? Tarkistin n-kertaa enkä tajua mikä voi olla vikana.

av: Reitittimeltä 9 verkkoon 130.234.156.0/24 on lyhempi reitti. Pitää huomioida, että Reitittimien 8 ja 11 välissä sijaitseva verkko 130.234.170.0/24 pitää myös tulkita linkiksi. Periaatteessa Reitittimien 8 ja 11 välissä voisi olla useitakin linkkejä. Tosin, kun verkko on vain /24 kokoinen, olisi todennäköistä, että reitittimet 8 ja 11 on kytketty suoraan toisiinsa

08 Feb 22 (edited 09 Feb 22)

IPv4 Route Table

  • Windows, macOs ja Linux: netstat -rn
  • Windows myös: route print
  • macOs ja Linux: tutki mitä tekee route
===========================================================================
Network Destination Netmask         Gateway         Interface       Metric
0.0.0.0             0.0.0.0         130.234.169.1   130.234.169.82  276
130.234.169.0       255.255.255.128 On-link         130.234.169.82  276
130.234.169.82      255.255.255.255 On-link         130.234.169.82  276
===========================================================================
  • Koneen osoite: 130.234.169.82
  • Aliverkon osoite: 130.234.169.0/25
  • Aliverkon maski: 255.255.255.128
# videoIP9
# t10j

av: Tarkistin päivitetty älykkäämmäksi, jätä kommentti, jos tarkistin ei tunnista netstat tulostettasi oikein

14 Sep 21

IP osoitteiden reititys reititystaulun perusteella

Reititystaulun avulla selvitetään seuraava reititin, jolle saapuva paketti tulee välittää. Selvittäminen tehdään IP osoitteen, reititystaulussa olevan kohdeverkon ja kohdeverkkoon liittyvän aliverkkomaskin avulla. Seuraavaksi käydään läpi selvitysprosessi, joka tehdään kun IP osoitteen ja reititystaulun perusteella tehdään päätös pakettien välittämisestä.

Olkoon meillä seuraava reititystaulu:

  Address/mask     Mask in decimal   Mask in bits                          Next hop
 -------------------------------------------------------------------------------------
  135.46.56.0/22   255.255.252.0     11111111 11111111 11111100 00000000   Reititin 1
  135.46.56.0/21   255.255.248.0     11111111 11111111 11111000 00000000   Reititin 2
  192.53.40.0/23   255.255.254.0     11111111 11111111 11111110 00000000   Reititin 3
  0.0.0.0/0        0.0.0.0           00000000 00000000 00000000 00000000   Reititin 0
 -------------------------------------------------------------------------------------

Selvitetään seuraavaksi kuinka IP osoitteelle löydetään Next hop reititin, eli seuraava reititin, jonne paketit välitetään. Otetaan esimerkiksi IP osoite 135.46.63.10 ja selvitetään seuraava reititin reititystaulun informaation perusteella.

Reititystaulusta saadaan IP-osoitteen kohdeverkko selville tekemällä AND- operaatio IP-osoitteen ja tutkittavan rivin aliverkkomaskin kanssa. Rivit tulee käydä läpi siten, että aloitetaan riveistä, joiden aliverkkomaskissa on eniten ykkösiä ja jatketaan kunnes lopulta testataan vähiten ykkösiä omaavaa aliverkkomaskia, eli oletusreittiä (engl. default route), jonka osoite ja aliverkkomaski ovat 0.0.0.0.

Kahden bitin AND-operaatio on määritelty seuraavasti:

AND-operaation tulos on 1, jos molempien bittien arvo 1. 
Jos vähintään toinen biteistä on 0, niin AND-operaation tulos on 0.

Jokaisen rivin kohdalla verrataan sitä, onko AND-operaation tulos sama kuin tarkasteltavalla rivillä oleva kohdeverkon osoite. Jos on, niin paketti välitetään tarkasteltavan rivin tiedon mukaan. Jos ei, niin siirrytään tutkimaan seuraavaa riviä. Vertaaminen voidaan tehdä binäärilukujen XOR-operaatiolla, tai sen negaatiolla XNOR-operaatiolla.

Kahden bitin XOR-operaatio on määritelty seuraavasti:

XOR-operaation tulos on 1, jos bitit ovat eri suuret, eli eivät ole samat. 
Jos bitit ovat yhtä suuret, eli ovat samat, niin XOR-operaation tulos on 0.

XNOR-operaatio on määritelty päinvastoin, kuin XOR-operaatio.

Kirjoitusvirhe - jälkimmäinen virke: Jos bitit ovat yhtä suuret, eli ovat SANAT, niin XOR-operaation tulos on 0.

av: kiitos, korjattu

18 Jun 22 (edited 20 Jun 22)

Näin ollen, jos XOR-operaation tulosbiteissä on yksikin 1-bitti, eivät vertailtavat binääriluvut olleet samat.

XOR- ja XNOR-operaatiot on helppo toteuttaa reitittimen prosessorissa laitteistolla. Prosessori saa verrattavaksi kaksi binäärilukua ja niiden samankaltaisuus saadaan selville vertailun lopputuloksesta. Prosessoriin on helppo toteuttaa se että lopputuloksen lisäksi antaa yhdellä "lippubitillä" tiedon siitä, oliko tuloksessa kaikki bitit nollia vai ei tai kaikki bitit ykkösiä vai ei. Näin yhden bitin tarkastelulla voidaan päätellä se oliko binääriluvut samat vai ei.

Mitä enemmän aliverkkomaskissa on ykkösiä, sitä tarkempi on reititystaulussa oleva tieto. Huomaa, että tutkittavan IP-osoitteen AND-operaatio tehdään verkon aliverkkomaskin kanssa eikä verkon osoitteen kanssa.

Tutkitaan ensin 23 ykköstä sisältävällä aliverkkomaskilla, eli /23 aliverkkomaskilla, koska siinä on eniten 1-bittejä tarkasteltavassa reititystaulussa.

 desimaali     binääri
 135.46.63.10  10000111 00101110 00111111 00001010
 255.255.254.0 11111111 11111111 11111110 00000000 AND
 -------------------------------------------------
 135.46.62.0   10000111 00101110 00111110 00000000

Moi Ari, täytyy sinulta varmistaa, että olen ymmärtänyt tuon AND - operaation merkityksen, kun tutkitaan mitä reititintä pitkin ko. IP - osoitteen paketteja lähetään.

Tämän tehtävän ensimmäisessä kohdassa verrataan IP - osoitetta 135.46.63.10 eli esimerkki-IP - osoite, jolle haetaan reititintä. Kun sitä verrataan /23 aliverkkomaskiin, niin käytetäänkö tuota AND - operaatiota 23:n merkkiin asti ja sen jälkeen kaikki muut binääriluvut jätetään nolliksi? Ymmärrän tuon logiikan siten, että kun IP - osoitteen binääriarvo on 1 ja aliverkkomaskin vastaava binääriarvo on sama eli yksi, niin arvoksi tulee 1. Jos jompikumpi eon eri, niin tulee arvo 0. Tämä logiikka ei päde enää viimeisessä blokissa eli kahdeksan viimeistä binäärilukua, jossa ylemmällä rivillä on 00001010 ja alemmalla kaikki 0, niin arvoksi tulee kaikille kahdella bitille 0. Ymmärsinkö oikein, että AND operaatiota käytetään siis vain siihen asti, mikä on tuo ns. prefix - osuus?

av: Kaikille biteille tehdään AND-operaatio: Jos molemmat on 1, niin tulee 1, jos jompikumpi tai molemmat on 0, niin tulee nolla. Täytyypä lisätä materiaaliin, kun ei kaikkilla ole välttämättä loogisia operaatioita esitietona.

26 Jan 22 (edited 27 Jan 22)

Tutkitaan yhtäläisyyttä XOR-operaatiolla, ylemmällä rivillä on edellisen kohdan AND-operaation tulos ja alemmalla tutkittavan rivin kohdeverkko.

 desimaali     binääri
 135.46.62.0   10000111 00101110 00111110 00000000
 192.53.40.0   11000000 00110101 00101000 00000000 XOR
 -------------------------------------------------
               01000111 00011011 00010110 00000000

XOR-operaation tuloksessa on 1-bittejä, eli tutkittavaa IP-osoitetta ei reititetä tarkastellun rivin mukaan. Seuraavaksi tutkitaan /22 aliverkkomaskilla.

 desimaali     binääri
 135.46.63.10  10000111 00101110 00111111 00001010
 255.255.252.0 11111111 11111111 11111100 00000000 AND
 -------------------------------------------------
 135.46.60.0   10000111 00101110 00111100 00000000

Tutkitaan yhtäläisyyttä XOR-operaatiolla, ylemmällä rivillä on edellisen kohdan AND-operaation tulos ja alemmalla tutkittavan rivin kohdeverkko.

 desimaali     binääri
 135.46.60.0   10000111 00101110 00111100 00000000
 135.46.56.0   10000111 00101110 00111000 00000000 XOR
 -------------------------------------------------
               00000000 00000000 00000100 00000000

XOR-operaation tuloksessa on yksi 1-bitti, eli tutkittavaa IP-osoitetta ei reititetä tarkastellun rivin mukaan. Seuraavaksi tutkitaan /21 aliverkkomaskilla.

  desimaali     binääri
 135.46.63.10  10000111 00101110 00111111 00001010
 255.255.248.0 11111111 11111111 11111000 00000000 AND
 -------------------------------------------------
 135.46.56.0   10000111 00101110 00111000 00000000

Tutkitaan yhtäläisyyttä XOR-operaatiolla, ylemmällä rivillä on edellisen kohdan AND-operaation tulos ja alemmalla tutkittavan rivin kohdeverkko.

 desimaali     binääri
 135.46.56.0   10000111 00101110 00111000 00000000
 135.46.56.0   10000111 00101110 00111000 00000000 XOR
 -------------------------------------------------
               00000000 00000000 00000000 00000000

XOR-operaation tuloksessa kaikki bitit ovat nollia, eli tutkittava IP-osoite tulee reitittää tarkastellun rivin mukaan. Reititystaulun mukaan tutkittavaan IP-osoitteeseen 135.46.63.10 lähetettävät paketit tulee välittää verkkoon 135.46.56.0/21, eli paketit ohjataan Reitittimelle 2.

Huomaa, että oletusreitin tutkiminen edellä kuvatulla menetelmällä johtaa aina siihen että XOR-operaation tuloksessa on kaikki bitit nollia. Se tutkitaan siis viimeisenä, silloin kun mikään muu rivi ei anna tunnettua reittiä. Esimerkin vuoksi alla on esitetty oletusreittirivin tutkiminen, mitä ei siis edellä olleen esimerkin tapauksessa tarvitsisi tutkia.

 desimaali     binääri
 135.46.63.10  10000111 00101110 00111111 00001010
 0.0.0.0       00000000 00000000 00000000 00000000 AND
 -------------------------------------------------
 0.0.0.0       00000000 00000000 00000000 00000000

Tutkitaan yhtäläisyyttä XOR-operaatiolla, ylemmällä rivillä on edellisen kohdan AND-operaation tulos ja alemmalla tutkittavan rivin kohdeverkko.

 desimaali     binääri
 0.0.0.0       00000000 00000000 00000000 00000000
 0.0.0.0       00000000 00000000 00000000 00000000 XOR
 -------------------------------------------------
               00000000 00000000 00000000 00000000

Seuraavissa tehtävissä selvitetään mille reitittimelle lähetetään paketit joissa on IP osoite 135.46.57.14. Alla sama reititystaulu, joka esiintyi aiemmin.

  Address/mask     Mask in decimal   Mask in bits                          Next hop
 -------------------------------------------------------------------------------------
  135.46.56.0/22   255.255.252.0     11111111 11111111 11111100 00000000   Reititin 1
  135.46.56.0/21   255.255.248.0     11111111 11111111 11111000 00000000   Reititin 2
  192.53.40.0/23   255.255.254.0     11111111 11111111 11111110 00000000   Reititin 3
  0.0.0.0/0        0.0.0.0           00000000 00000000 00000000 00000000   Reititin 0
 -------------------------------------------------------------------------------------
# t11a

Moi Ari, edelliseen vielä, että taisin ymmärtää tuon AND - operaation käytön eli näyttää tosiaan siltä, että AND - operaatiota käytetään siihen asti, mitä aliverkon maskin antaa prefix - osuudeksi.

Jos aliverkon maski on 255.255.254.0, niin nollia ja ykkösiä verrataan 23:n binäärilukuun asti, jonka jälkeen kaikki loput binääriluvut laitetaan automaattisesti 0:ksi. Ja jos binääriluvut IP - osoitteen ja maskin välillä ovat 1:ä, niin AND - operaation tulokseksi tulee 1, jos ovat eri, niin arvoksi tulee 0.

av: Käytännössä tuo logiikka toimii, koska lopputulos on sama. Lisäsin AND-operaatiosta infoa ylemmäksi.

26 Jan 22 (edited 27 Jan 22)
# t11b
# t11c
# t11d
# t11e
# t11f

Edellisistä XOR-operaatioista kaksi kolmesta antaa tulokseksi sen, että IP osoite 135.46.57.14 pitää reitittää ko. rivin mukaan. Aina kuitenkin valitaan se rivi, jonka aliverkkomaskissa on eniten ykkösiä.

Alla on kopio tehtävän alussa esitetystä reititystaulusta. Seuraavaan tehtäväkohtaan pitää kopioida se rivi, jonka mukaan paketti välitetään IP osoitteeseen 135.46.57.14.

  Address/mask     Mask in decimal   Mask in bits                          Next hop
 -------------------------------------------------------------------------------------
  135.46.56.0/22   255.255.252.0     11111111 11111111 11111100 00000000   Reititin 1
  135.46.56.0/21   255.255.248.0     11111111 11111111 11111000 00000000   Reititin 2
  192.53.40.0/23   255.255.254.0     11111111 11111111 11111110 00000000   Reititin 3
  0.0.0.0/0        0.0.0.0           00000000 00000000 00000000 00000000   Reititin 0
 -------------------------------------------------------------------------------------
# t11g

Mikään rivi ei ole olevinaan oikea vastaus???

av: Tarkistin vaatii, että koko rivi kopioidaan vastaukseksi, tarkasta ettei esimerkiksi rivin lopusta ole jäänyt reitittimen numero kopioitumatta.

29 Sep 21 (edited 30 Sep 21)

Väittää vastauksen olevan väärin, vaikka koko rivi kopioituna

av: Vastaukseksi on annettu väärä rivi, tutki tehtävää uudestaan

11 Apr 22 (edited 12 Apr 22)

Selvitetään seuraavaksi IP osoitteiden 135.46.52.2, 192.53.40.7 ja 192.53.56.7 Next Hop reitittimet aiemmin esitetyn reititystaulun mukaan.

  Address/mask     Mask in decimal   Mask in bits                          Next hop
 -------------------------------------------------------------------------------------
  135.46.56.0/22   255.255.252.0     11111111 11111111 11111100 00000000   Reititin 1
  135.46.56.0/21   255.255.248.0     11111111 11111111 11111000 00000000   Reititin 2
  192.53.40.0/23   255.255.254.0     11111111 11111111 11111110 00000000   Reititin 3
  0.0.0.0/0        0.0.0.0           00000000 00000000 00000000 00000000   Reititin 0
 -------------------------------------------------------------------------------------

Muodosta alle AND operaatiot tutkittavan IP osoitteen ja reitittimen rivin aliverkkomaskin kanssa, siten että maski on siltä riviltä, jonka mukaan IP osoitteeseen lähetettävät paketit tulee välittää. Voit kokeilla aliverkkomaskeja järjestyksessä, siten että aloitat aliverkkomaskista, jossa on eniten ykkösiä, tai voit suoraan kokeilla oikealla maskilla, jos sen pystyt päättelemään.

# t11h

Ei tunnu toimivan millään aliverkkomaskilla Toimii sittenkin, oma moka

09 Nov 21 (edited 09 Nov 21)

Moi Ari, onko tässä nyt jokin kompa, kun periaatteessa aliverkko on jokin näistä, jotka reititystauluun on talletettu. Jos näitä esim. kokeilee aliverkko kerrallaan, niin jonkin näistä reitittimien kautta IP paketit pitäisi lähettää. Nyt jos näin teen, niin ei tunnu mikään aliverkko toimivan. Tuon kohdan i) meni oikein, mutta tämä h) ja j) eivät osu kohdalleen.

Nyt en ole siis laskenut näitä, vaan ihan kokeillut. Voin tietysti mekaanisesti lähteä laskemaan niitä, mutta ajankäytön tehostamiseksi en ehdi niitä tekemään, vaan kylmästi oikaisen tässä harjoituksessa. En nyt siis löydä hautaamaasi koiraa mistään?!

av: kun informaatiota ei ole reititystaulussa, niin sitä varten reititystauluissa pitää aina olla ainakin yksi rivi, oletusreitti :)

26 Jan 22 (edited 27 Jan 22)

Terve Ari, kun nukkuu sopivasti enemmän ja antaa etäisyyttä näihin nolliin ja ykkösiin, niin johan kirkastuu näinkin yksinkertainen asia paljon selkeämmäksi kuvaksi. Kyllähän minä tämän ymmärsin, mutta joskus ajatus tekee todellisen lukon, kun yrittää liikaa ja liian vaikeasti.

Toki tässä auttoi, kun teki itselleen taulukon kaikista kombinaatioista ja havainnollisti rivi kerrallaan, mitä vertaillaan minkäkin kanssa. Yst. Kimi

07 Feb 22 (edited 07 Feb 22)
# t11i
# t11j

IPv4 reititys - kohde samassa verkossa

===========================================================================
Aliverkkomaskit                       Verkko-osoite        
11111111 11111111 11111111 11111111   130.234.169.82
11111111 11111111 11111111 10000000   130.234.169.0
00000000 00000000 00000000 00000000   0.0.0.0
===========================================================================
  • Lähetetään osoitteeseen: 130.234.169.47 (10000010 11101010 10101001 00101111)
  • Käydään reititystaulun kaikki rivit läpi
  • Tehdään binäärinen AND-operaatio kohdeosoitteen ja tarkasteltavan rivin maskin kanssa
  • Verrataan AND-operaation tulosta tarkasteltavan rivin verkko-osoitteeseen
  • Reititys bittien vastaavuuden perusteella
  • Jos usealla verkko-osoitteella sama määrä, valitaan se jonka maskissa on eniten ykkösiä
# videoIP10

IPv4 reitin valinta - kohde samassa verkossa

IP-paketti voidaan reitittää vain sellaiselle reitille, jossa aliverkkomaskin ja paketin IP-osoitteen AND-operaation tulos on sama kuin kohdeverkon osoite. Oleellinen informaatio on siis se ovatko kaikki 32 bittiä samoja vai ei. Jos kaikki verrattavat bitit eivät ole samoja, niin pakettia ei voi välittää kyseiselle reitille tai kohteeseen. Seuraavissa esimerkeissä on havainnollistettu sitä kuinka monta bittiä ovat samoja vaikkei samojen bittien lukumäärällä ja sijainnilla ole merkitystä, jos kaikki bitit eivät ole samoja.

# pynumbits

Reititystaulussa on monesti laitteen oma IP-osoite. Jos jokin laitteen sovellusprosessi lähettää dataa samassa laitteessa olevalle sovellusprosessille, niin se voidaan käsitellä eri tavoin kuin samassa verkossa olevat muut IP-osoitteet.

===========================================================================
    11111111 11111111 11111111 11111111   255.255.255.255
AND 10000010 11101010 10101001 00101111   130.234.169.47
    10000010 11101010 10101001 00101111   130.234.169.47
verrataan
    10000010 11101010 10101001 01010010   130.234.169.82
 ---> 26 bittiä samoja ---> ei 32 samaa, joten ei voi välittää tänne
===========================================================================

Terve Ari, tuntuu hieman nuivalta taas ihmetellä tätä esimerkkiä, mutta tässä verrataan siis IP - osoitteita 130.234.169.47 ja 130.234.169.82 ja tarkoittaa, että binäärimuodossa pitäisi 26 bittiä olla samoja. Mielestäni ei ole kuin 25, mutta jos näin ei ole, niin olen sitten jotain jäänyt ymmärtämättä? Kyseessä ilmeisesti typo? Yst. Kimi

av: olisiko niin, että lasket vasemmalta yhteisiä bittejä siihen asti, kunnes bitit eroavat toisistaan? Tässä verrataan kaikki bittejä riippumatta niiden sijainnista. Verrattavissa binääriluvuissa on 25 ensimmäistä bittejä samoja ja sitten vielä toinen bitti oikealta.
Lisäsin materiaaliin ylle pienen ohjelman, jolla voi laskea binääriluvuista samojen bittien lukumäärän. Tuloste näyttää myös kahden binääriluvun XNOR operaation tuloksen.

07 Feb 22 (edited 08 Feb 22)

Seuraavassa tutkitaan sitä onko paketin kohde IP-osoite samassa verkossa kuin paketin lähettävä laite.

===========================================================================
    11111111 11111111 11111111 10000000   255.255.255.128
AND 10000010 11101010 10101001 00101111   130.234.169.47
    10000010 11101010 10101001 00000000   130.234.169.0
verrataan    
    10000010 11101010 10101001 00000000   130.234.169.0
 ---> 32 bittiä (kaikki) samoja ---> hyväksyttävä välityskohde
===========================================================================

Lopuksi tutkitaan oletusreitti. Tätä ei tarvitse tutkia, jos tutkitaan aina aliverkkomaskit 1-bittien lukumäärän mukaisesti, järjestyksessä eniten sisältävä ensin ja vähiten sisältävä viimeiseksi, jos hyväksyttävä välityskohde on löytynyt. Jos tutkintajärjestys on satunnainen, niin kaikki mahdolliset välityskohteet tulee käydä läpi.

===========================================================================
    00000000 00000000 00000000 00000000   0.0.0.0
AND 10000010 11101010 10101001 00101111   130.234.169.47
    00000000 00000000 00000000 00000000   0.0.0.0
verrataan    
    00000000 00000000 00000000 00000000   0.0.0.0
 ---> 32 bittiä (kaikki) samoja ---> hyväksyttävä välityskohde
===========================================================================

IPv4 reitin valinta - kohde samassa verkossa

  • Paketti lähetetään 130.234.169.0 verkkoon, koska sen aliverkkomaskissa enemmän ykkösiä
  • Koska kyseisellä rivillä ei ole gateway sarakkeessa IP-osoitetta, on kohde tällöin samassa verkossa
===========================================================================
Network Destination Netmask         Gateway         Interface       Metric
0.0.0.0             0.0.0.0         130.234.169.1   130.234.169.82  276
130.234.169.0       255.255.255.128 On-link         130.234.169.82  276
130.234.169.82      255.255.255.255 On-link         130.234.169.82  276
===========================================================================
  • Seuraavaksi selvitettäisiin kohteen (130.234.169.47) linkkikerroksen osoite (MAC-osoite)
  • Linkkikerroksen osoite selvitetään ARP-protokollalla
  • Lopuksi kapseloidaan verkkokerroksen paketti linkkikerroksen kehykseen ja lähetetään linkille
# videoIP11

IPv4 reititys - kohde eri verkossa

===========================================================================
Aliverkkomaskit                       Verkko-osoite        
11111111 11111111 11111111 11111111   130.234.169.82
11111111 11111111 11111111 10000000   130.234.169.0
00000000 00000000 00000000 00000000   0.0.0.0
===========================================================================
  • Lähetetään osoitteeseen: 130.234.169.147 (10000010 11101010 10101001 10010011)
  • Koska meillä on 130.234.169.0/25 verkko, niin 147 on eri verkossa kuin 47
  • Laite 'tietää' ylläolevan aliverkkomaskin perusteella
  • 130.234.169.0/25: 130.234.169.0 - 130.234.169.127
  • 130.234.169.128/25: 130.234.169.128 - 130.234.169.255
# videoIP12

IPv4 reitin valinta - kohde eri verkossa

===========================================================================
    11111111 11111111 11111111 11111111   255.255.255.255
AND 10000010 11101010 10101001 10010011   130.234.169.147
    10000010 11101010 10101001 10010011   130.234.169.147
verrataan    
    10000010 11101010 10101001 01010010   130.234.169.82
 ---> 29 bittiä samoja ---> ei 32 samaa, joten ei voi välittää tänne
===========================================================================

Terve Ari, kerropa nyt, että mitä tässä verrataan toisiinsa ja mitkä 29 bittiä ovat samoja? Tarkoittaako, että tässä esimerkissä koko 32 - bittisessä ketjussa samoja ovat 29 bittiä eikä niiden tarvitse olla järjestyksessä vasemmalta oikealle? Kunhan vain ovat samoja. Ahaa, nyt ymmärrän eli tuo aikaisempi kommenttini, jossa väitin 26 bittiä typoksi, pitääkin paikkansa. Ok, asia selvä tältä osin, mutta sanopa vielä se, että mihin perustuu se laskelma, että riittää, kun koko 32 - bittisessä pätkässä samoja ovat n kappaletta, riippumatta siitä ovatko ne järjestyksessä vasemmalta oikealle? Yst. Kimi

av: Tätä pitääkin selventää. Lisään materiaaliin aiheesta. Vertailussa oleellista on se onko kaikki 32 bittiä samoja vai ei. Sinällään se, että kuinka monta bittiä on samoja ei ole tärkeä tieto. Esimerkit ovat siltä osin hämääviä, lisään niihin tuosta 32 bitin samana olemisesta

07 Feb 22 (edited 08 Feb 22)
===========================================================================
    11111111 11111111 11111111 10000000   255.255.255.128
AND 10000010 11101010.10101001 10010011   130.234.169.147
    10000010 11101010.10101001 10000000   130.234.169.128
verrataan    
    10000010 11101010.10101001 00000000   130.234.169.0
 ---> 31 bittiä samoja ---> ei 32 samaa, joten ei voi välittää tänne
===========================================================================

Nyt kohdeosoite ei ole omassa verkossa, joten paketti tulee välittää jonnekin muualle. Tässä tapauksessa, kun reititystaulussa ei ole tietoa muista verkoista, niin paketti välitetään oletusreitille. Jos reititystaulusta puuttuisi oletusreitti, niin pakettien välitys oman verkon ulkopuolelle ei toimisi.

===========================================================================
    00000000 00000000 00000000 00000000   0.0.0.0
AND 10000010 11101010 10101001 10010011   130.234.169.147
    00000000 00000000 00000000 00000000   0.0.0.0
verrataan    
    00000000 00000000 00000000 00000000   0.0.0.0
 ---> 32 bittiä (kaikki) samoja ---> hyväksyttävä välityskohde
===========================================================================

IPv4 reitin valinta - kohde eri verkossa

===========================================================================
Network Destination Netmask         Gateway       Interface      Metric
0.0.0.0             0.0.0.0         130.234.169.1 130.234.169.82 276
130.234.169.0       255.255.255.128 On-link       130.234.169.82 276
130.234.169.82      255.255.255.255 On-link       130.234.169.82 276
===========================================================================
  • Paketti lähetetään 0.0.0.0 verkkoon, eli oletusreittiin (koska ainoastaan sen vertailussa kaikki samoja bittejä edellisellä kalvolla)
  • Kyseisellä rivillä on gateway sarakkeessa oletusreitittimen osoite, joka täytyy olla asetettuna paketin välittämiseksi eri verkkoihin
  • Seuraavaksi selvitettäisiin reitittimen (130.234.169.1) linkkikerroksen osoite (MAC-osoite), ei todellisen kohteen osoitetta.
  • Linkkikerroksen osoite selvitetään ARP-protokollalla
  • Lopuksi kapseloidaan verkkokerroksen paketti linkkikerroksen kehykseen ja lähetetään linkille
  • Reititin vastaanottaa paketin ja välittää sen eteenpäin oman reititystaulunsa mukaisesti

Linkkikerros (Teoria 2)

# video2019Luento10
# video2018Luento10

Linkkikerroksen palvelut

# v2018L10_1
# video2019Luento10a
# video2019Luento10b
# video2019Luento10c
# video2019Luento10d
# video2019Luento10e
# video2019Luento10f
# video2019Luento10g
  • "Linkkikerros kuljettaa verkkokerroksen datan linkin yli seuraavalle (verkko)laitteelle, ja tekee tämän jokaisen linkin osalta vaikka linkkiteknologia vaihtuisi, jottei verkkokerroksen tarvitse siitä huolehtia"
  • Yksittäisiä palveluita, joilla yo. toteutetaan
    • Kehystys ja linkille pääsy
      • Kapseloidaan ylemmän kerroksen data (lisätään header/trailer)
      • Jos jaettu media, niin kanavanvaraus/kanavalle(linkille) pääsy
      • MAC osoite, linkkikerroksen osoite
    • Luotettavuus (virheettömyys) linkillä kahden laitteen välisellä linkillä
      • Käytetään harvoin jos linkillä pieni virhetodennäköisyys
      • Käytetään esim. langattomilla linkeillä
      • Miksi luotettava tiedonsiirto sekä kuljetus että linkkikerroksella?
  • Vuonvalvonta
  • Virheiden havaitseminen
  • Virheiden korjaaminen
  • half-duplex vs. full-duplex
# videoLinkki1

Monipääsylinkit ja dedikoidut linkit

# v2018L10_2
# video2019Luento10h
# video2019Luento10i
  • Kaksi erilaista linkkityyppiä
    • point-to-point (Pisteestä-pisteeseen, kahden laitteen välinen)
      • Linkkiä käyttää vain kaksi laitetta
        • Ei tarvita linkille pääsyä sellaisessa tapauksessa,
          • jos linkin tekniikka on full-duplex
      • On monipääsylinkki sellaisessa tapauksessa,
        • jos linkin tekniikka on half-duplex:
          • Eli kaksi laitetta ei voi käyttää linkkiä yhtä aikaa
          • laitteet tarvitsevat pääsymekanismin linkille
      • Esimerkkejä
    • Jaettu linkki, monipääsylinkki, Multiple Access link
      • Linkkiä voi käyttää useat laitteet
      • Esimerkkejä
        • Vanha Paksu Ethernet
        • Kytketty Ethernet (jos yhdistetään keskittimeen - hub)
        • WLAN
        • Matkapuhelinverkon datayhteys, GSM pakettikytkentäinen GPRS → 4G
# videoLinkki2
# t12b

Moi Ari,

räpelsin tässä, kun ei hyväksynyt ITU-T lyhennettä alkuun, kuten se näyttää olevan tuossa virallisessa standardissa. Kokeilin sitten pelkällä ITU - lyhenteellä ja hyväksyi sen.

Yst.Kimi

av: Korjattu, että hyväksyy ITU-T, eikä ITU

22 Mar 22 (edited 25 Mar 22)
# t12c

Moi Ari,

tehtävä ei siis anna hyväksyä muotoa ITU-T, vaan muodossa ITU.

Tämä selvä.

Yst. Kimi

av: Korjattu, että hyväksyy ITU-T, eikä ITU

22 Mar 22 (edited 25 Mar 22)
# t12d
# t12e

Moi Ari,

täsä käytin lähteenä tätä sivua: https://en.wikipedia.org/wiki/Ethernet_over_twisted_pair, josta löytyi tuo 1BASE5 ja kuvittelin, että tuo 1987 kuuluu osana standardin nimeen.

Noh, asia selvisi kokeilemalla.

Yst. Kimi

av: Tässä lisäsin nyt, että hyväksyy myös vuosiluvun väliviivalla erotettuna. Käytännössä, vaikka se osa kuuluuu viralliseen standardin nimeen, ei vuoden kertovaa osaa juuri koskaan käytetä standardin nimen yhteydessä.

22 Mar 22 (edited 25 Mar 22)

Monipääsytekniikat ja -protokollat

# v2018L10_3
# video2019Luento10j
# video2019Luento10k
# video2019Luento10l

Tiedonsiirto kahden laitteen välillä vaatii, että niiden välillä on fyysinen tiedonsiirtokanava, jonka muita nimiä ovat esimerkiksi kommunikaatiokanava, englanniksi communication channel tai tiedonsiirtomedia, englanniksi transmission medium tai fyysinen media, englanniksi physical media, joka voi olla langallinen tai langaton. Yleensä kanava on luonnollinen fyysinen resurssi, kuten radioaalto ja media on ihmisen rakentama resurssi, mutta termejä käytetään monesti sekaisin. Langallisessa tiedonsiirrossa media tai kanava on yleensä joko kupari- tai valokuitukaapeli. Langattomassa tiedonsiirrossa kanava tai media on yleensä radiotaajuuskaista. Taajuuskaistan leveys, monesti (fyysinen) kaistanleveys, vaihtelee tekniikasta riippuen sadoista kilohertseistä megahertseihin. Huomattavaa on, että järjestelmän taajuuskaistanleveys ei ole sama kuin tiedonsiirtonopeuden yhteydessä käytetty samanniminen termi. Taajuuskaistanleveys on suhteessa tiedonsiirtonopeuteen, mutta siihen vaikuttaa esimerkiksi myös käytetyt monipääsytekniikat, modulointimenetelmät sekä kanavakoodausmenetelmät.

Modulointi

Modulointi, englanniksi modulation on sitä, että informaatiosignaali, joka voi olla analoginen tai digitaalinen, muokkaa kantoaaltoa, englanniksi carrier wave. Kantoaalto voi olla joko analoginen radioaalto tai sähkömagneettinen aalto tai digitaalinen sähkömagneettinen pulssi. Analoginen kantoaalto lähetetään koko kommunikaation ajan, kun taas digitaalinen kantoaalto ei ole jatkuva-aikainen. Suurin osa järjestelmistä käyttää analogisia kantoaaltoja. Analoginen kantoaalto on käytännössä aikatasossa puhdas sinisignaali, ennen kuin siihen moduloidaan informaatiota. Langallisissa järjestelmissä kantoaalto on sähkömagneettinen signaali. Radiojärjestelmissä Kantoaalto on jokin taajuus järjestelmän käyttöön varatulla taajuusalueella, eli se on yksittäinen fyysinen tiedonsiirtokanava. Esimerkiksi GSM järjestelmässä oli alkuperäinen järjestelmälle varattu taajuusalue 890 MHz - 915 MHz. Tämä oli matkapuhelimelta tukiasemalle kommunikaatioon ja toiseen suuntaan kommunikaatiolle varattiin 45 MHz korkeampi taajuusalue. Kantoaallot, eli fyysiset kanavat GSM järjestelmässä, ovat 200 KHz päässä toisistaan. Esimerkiksi eräs kantoaalto olisi 900.4 MHz ja sen ympärillä olisi kantoaallot 900.2 MHz ja 900.6 MHz. GSM radiokanavan kaistanleveys on 200 KHz asettuen tasaisesti kantoaallon ympärille. GSM järjestelmässä jokainen fyysinen radiokanava on lisäksi jaettu kahdeksaan aikaväliin, joissa kussakin normaalisti siirretään yksi puhelinkommunikaatio. Käyttämällä erilaisia modulointi- ja koodausmenetelmiä voidaan GSM järjestelmän taajuuskaistalla lähettää maksimissaan 16 käyttäjän puheliikennettä, kun käytetään GSM järjestelmän puolen nopeuden puheenkoodausmenetelmää, tai yhden käyttäjän dataa kaikissa aikaväleissä maksiminopeudella 473 kbps EGPRS tekniikalla.

Kanavakoodaus

Kanavakoodaus, englanniksi channel coding, on koodausteorian osa-alue, joka tehdään tiedonsiirtokanavan aiheuttamien virheiden kompensoimiseksi. Kanavakoodaus on käytännössä jokin koodausmenetelmä virheiden havaitsemiseksi tai virheiden korjaamiseksi. Kanavakoodausmenetelmiä on lukuisia. Kanavakoodauksen lisäksi digitaaliseen informaatiota on voitu käsitellä muilla koodausmenetelmillä. Esimerkiksi puheenkoodausmenetelmällä, joka monesti analogisen puheen digitaalisen muunnoksen lisäksi pakkaa informaatiota. Varsinkin langattomassa tiedonsiirrossa on tärkeää saada tiedonsiirtokapasiteettia pienemmäksi. Informaation pakkaaminen tapahtuu yleensä ennen kanavakoodausta. Lisäksi voidaan käyttää kryptografisia koodausmenetelmiä siirrettävän tiedon suojaamiseen sekä ennen että jälkeen kanavakoodauksen.

Monipääsy

Tiedonsiirtokanava joudutaan monesti jakamaan usean käyttäjän tai laitteen kesken, koska fyysisiä resursseja ei riitä siihen, että jokaiselle tiedonsiirrolle olisi oman tiedonsiirtokanava. Tekniikkaa, jolla tiedonsiirtokanava jaetaan usealle käyttäjälle, on nimeltään monipääsytekniikka, englanniksi multiple access technology myös media access technology. Tekniikan lisäksi voidaan käyttää monipääsyprotokollaa, englanniksi multiple access protocol. Monipääsytekniikka jakaa käyttäjät tiedonsiirtokanavalle yleensä fyysisesti eri osiin kanavaa, kuten esimerkiksi FDMA (Frequency-division multiple access) ja TDMA (Time-division multiple access), tai muokkaamalla fyysistä signaalia, kuten esimerkiksi CDMA (Code-division multiple access), jolloin samalla fyysisellä kanavalla samanaikaisesti tietoa siirtävät käyttäjät erotetaan toisistaan esimerkiksi koodin avulla. Monipääsyprotokolla on kommunikointimenetelmä, joka määrää säännöt sille, miten tiedonsiirtokanava jaetaan tai miten kanavaa käytetään silloin kun kanavalla on useampia käyttäjiä. Yleensä kyseessä on yksi fyysinen tiedonsiirtokanava ja monipääsyprotokolla määrittää sen milloin kukin saa tiedonsiirtokanavaa käyttää ja miten sen käytöstä kommunikoidaan.

# t12f

av: Tehtäväkohdat (f) - (j) lisätty 14.3.2022 ja linkitetty materiaaliin sopiviin kohtiin

14 Mar 22

Moi, pitäisikö tässä tehtävässä olla mahdollista valita vain yksi vaihtoehto per rivi? Nyt antaa valita useita.

av: valitsin tehtävätyypiksi check-box tehtäväkohdille (f),(g) ja (h), koska osassa niistä on oikeassa vastauksessa useampi kohta samalla rivillä. Meni toteutus helpommin, kun käytin samaa pohjaa tehtäville. Eli "tarkoituksella" on tyyppinä sellainen, että voi valita useamman per rivi. Toisaalta tulee miinuspisteitä, jos ruksii ylimääräisiä.

30 Mar 22 (edited 30 Mar 22)
  • Kolme kategoriaa
    • Kanavan jakaminen
      • Jaetaan tiedonsiirtokanava pienempiin paloihin (esim. aika tai taajuus)
      • Pala on ainoastaan yhden laitteen käytössä
      • Koodilla jakaminen poikkeaa siten että kanava kaikkien yhtäaikaisessa käytössä
    • Hajasaanti (Random Access)
      • Kaikki laitteet käyttävät (koko) kanavaa vapaasti
      • Hyväksytään törmäykset (useampi kuin yksi yrittää lähettää samaan aikaan)
      • Toivutaan törmäyksistä
    • Vuorottelu
      • Jokainen laite lähettää vuorollaan
      • Vuoro kiertää laitteelta toiselle
      • Vuoron pituus voi riippua lähetettävästä datan määrästä
# videoLinkki3

Kanavan jakaminen (x Division Multiple Access)

# v2018L10_4
# video2019Luento10m
# t12g

Tehtävä näyttää tarkastuspisteitä jostain syystä. Tai alkoi näyttämään vastauksen jälkeen. Bugi?

av: kyseessä tehtävätyypin ominaisuus, kun tehtävä on suunniteltu vain kerran vastattavaksi. En kuitenkaan tälle kurssille halunnut rajata vastauskertoja, niin nyt pisteet toimivast sitten apuna, jota voi halutessaan käyttää.

17 Jun 22 (edited 20 Jun 22)
# videoLinkki4

FDMA vs. FDM vs. FDD

# v2018L10_5
# video2019Luento10n
  • Frequency-Division Multiple Access (FDMA)
    • Taajuusjakoa käytetään usean käyttäjän linkille pääsyyn
    • Linkkikerroksen kanavan jakamista
    • Monipääsytekniikka
  • Frequency-Division Multiplexing (FDM)
    • Taajuusjaolla jaetaan järjestelmän taajuuskaista pienemmiksi paloiksi
    • Tai kun taajuuskaista jaetaan eri järjestelmien kesken
    • Fyysisen kerroksen kanavan jakamista
    • Esim. GSM taajuuskanavat
  • Frequency-Division Duplexing (FDD)
    • Lähetys ja vastaanotto on jaettu erillisiin taajuusalueisiin, jotta saadaan Full-duplex kommunikaatio
    • Fyysisen kerroksen kanavan jakamista
    • Esimerkiksi GSM taajuuskanavien varaaminen erikseen ylä- ja alalinkille
  • Vastaavasti menee aikajaolle
# t12h
# videoLinkki5

Hajasaantiprotokollat

# v2018L10_6
# video2019Luento10o
  • Ei varata resursseja etukäteen
    • Jos on lähetettävää, niin lähetetään täydellä nopeudella
    • Käytetään sekä
      • langallisissa (Ethernet) että
      • langattomissa (WLAN) lähiverkoissa
  • Hajasaantiprotokolla määrittelee
    • miten havaitaan törmäykset ja miten selvitään törmäyksistä
    • Esimerkkejä:
      • Ensimmäisiä: (Slotted) Aloha, CSMA
      • Ethernet: CSMA/CD
      • WLAN: CSMA/CA
# videoLinkki6

Vuorotteluprotokollat

# v2018L10_7
# video2019Luento10p
  • Kaksi kategoriaa
    • Polling:
      • Isäntälaite kyselee orjalaitteilta "onko lähetettävää"
        • ja jakaa lähetysvuoroja tarpeen mukaan
      • Esimerkkejä: Bluetooth
    • Token passing:
      • "Lähetyslupa (token)" -viestiä välitetään laitteiden välillä
      • Esimerkkejä: Token Ring
# videoLinkki7

Monipääsymenetelmien vertailua

# v2018L10_8
# video2019Luento10q
  • Kanavan jakaminen
    • FDMA ja TDMA
      • Jakaa kanavan tehokkaasti ja reilusti suurella kuormalla
      • Pienellä kuormalla tehoton: Viive kanavalle pääsyssä
      • Pienellä kuormalla vain osa kanavista käytössä
    • CDMA
      • koko kanava käytössä ja jaetaan aktiivisten käyttäjien kesken
      • kun tulee lisää aktiivisia käyttäjiä niin kaikkien tiedonsiirtonopeus pienenee
  • Hajasaantiprotokolla
    • Tehokas pienellä kuormalla: yksi laite voi käyttää koko kanavan kapasiteetin
    • Suuri kuorma: törmäyksistä aiheutuu uudelleenlähetyksiä ja viivettä
  • Vuorotteluprotokolla
    • Ylläolevien parhaat ominaisuudet, mutta
    • viivettä vuoron jakamisen vuoksi
    • Kanavan kapasiteettia 'tuhlataan' vuoronjakamiseen, koko kapasiteetti ei datansiirron käytössä
    • Single point of failure: Isäntälaite tai token viesti
  • Wikipedia: Channel access methods and Media access control (MAC)/Multiple-access protocols
# videoLinkki8

Linkkikerroksen osoitteet

# v2018L10_9
# video2019Luento10r
  • MAC (tai LAN tai Fyysinen tai Ethernet tai Laite) -osoite
    • Tehtävä: Käytetään kehyksen viemiseen 'paikallisesti' liitynnältä toiselle (fyysisesti kytketylle) liitynnälle (saman IP-verkon sisällä)
    • 48 bittinen MAC osoite (useimmissa lähiverkoissa), poltettu verkkokorttiin ROM muistiin (yleensä)
    • Esim. 00-24-E8-42-9E-89, (heksadesimaalimuodossa), missä 8 bittiset tavut erotettu toisistaan '-' -merkillä
    • toinen esitystapa: 00:24:E8:42:9E:89 ja hyvin harvinainen esitystapa: 0024.E842.9E89
  • MAC osoitteiden allokoinnista vastaa IEEE
    • Standardoi myös linkki- ja fyysisen kerroksen tekniikoita, jotka käyttävät MAC osoitteita
    • Esim. IEEE 802.3 ja IEEE 802.11
    • (Verkkokortti)valmistajat ostavat MAC osoitteita
# t12i
# videoLinkki9

Verkko- ja linkkikerroksen osoitteista

# v2018L10_10
# video2019Luento10s
  • Analogia
    • MAC osoite: opiskelijanumero
    • IP osoite: postiosoite + nimi
    • Posti (IP) -osoite: Jyväskylän yliopisto (130.234.x.x), Tietoliikennelabra (x.x.169.x), Ari Viinikainen (x.x.x.82)
    • Posti (IP) -osoite: Jyväskylän yliopisto (130.234.x.x), Auditorio 3 (x.x.156.x), Ari Viinikainen (x.x.x.42)
    • Opiskelijanumero (MAC): Opiskelijakortti (ARP) liittää informaation henkilöön (verkkolaitteeseen)
  • MAC osoite ei ole hierarkkinen
    • osoite voidaan siirtää verkosta toiseen
  • IP osoite on hierarkkinen
    • osoitetta ei voida siirtää verkosta toiseen
# videoLinkki10

ARP (Address Resolution Protocol)

# v2018L10_11
# video2019Luento10t
  • Who has 130.234.169.82? Tell 130.234.169.1
  • Saadaan linkkikerroksen pakettiin osoite, jolla tunnistetaan vastaanottaja
  • Analogia: posti tuo kirjeen:
    • Posti tuo kirjeen yliopistolle: Finland, University of Jyväskylä (vertaa IP verkko-osa)
    • YO:n sisäinen posti Agoraan: AgC334.4 (IP laiteosa jaettu aliverkkoihin)
    • Agoran virastomestarit kolmanteen kerrokseen: AgC334.4 (IP laiteosa jaettu aliverkkoihin)
    • Agoran virastomestarit: Viinikainen Ari (IP laiteosa jaettu aliverkkoihin, jossa laite)
    • Agoran virastomestarit: Selvittää opiskelijanumeron, jollakin menetelmällä
    • Agoran virastomestarit: Laittaa kirjeen postilaatikkoon, joka merkattu opiskelijanumerolla
    • Minä tarkistan että opiskelijanumero ja osoitetiedot on oikein, ennen kuin avaan kirjeen
# videoLinkki11
# t12a

Alla on heksadesimaalilukuina esitetty kaapattu datapaketti ja sen yläpuolella numerointi tavuille, eli yhdellä täydellä rivillä on 16 tavua (heksadesimaalilukuparia).

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
ff ff ff ff ff ff fa de dc 30 96 57 08 06 00 01
08 00 06 04 00 01 fa de dc 30 96 57 64 00 00 09
00 00 00 00 00 00 64 00 00 0a

Datapaketissa on ensin 14 tavua Ethernet-kehyksen otsikkotavuja. Sitten on Ethernet-kehyksen dataosio, jossa kuljetetaan ARP-request -viestin tavut. Viestissä on ARP viestin kenttien arvoja tavuina. Kenttien joukossa on kaksi kenttää, joissa ovat heksadesimaalimuodossa sekä kysyjän IP-osoite, että sen laitteen IP-osoite, jonka MAC osoitetta tiedustellaan.

# t12j

Vastaus ei hyväksy ylimääräisiä nollia osoitteen osien perässä. Esim. jos 64 olisi osa oikeaa vastusta, niin 064 sen paikalla antaisi väärän vastauksen.

av: Tarkistimena on merkkijono-tarkistin, eli se ei testaa erikseen onko numerot oikein, vaan onko merkkijono oikein, täytyypä laittaa todo-listalle, että voisi tehdä IP-osoitteille oman tarkistimen, joka hyväksyy ylimääräiset nollat.

17 Jun 22 (edited 20 Jun 22)

Teoria 3

Teoria 3 osion osaamistavoitteina on ymmärtää luotettavaan tiedonsiirtoon, reititykseen sekä kanavan jakamiseen liittyvät haasteet sekä niiden toteutukseen valitut ratkaisut Internetin eri kerrosten protokollissa.

# video2019Luento11
# video2018Luento11
# video2019Luento11a

Kuljetuskerros (Teoria 3)

# v2018L11_1
  • TCP yhteyden muodostus ja lopetus
  • ymmärtää tilakaavion suhde protokollan toimintaan
  • Luotettava tiedonsiirto
  • Tehokas luotettava tiedonsiirto
  • TCP Vuonvalvonta
  • TCP ruuhkanhallinta

TCP tilakaavio

https://upload.wikimedia.org/wikipedia/en/5/57/Tcp_state_diagram.png

# v2018L11_2
# video2019Luento11b
# t1a
# t1b

jos oikein ymmärsin niin (b) antaa 0.1 tekemättä muutoksia vastaukseen. voi toki olla että sekosin pasmoissani...

av: en ole varma, kun en ole tätä tehtävätyyppiä kehittänyt, että voiko satunnaisesti arvottu järjestys olla jollain todennäköisyydellä oikea... Luulin, että ei. Eikä tämä tehtävätyyppi näköjään näytä Alusta-painiketta, josta näkisi sen mitä aluksi on arvottu... Ilmoitelkaa, jos arvottu järjestys sattuu olemaan oikea.

07 May 22 (edited 09 May 22)
# t1c
# t1d

TCP yhteyden muodostus, lopetus sekä tilat

# video2019Luento11c
# videoTeoria3_1

Luotettava tiedonsiirto

# v2018L11_3
# video2019Luento11d
# video2019Luento11e
# video2019Luento11f
# video2019Luento11g
# video2019Luento11h
# video2019Luento11i
# video2019Luento11j
# video2019Luento11k
# video2019Luento11l
# video2019Luento11m
# video2019Luento11n
# video2019Luento11o
# video2019Luento11p
# video2019Luento11q
# video2019Luento11r
# video2019Luento11s
# video2019Luento11t

Luotettavan tiedonsiirtoprotokollan pitää ratkaista

# video2019Luento12
# v2018L11_4
# video2019Luento12a
  • Kuinka toivutaan virheellisestä datapaketista?
    • Lisätään tarkistussumma
      • jotta havaitaan virheitä
    • Lisätään kontrolliviesti(t)
      • annetaan palautetta virheistä tai virheettömyydestä
  • Kuinka toivutaan virheellisestä kuittauspaketista?
    • Lähetetään paketti uudestaan
      • mutta mitä jos onkin duplikaatti?
    • Lisätään sekvenssinumerointi
      • jotta tunnistetaan duplikaattipaketit
  • Kuinka toivutaan kadonneesta data- tai kuittauspaketista?
    • Lisätään datan lähettäjälle ajastin
      • Ajastin laukeaa jos ei saada kuittausta
      • → lähetetään datapaketti uudestaan
    • Jos datapaketti oli kadonnut
      • on ongelma korjattu
    • Jos kuittauspaketti oli kadonnut
      • vastaanottaja saa duplikaatin
      • josta selvitään sekvenssinumeroinnilla
  • Kuinka toivutaan viivästyneestä kuittauspaketista?
    • Jos viive on suurempi kuin ajastimen arvo
      • tulee turha datapaketin uudelleenlähetys
    • Lähettäjä vastaanottaa duplikaattikuittauksen
      • ja luulee että data paketti on kadonnut
    • Koska kuittauspakettien duplikaatteja ei voi tunnistaa
      • lähetetään varalta datapaketti uudestaan
    • Sekvenssinumeroilla tunnistetaan datapakettien duplikaatit
    • Viive voi vaihdella paljonkin
      • tarvitaan menetelmä viiveen arvioimiseen
      • ja ajastimen arvon päivittämiseen
  • rdt 3.0 on toimiva luotettava tiedonsiirtoprotokolla, mutta hidas!!!
# videoTeoria3_2

Go Back N vs. Selective repeat

# video2018Luento12
# v2018L12_1
# video2019Luento12b
# video2019Luento12c
# video2019Luento12d
# video2019Luento12e
# video2019Luento12f
# video2019Luento12g

Jos kerran kumulatiivinen kuittauspaketti tarkoittaa sitä, että jokainen kuittauspaketti kuittaa kaikki siihen mennessä vastaanotetut paketit, eli yksi kuittaus riittäisi, miksi kaikista paketeista pitää olla oma kuittaus? Eikö riittäisi, että kuittaus tarkistettaisiin aina silloin tällöin, tietyn määrän lähetettyjä paketteja jälkeen? Ymmärsinkö asian vain väärin :D tai miksei tämä voisi mennä niin, että lähetetään x määrä paketteja ja otetaan kaikista vain yksi kuittaus? Tämä kommenttina siis Go Back N -menetelmään.

av: Jos kuittaus tapahtuisi harvemmin kuin joka paketille, niin ongelmatapauksissa tieto tulisi perille myöhemmin, kuin joka paketin kuittaamalla. Lisäksi, ehkä suurempi syy, systeemissä on se, että uusia paketteja saa lähettää sitten kun saadaan kuittauksia. Jokaisen paketin tapauksessa, jos N = 5, niin saadaan lähettää 5 pakettia, sitten odotetaan kuittaus ensimmäiselle paketille, minkä jälkeen saa lähettää kuudennen paketin, jne. Jos kuitattaisiin vain joka viides paketti, niin kuudennen paketin saisi lähettää vasta, kun viidennen paketin kuittaava kumulatiivinen kuittaus saapuu. Täten joka paketti kuittaamalla pakettien virta pysyy tasaisempana. Mainitsemasi ominaisuus on TCP protokollan määrityksissä sellaisessa muodossa, että kuittausta saa viivyttää 200 ms, ja kuitata kaikki sinä aikana saapuneet paketit. En ole tuota koskaan havainnut käytännössä pakettikaappauksia tutkiessani. Muokkaan tästä tekstiä materiaaliin.

06 Apr 22 (edited 07 Apr 22)
# video2019Luento12h
# video2019Luento12i

Go Back N -menetelmässä tiedonsiirtonopeutta kasvatetaan siten, että hyväksytään se, että saa lähettää useamman kuin yhden kuittaamattoman paketin, ennen kuin pitää jäädä odottamaan kuittausten saapumista. Nimessä N kuvaa lähetettävien kuittaamattomien pakettien maksimimäärää. Kun kuittauksia alkaa saapumaan, niin jokaisesta (positiivisesta) kuittauksesta saadaan lähettää uusi paketti matkalle. Jos kuittaus tapahtuisi harvemmin kuin joka paketille, niin ongelmatapauksissa tieto tulisi perille myöhemmin, kuin joka paketin kuittaamalla. Lisäksi, ehkä suurempi syy, systeemissä on se, että uusia paketteja saa lähettää sitten kun saadaan kuittauksia. Jokaisen paketin tapauksessa, jos N = 5, niin saadaan lähettää 5 pakettia, sitten odotetaan kuittaus ensimmäiselle paketille, minkä jälkeen saa lähettää kuudennen paketin, jne. Jos kuitattaisiin vain joka viides paketti, niin kuudennen paketin saisi lähettää vasta, kun viidennen paketin kuittaava kumulatiivinen kuittaus saapuu. Täten joka paketti kuittaamalla pakettien virta pysyy tasaisempana. TCP protokollan määrityksissä on sellainen ominaisuus, että kuittausta saa viivyttää 200 ms, ja kuitata kaikki sinä aikana saapuneet paketit. Näin jokaista pakettia ei välttämättä tarvitsisi kuitata, jos paketteja saapuu tarpeeksi nopeasti. Käytännössä ominaisuutta ei välttämättä ole toteutettu tai se ei ole oletuksena päällä käyttöjärjestelmän asetuksissa.

Kun Go Back N -menetelmässä katoaa paketti tai kuittausta jollekin paketille ei saada ajoissa, täytyy kaikki kadonneen paketin jälkeen lähetetyt paketit lähettää uudestaan, vaikka osa niistä olisi vastaanotettu oikein. Menetelmän nimi tuleekin siitä, että yhdenkin paketin kadotessa täytyy lähettäjän palata N pakettia taaksepäin ja lähettää enimmillään N pakettia uudestaan.

# videoTeoria3_3

TCP Vuonvalvonta - Flow control

# v2018L12_2
# video2019Luento12j
# video2019Luento12k
# video2019Luento12l
  • Vastaanottajan toimenpide
  • Vastaanottaja estää lähettäjää lähettämästä liian nopeasti
  • Mainostetaan (päivitetään) vastaanottoikkunan kokoa lähettäjälle
  • Visualizing the tcp flow control
  • TCP vuonvalvonta on eri asia kuin TCP ruuhkanhallinta - Congestion control
  • Ruuhkanhallinta on lähettäjän toimenpide, käsitellään ruuhkanhallintaa seuraavaksi
# videoTeoria3_4
# videoTeoria3_9

TCP Ruuhkanhallinta - Slow Start

# v2018L12_3
# video2019Luento12m
# video2019Luento12n
  • Slow Start
    • Aloitetaan lähetys hitaasti
    • Kasvatetaan nopeutta eksponentiaalisesti
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
    • Jos saavutetaan raja-arvo, siirrytään Congestion Avoidance vaiheeseen
# videoTeoria3_5

TCP Ruuhkanhallinta - Congestion Avoidance

# v2018L12_4
# video2019Luento12o
# video2019Luento12p
# video2019Luento12q
  • Congestion Avoidance
    • Kasvatetaan nopeutta lineaarisesti
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
# videoTeoria3_6

TCP Ruuhkanhallinta - Fast Retransmit (TCP Tahoe)

# v2018L12_5
# video2019Luento12r
# video2019Luento12s
  • Fast Retransmit
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
    • Uutta:
      • Jos vastaanotetaan 3 kpl duplikaattikuittauksia →
      • paketti oletetaan kadonneeksi →
      • toimitaan kuten paketti olisi kadonnut
        • ei tarvitse odottaa ajastinta
# videoTeoria3_7

TCP Ruuhkanhallinta - Fast Recovery (TCP Reno)

# v2018L12_6
# video2019Luento12t
# video2019Luento12u
# video2019Luento12v
  • Fast Recovery
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
    • Jos paketti oletetaan kadonneeksi (3 kpl duplikaatti ACK)
      • uudelleen lähetetään kuittaamaton paketti
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
      • Uutta:
        • aloitetaan Congestion Avoidance vaiheen alusta
        • eli tiedonsiirtonopeus puolitetaan saavutetusta nopeudesta
# videoTeoria3_8

Verkkokerros (Teoria 3)

# video2019Luento13
# video2018Luento13
# video2019Luento13a
  • DHCP (Dynamic Host Configuration Protocol)
  • NAT (Network Address Translation)
  • Mobile IP vs. liikkuva kännykkä
  • Reititysprotokollat

DHCP toiminta

# v2018L13_1
# video2019Luento13b
# video2019Luento13c
# video2019Luento13d
# video2019Luento13e
# video2019Luento13f
# video2019Luento13g
# video2019Luento13h
  • DHCP kommunikaatio, oletuksena kaikki viestit lähetetään yleislähetysosoitteeseen 255.255.255.255
    • Asiakas - DHCP palvelimen etsintä (DHCP Discover)
    • Palvelimet - IP osoitteen 'vuokra'-tarjouksia (DHCP offer)
    • Asiakas - IP osoitteen pyytäminen (DHCP request)
    • Palvelin - IP osoitteen kuittaus (DHCP acknowledgement)
  • Asiakas voi pyytää vastauksen täsmälähetyksenä, palvelimen asetuksista riippuu tuetaanko täsmälähetyksiä
  • DHCP ja DHCPv6
    • DHCP portit: 67 (palvelin), 68 (asiakas), 546 (IPv6 asiakas), 547 (IPv6 palvelin)
    • IPv6 asiakkaat luo itse IP osoitteen käyttämällä Tilatonta autokonfiguraatiota
    • DHCPv6 protokollaa voidaan (tarvittaessa) käyttää Tilattoman autokonfiguraation parametrien välittämiseen
# videoTeoria3_10a
# t3a

DHCP viestit

# v2018L13_2
# videoTeoria3_10b

NAT (Network Address Translation)

# v2018L13_3
# video2019Luento13i
# video2019Luento13j

av: kun videolla pyydän opiskelijoita katsomaan, että onko kaverilla sama yliopiston IP, viittaa siihen että käytössä on NAPT, jossa IP voi olla sama eri laitteilla. Tällöin laitteiden erottaminen toisistaan tehdään porttinumeroilla.

03 Feb 22 (edited 03 Feb 22)

Yllä esimerkissä ei voi nähdä sitä onko kyseessä perus NAT vai NAPT, koska porttinumeroita ei esitetä, eikä ole samanaikaisesti toista laitetta testaukseen. Kyseessä kuitenkin on NAPT, koska käytännössä perus NAT versiota ei enää käytetä. Nykyään NAT-sanan käyttö tarkoittaa käytännössä NAPT versiota.

Jyväskylän yliopiston IP-osoitteista osa on varattu NAT käyttöön, eli niitä käytetään dynaamisesti langattomissa lähiverkoissa käytettävien yksityisten IP-osoitteiden muuntamiseksi.

# video2019Luento13k
# video2019Luento13l
  • NAT (Network Address Translation) - Basic NAT
    • Reititin muuttaa lähtevien pakettien lähettäjän IP osoitteen
    • Jokainen privaatti IP:tä käyttävä laite saa oman julkisen IP osoitteen
    • Vaatii paljon IP osoitteita (ostetaan ISP:ltä)
  • Network Address and Port Translation (NAPT) - Dynamic NAT
    • Reititin muuttaa myös lähettäjän porttinumeron
    • Tällöin riittää vain yksi julkinen IP osoite
    • Yleisin versio, ja nykyään NAT-termillä yleisesti tarkoitetaan juuri NAPT:tä
  • Port Forwarding - Static NAT
    • Reititin tallentaa pysyvästi porttimuunnoksen (sallii ulkopuoliset yhteydet porttiin)
    • Käytetään kun kommunikaatio vaatii NAT:n takana olevan porttinumeron tuntemusta
# videoTeoria3_11
# t4a
# t4b
# t4c

NAT:n hyödyt ja haitat

# v2018L13_4
# video2019Luento13m
  • Hyödyt
    • Säästää julkisia IPv4 osoitteita
    • Parantaa tietoturvaa
    • Sisäverkon konfiguraatiota ja osoitteita voi vapaasti muuttaa
    • Pienentää reitityksen tarvetta
  • Haitat
    • Kaikki protokollat ja sovellukset eivät toimi NAT:in läpi ilman erillisiä määrityksiä
    • NAT viivästää omalta osaltaan IPv6:een siirtymistä
    • NAT rikkoo kerrosarkkitehtuurin periaatetta
      • reitittimien ei tulisi koskea kuljetuskerrokseen
    • NAT:ista aiheutuu viivettä, prosessori- ja muistikuormaa reitittimessä
      • jokaisesta paketista pitää muuttaa osoitteita ja laskea tarkistussummia uudestaan
# videoTeoria3_12

Mobile IP

# video2019Luento13n
  • Termejä
    • Kotiosoite - pysyvä osoite (permanent address)
    • Kotiagentti (Home Agent, HA)
    • Vierasosoite - (Care-of-Address, CoA)
    • Vierasagentti (Foreign Agent, FA)
    • Kotisolmu - (Home Node, HN)
    • Kommunikaatiokumppani - (Correspondant Node, CN)
    • Kolmioreititys - epäsuora reititys
    • Suora reititys
# videoTeoria3_13

Mobile IP vs. GSM puhelun reititys

# v2018L13_5

Toimiiko muilla tämä Kurosen ja Ross:n linkki?

av: linkki oli http, niin ei toiminut, vaihdan kaikki https, niin toimii. Selaimet eivät nykyään hyväksy http linkkiä, joka lataa tiedoston, kun linkki on https-sivulla

15 Dec 21 (edited 16 Dec 21)
# video2019Luento13o
# video2019Luento13p
# video2019Luento13q
# video2019Luento13r
# video2019Luento13s
# video2019Luento13t
# video2019Luento13u
# video2019Luento13v
# t5a
# t5b

Reititysalgoritmit ja reititysprotokollat - vertailu

# video2019Luento14
# video2018Luento14
# v2018L14_1
# video2019Luento14a

Reititysinformaatiota välitetään kommunikoimalla reititysprotokollilla. Reititysalgoritmit laskevat reititysinformaatiota uusiksi, joko säännöllisesti tai muutoksia havaittaessa. Protokolla ja algoritmi toimivat yhdessä reitityksen mahdollistamiseksi. Monesti käytetään reititysprotokollan nimeä kuvaamaan reititykseen käytettävää menetelmää, vaikka menetelmä sisältää myös algoritmin reittien laskemiseen.

Vertailutaulukossa Esimerkki-rivillä on esimerkki reititysprotokollasta, joka käyttää kyseistä reititysalgoritmia. Muitakin protokollia on olemassa ja mainituista useita eri versioita.

Yhteystila Etäisyysvektori Polkuvektori
Algoritmi Dijkstra Bellman–Ford Ei etsitä lyhintä reittiä
Esimerkki OSPF RIP BGP
Topologia Tunnetaan koko verkon topologia Tiedetään minkä naapurin kautta kohteet saavutetaan Tiedetään polku kohdeverkkoon (ei välttämättä lyhin)
Kommunikoi kaikkien reitittimien kanssa naapuri- reitittimien kanssa naapuri-AS:n reitittimien kanssa
Päivitykset Muutosten aiheuttamat (muuttunut tieto) Periodiset (koko reititystaulu) Muutokset polussa (uusi mainos)
Käyttökohde suuri, hierarkinen verkko pieni, ei-hierarkinen verkko AS:ien välinen reititys
Laskenta-aika on kriittinen parametri Ei ole kriittinen parametri Ei ole kriittinen parametri
Ylläpito Vaati laajempaa verkkotietämystä Ei vaadi paljoa verkkotietämystä Tarvitaan tietämystä myös ISP-sopimuksista
# video2019Luento14b
# video2019Luento14c
# video2019Luento14d
# video2019Luento14e
# video2019Luento14f
# videoTeoria3_14
# t6a
# t6b
# t6c

BGP reititystaulu

# v2018L14_2
# video2019Luento14g
  • Tietoja CIDR raportissa
  • Internetin Globaalin reititystaulun koko
    • toukokuussa 2016 on noin 600000 reittiä
    • toukokuussa 2017 on noin 650000 reittiä
    • toukokuussa 2018 on noin 720000 reittiä
    • toukokuussa 2019 on noin 780000 reittiä
      • joista reilu puolet on yhdistetty mainoksissa (CIDR Aggregated)
    • Reititystalun koon kasvu tähän hetkeen asti
  • Eli reittejä joita AS:t BGP protokollalla mainostavat toisille AS:lle
  • Reitit ovat reittejä joko IPv4 tai IPv6 verkkoihin
  • AS:n reunareitittimet ylläpitävät BGP reititystaulua
    • mainostavat naapureilleen tuntemiaan reittejä
    • päivittävät oman taulunsa naapureiden mainosten ja oman politiikkansa mukaan
  • AS:n muut reitittimet hoitavat AS:n sisäistä reititystä
# videoTeoria3_15
BGP reititystaulun kasvaminen
BGP reititystaulun kasvaminen

Reititysalgoritmit

# v2018L14_3
# v2018L14_4
# video2019Luento14h
# video2019Luento14i
# videoTeoria3_167

Reititysalgoritmien animaatioita

# v2018L14_5
# videoTeoria3_16

Linkkikerros (Teoria 3)

# video2019Luento15
  • ARP ja MAC osoitteet
  • Keskitin vs. kytkin vs. reititin
  • Ethernet CSMA/CD ja WLAN CSMA/CA
  • Virheen havaitseminen ja korjaus

ARP ja MAC osoitteet

# v2018L15_1
# video2019Luento15a
  • Address Resolution Protocol (ARP)
    • Jotta IP paketti voidaan välittää linkkikerroksella oikealle laitteelle
    • Selvittää IP osoitetta vastaavan MAC osoitteen
    • tai
    • Reitittimen MAC osoitteen, jos IP osoite on eri verkossa
# videoTeoria3_17
# video2019Luento15b

ARP ja MAC osoitteet reitittimen kanssa

Olkoon meillä kuvan mukainen verkko, missä Laite A ja Laite B on yhdistetty reitittimen "eri puolille", eli laitteet eivät ole samassa aliverkossa. Laitteen A MAC osoite on AA-AA-AA-AA-AA-AA ja se on yhditetty reitittimen liityntään, jonka MAC osoite on BB-BB-BB-BB-BB-BB. Laitteen B MAC osoite on DD-DD-DD-DD-DD-DD ja se on yhditetty reitittimen liityntään, jonka MAC osoite on CC-CC-CC-CC-CC-CC.

ARP ja MAC osoitteet reitittimen tapauksessa
ARP ja MAC osoitteet reitittimen tapauksessa

Laitteiden reititystaulut on esitetty alla. Oletetaan että ARP-taulut ovat tyhjiä.

Laite A
Destination    Netmask        Gateway        Interface
0.0.0.0        0.0.0.0        111.111.111.111    111.111.111.222

Laite B
Destination    Netmask        Gateway        Interface
0.0.0.0        0.0.0.0        222.222.222.111    222.222.222.222

Reititin
Destination    Netmask        Gateway        Interface
111.111.111.0    255.255.255.0    On-link        111.111.111.111
222.222.222.0    255.255.255.0    On-link        222.222.222.111

Laite A lähettää ping viestin laitteelle B, mihin laite B reagoi lähettämällä vastauksen ping viestiin. Tarvittaessa MAC osoitteet selvitetään ARP protokollalla.

Halutessasi voit itse kokeilla kuvan mukaista simulaatiota, jos sinulla on Java versio 7. Simulaattori https://code.google.com/p/psimulator/ ei toimi Javan version 8 kanssa. Simulaattorin käyttöön löytyy ohjeita http://www.brianlinkletter.com/psimulator2-graphical-network-simulator/. Ohjelmasta on tehty versio, joka toimii Java 8 versiossa, uudemmilla Java versioilla ohjelma ei toimi. Rakenna vastaava verkko itse ja kokeile toistaa opettajan videolla tekemät visualisoinnit.

# t7a

Olenko ymmärtänyt tehtävän väärin vai onko tehtävässä jotakin häikkää? Ei anna millään pisteitä..

av: Tehtävä toimii oikein, tässä vastataan aika usein väärin. ARP-kyselyllä on tarkoitus selvittää MAC osoitteita, niin pakettiin ei voida laittaa vastaanottajan MAC-osoitetta. Kun tallentaa väärän vastauksen uudestaan, saa satunnaisia vinkkejä, joista voi olla apua, vinkkejä on yleensä tehtävissä 2-3.

15 Sep 21 (edited 13 Jan 22)
# t7b
# t7c
# t7d
# t7e
# t7f

Ethernet keskitin (tai eng. hub)

# v2018L14_6
# video2019Luento15c

Luennolla on käytetty CORE reititys emulaattoria. Opettaja esimerkkinä käyttämä verkko:

  • Keskitin on Fyysisen kerroksen laite
    • Käytetään yhdistämään useampia laitteita reitittimeen
    • Läpinäkyvä - tietokoneet tai reitittimet eivät näe keskitintä
    • forwardoi Ethernet kehyksiä, kaikkiin liityntöihin
    • Laitteet sijaitsevat samassa törmäysalueessa
  • Myös Toistin (eng. repeater) on fyysisen kerroksen laite
    • Käytetään pidentämään laitteiden välistä etäisyyttä
    • Läpinäkyvä - tietokoneet tai reitittimet eivät näe toistinta
    • Vahvistaa heikentynyttä signaalia pitkillä kaapeliväleillä (tai myös langattomasti)
  • Sekä keskitin että toistin ovat pääosin poistuneet käytöstä ja IEEE:n Ethernet standardi on määritellyt ne vanhentuneeksi verkkosegmenttien yhdistämiseen
    • Keskittimelle on vielä muutama käyttökohde, esimerkiksi pakettien kaappaaminen saman verkon laitteista
# videoTeoria3_18

Ethernet kytkin

# v2018L14_7
# video2019Luento15d
# video2019Luento15e
  • Linkkikerroksen laite
    • Käytetään yhdistämään useampia laitteita reitittimeen
    • Läpinäkyvä - tietokoneet tai reitittimet eivät näe kytkintä
    • tallentaa ja forwardoi Ethernet kehyksiä
    • Tutkii saapuvan paketin MAC osoitteita
    • Kytkimet oppivat itse MAC osoitteiden sijainnin
    • Laitteet sijaitsevat eri törmäysalueissa
      • sen jälkeen kun kytkin on oppinut laitteiden sijainnin
    • Viisaampi laite kuin keskitin
# videoTeoria3_19

Reititin vs. kytkin vs. keskitin

# v2018L14_8
# video2019Luento15f
  • Reititin - Router
    • Verkkokerroksen laite
    • Välittää paketteja verkkokerroksen osoitteen perusteella
    • Tarvitsee reititysprotokollia osoitteiden sijaintien oppimiseen, tai asetukset tehdään manuaalisesti
  • Kytkin - Switch
    • Linkkikerroksen laite
    • Välittää paketteja linkkikerroksen osoitteen perusteella
    • Oppii itse osoitteiden sijainnin lähetettyjen pakettien perusteella
    • Silta - Bridge: muuten samanlainen mutta liityntöihin kytketään kokonaisia verkkoja. Ei juurikaan käytetä enää
  • Keskitin - Hub
    • Fyysisen kerroksen laite
    • Välittää paketteja jokaiseen linkkiin (fyysiselle siirtotielle) riippumatta osoitteesta
    • Toistin - Repeater: Vahvistaa fyysisen kerroksen signaalia ja välittää sen eteenpäin
# videoTeoria3_20

Verkkolaitteet tänään

# video2018Luento15
# v2018L15_2
# video2019Luento15h
  • Reititin - Layer 4 Router
    • NAT ja palomuuri toimii osin kuljetuskerroksella
  • Kytkin - Multilayer Switch
    • Kytkimeen on lisätty useita eri ominaisuuksia
    • Layer 3 switching, reititys toteutetaan laitteistolla (ASIC), reitittimessä ohjelmistolla
    • Layer 4-7 switching, esim. load balancing, NAT, VPN, web switch
  • Kytkin - Software-defined networking (SDN)
    • Kytkimen kontrolli- ja data-osiot erotellaan
    • Ohjelmallisesti muokataan kontrolli-osioon sääntöjä yms. sille miten ja minne data välitetään data-osion kautta
# videoTeoria3_21
# t6d

Tässä osuudessa jostain syystä lyhenne SDN jarrutteli, halusi näköjään tuon pidemmän version että näytti mitään

20 May 22

Carrier Sense Multiple Access

# v2018L15_3
# video2019Luento15i
Step Collision Detection (CD) Collision Avoidance (CA) Collision Avoidance with RTS/CTS
1 Kuunnellaan onko hiljaista Kuunnellaan onko hiljaista Kuunnellaan onko hiljaista
2 Jos ei, niin odotetaan, kunnes on hiljaista Jos ei, niin odotetaan, kunnes on hiljaista Jos ei, niin odotetaan, kunnes on hiljaista
3 Jos on, niin lähetetään Jos on, niin lähetetään Jos on, niin pyydetään lupaa lähettää
4 Kuunnellaan meneekö lähetys ilman häiriötä perille Odotetaan kuittausta datapaketille Jos pyynnöt törmäävät, odotetaan satunnainen aika ja mennään kohtaan 1
5 Jos ei, niin on tapahtunut törmäys Ei kuittausta, oletetaan törmäyksen tapahtuneen Jos saadaan lupa lähettää, lähetetään
6 Odotetaan satunnainen aika ja mennään kohtaan 1 Odotetaan satunnainen aika ja mennään kohtaan 1 Jos ei saada lupaa, odotetaan satunnainen aika ja mennään kohtaan 1

Taulukon otsikoissa kirjoitusvirhe. 'C' kirjain karannut kolmannen otsikon alusta toisen otsikon loppuun. 'Collision avoidance C' ja 'ollision avoidance'

av: Kiitos, korjattu

19 Jun 22 (edited 20 Jun 22)
# video2019Luento15j
# videoTeoria3_22

Bittivirheiden havaitseminen ja korjaus

# v2018L15_4
# video2019Luento15k
  • Virheiden havaitsemiseksi tai korjaamiseksi lisätään viestiin ylimääräisiä bittejä
  • Data bitit ja ylimääräiset bitit muodostavat koodisanan
  • Virheiden havaitseminen
    • Vertaamalla vastaanotettuja bittejä hyväksyttäviin koodisanoihin, voidaan havaita virheitä
    • Yksinkertaisin: pariteettibitin lisääminen
      • Valitaan kumpaa tarkastellaan: nollia vai ykkösiä
      • Valitaan pitääkö niitä olla pariton vai parillinen määrä
  • Virheiden korjaus
    • Ylimääräisisten bittien avulla voidaan tulkita, jollakin todennäköisyydellä, virheellisen viestin virheetön muoto
    • Yksinkertaisin: toistetaan lähetettävää dataa
      • Lähetetään kaksi tai useampia kopioita samasta bitistä
      • Jos vastaanottaessa kopiot poikkeavat toisistaan, oletetaan että lähetetty bitti on se jota on enemmistö kopioista
# videoTeoria3_23

Koodisana esimerkki

# v2018L15_5
# video2019Luento15l

Muodostetaan esimerkkinä koodisana, jossa lisätään kahden bitin perään pariteettibitti, siten että muodostetussa koodisanassa on aina pariton määrä 1-bittejä. Alla on taulukoitu kaikki mahdolliset kahden bitin kombinaatiot ja niistä muodostuvat edellä olevan määritelmän mukaiset koodisanat.

Databitit Koodibitit Koodisana
00 1 001
01 0 010
10 0 100
11 1 111

Vastaanotossa tutkitaan onko vastaanotettu bittijoukko jokin koodisana. Lähettäessä kolmen bitin jono on aina jokin muodostetuista koodisanoista. Vastaanotettaessa, bittivirheiden sattuessa, voi bittijono olla myös sellainen, jota ei voi muodostua lähetyksessä koodausmenetelmän sääntöjen mukaan. Alla on taulukoitu kaikki kolmen bitin kombinaatiot ja verrattu niitä edellisen taulukon määritelmän mukaisiin koodisanoihin.

Vastaanotetut bitit Onko hyväksytty koodisana
000 000 (ei, virhe)
001 001 (on)
010 010 (on)
011 011 (ei, virhe)
100 100 (on)
101 101 (ei, virhe)
110 110 (ei, virhe)
111 111 (on)

Pariteetin tarkistus

Pariteettibitin käyttäminen on yksinkertaisin keino havaita bittivirheitä. Pariteettibittiä käytettäessä valitaan joko parillinen tai pariton pariteetti. Tällöin koodisanassa tulee olla parillinen tai pariton määrä 1-bittejä. Käytännössä pariteettibittiä käyttävät koodisanat ovat melkein aina tavun monikertoja, ja hyvin usein yhden tavun kokoisia, joten niiden bittien kokonaismäärä on parillinen. Tällöin parillinen tai pariton pariteetti on sama sekä 1- että 0-biteille. Käytännön toteutuksissa käytetään 1-bittien pariteetin asettamista parittomaksi tai parilliseksi. Lähetettäessä dataan, eli lähetettävään bittijonoon, lisätään pariteettibitti, siten että koodisanassa on valittu pariteetti. Vastaanotossa voidaan havaita pariteetin muuttuminen, jolloin viesti havaitaan virheelliseksi.

Seuraavissa tehtävissä tarvitsee selvittää 7-bittisiä ASCII merkkejä vastaava bittikuvio, eli binääriluku. ASCII taulukoita löytyy Internetistä, tai voit käyttää alla olevaa python-koodia.

# t8a

Pariteettibittiä on käytetty mm. 7-bittisten ASCII-merkkien yhteydessä. Nykyään pariteettia käytetään esimerkiksi sarjaliikenteessä ja yleensä pariteettibitillä suojataan binääristä informaatiota, siten että pariteetin lisäyksen jälkeen koodisana on tavun kokoinen tai jokin tavun monikerta. Seuraavissa tehtävissä on käytössä tämä tarkistin.

# t8b
# t8c
# t8d
# t8e

Pariteettimatriisi

Pariteettibitillä voidaan vain havaita virheen tapahtuneen, jos virheitä on ollut pariton määrä. Virheen korjaaminen vaatii lisää informaatiota ja pariteettia käytettäessä on mahdollista tutkia binäärilukuja 2-ulotteisesti, käyttämällä pariteettimatriisia. Pariteettimatriisissa lähetettävä data, esimerkiksi 7-bittiset ASCII binääriluvut, ryhmitellään isommiksi kokonaisuuksiksi. Käytännössä tämä tehdään muodostamalla matriisi, eli asettamalla binääriluvut allekkain. Sitten pariteetti lasketaan jokaiselle riville ja pariteettibitti lisätään jokaisen rivin loppuun. Lopuksi lisätään vielä yksi rivi, johon tulee pelkkiä pariteettibittejä. Tämän viimeisen rivin bitit lasketaan yläpuolella olevista riveistä sarakekohtaisesti. Alla on esimerkki, johon on asetettu binääriluvut ASCII-merkeistä ITKP104, jokainen omalla rivillään. Pariteettina on parillinen määrä 0- (tai 1-bittejä, koska sarakkeita ja rivejä on pariteettibittien lisäämisen jälkeen parillinen määrä). Rivi- ja sarakekohtaiset pariteettibitit on merkitty sinisellä, data bitit on värjätty TIM-järjestelmän oletusvärillä.

1001001 1
1010100 1
1001011 0
1010000 0
0110001 1
0110000 0
0110100 1
0110011 0

Jos bittiryhmässä tulee yksittäinen bittivirhe, aiheuttaa se sekä rivi- että sarakepariteetin muuttumisen. Näin virheellinen bitti voidaan tunnistaa, kun tiedetään millä rivillä ja millä sarakkeella virhe on tapahtunut. Menetelmä vastaa muuten yksinkertaista pariteetin tarkistusta, mutta nyt lähetetään tietyin väliajoin pariteettirivi, mikä pienentää koodin hyötysuhdetta, eli databittien suhdetta kaikkiin lähetettäviin bitteihin.

Etsi seuraavassa tehtävässä esiintyvä bittivirhe ja korjaa se. Seuraavien tehtävien matriisissa saa olla ylimääräisiä väli( )-, putki(|)- ja väliviiva(-) -merkkejä sekä rivinvaihtoja. Tabulaattoria tarkistin ei vielä tue.

# t9a

Seuraavissa tehtävissä muodosta harmaalla taustalla olevia ASCII-merkkejä vastaavat binääriluvut omille riveilleen ja lisää pariteettimatriisiin pariteettibitit tehtävänannossa määritellyn pariteetin mukaan.

# t9b
# t9c
# t9d

Tässä lienee virhe, oikean vastauksen saa parillisella määrällä 0-bittejä.

av: Kun riveillä on kokonaisuudessaan parillinen määrä bittejä ja rivejäkin on kaikkiaan parillinen määrä, niin silloin sekä 1- että 0 -biteillä on aina sama pariteetti, eli molempia on aina rivillä parillinen määrä tai pariton määrä samoin sarakkeissa. Pitäisi varmaan muuttaa jotain tehtävää, että olisi pariton määrä sarakkeita, niin sitten olisi sarakkeissa eroa pariteetissa.

16 Apr 22 (edited 19 Apr 22)
# t9e

Miksiköhän mikään tehtävän vastauksistani ei ole oikein? Muutin tehtävien alussa olevalla pythonilla jokaisen yksittäisen merkin binääriluvuksi, lisäsin o tai 1 sen mukaan, mikä oli vaatimus (parillinen tai pariton bittiä x) ja lopuksi laitoin pariteettirivin ja lisäsin siihen vaaditun bitin. Onko logiikkani pielessä, vai mikä tässä mättää?

av: pariteettirivissä on kaksi bittiä väärin, jolloin kahdessa sarakkeessa on parillinen määrä bittejä

09 Apr 22 (edited 11 Apr 22)

Tässä lienee sama virhe tehtävänannossa kuin edellisessä kohdassa, eli pisteet tulevat kun tutkii paritonta määrää 0-bittejä.

av: ks. edellisen kohdan vastaus

16 Apr 22 (edited 19 Apr 22)

Virheen havaitseminen ja korjaus - Hamming etäisyys

# v2018L15_6
# video2019Luento15m
  • Hamming etäisyys on koodisanojen toisistaan eroavien bittien lukumäärä
  • Koodin minimi Hamming etäisyys on koodin koodisanojen välinen pienin Hamming etäisyys
  • Koodin minimi Hamming etäisyys määrittää koodin kyvyn havaita ja/tai korjata virheitä
  • Jos minimi hamming etäisyys on , niin
    • bitin virheet voidaan havaita ja
    • bitin virheet korjata
# videoTeoria3_24

Minimi Hamming etäisyys - Esimerkki

# v2018L15_7
# video2019Luento15n

Alla on taulukoitu aiemman esimerkin, pariton määrä 1-bittejä pariteetti, koodisanojen väliset erot biteissä. Koodi muodostaa tasaisen Hamming etäisyyden, eli kaikki koodisanat eroavat toisistaan kahden bitin osalta, näin koko koodin minimi Hamming etäisyys on 2. Koodi kykenee siten havaitsemaan yhden bitin virheet, mutta ei korjaamaan virheitä. Kahden tai kolmen bitin virheet jäävät havaitsematta.

Koodisanojen bittien erot
001 010 100 111
001 - 0xx x0x xx1
010 0xx - xx0 x1x
100 x0x xx0 - 1xx
111 xx1 x1x 1xx -

Jos virheitä kontrolloiva menetelmä on huono, se voi generoida koodisanoja, jotka ovat liian lähellä toisiaan. Jos menetelmä muodostaa esimerkiksi koodisanat 000, 100, 001 ja 111, niin Hamming etäisyys on suurimmillaan kolme, mutta joissain tapauksissa 2 tai jopa 1. Minimi Hamming etäisyyden ollessa 1, ei menetelmällä voi varmasti havaita edes yhden bitin virheitä.

Koodisanojen bittien erot
000 001 100 111
000 - 00x x00 xxx
001 00x - x0x xx1
100 x00 x0x - 1xx
111 xxx xx1 1xx -

Virheen havaitseminen ja korjaus - Esimerkkejä

Pariteettibitti (parillinen määrä 1 bittejä)
Databitit Koodibitit Koodisana
00 0 000
01 1 011
10 1 101
11 0 110

Minimi Hamming etäisyys = 2

# video2019Luento15o
Toistokoodi (1 toistobitti)
Databitit Koodibitit Koodisana
0 0 00
1 1 11

Minimi Hamming etäisyys = 2

Toistokoodi (2 toistobittiä)
Databitit Koodibitit Koodisana
0 00 000
1 11 111

Minimi Hamming etäisyys = 3

# videoTeoria3_25

Toistokoodi

Toistokoodi on yksinkertaisin menetelmä korjata virheitä. Ideana on että jokaisesta lähetettävästä bitistä lähetetään useita kopioita. Vastaanotossa sitten tarkastetaan onko kaikki kopiot samoja. Virheen tapahtuessa tulkitaan vastaanotettu bitti siksi, josta on vastaanotettu eniten kopioita.

Toistokoodia ei juurikaan käytetä, koska sen tehokkuus virheenkorjauksessa on huono ja informaatiobittien suhde kaikkiin lähetettyihin bitteihin on pieni. Ainoa hyvä puoli on sen toteutuksen yksinkertaisuus. Kolmen pituinen binäärinen toistokoodi on vastaava kuin (3,1) - Hamming koodi.

Seuraavissa tehtävissä koodataan toistokoodilla tulostuvia ASCII-merkkejä. Käytetään 7-bittisiä ASCII merkkejä siten, että asetetaan kahdeksas bitti, MSB, arvoon 0. Näin bittikuvio vastaa UTF-8 koodausta vastaavien merkkien osalta.

# t10a
# t10b
# t10c
# t10d

Tarkistin antaa errorin: /home/agent/run/9e526520-1d4f-4c04-9bca-b429b661e2b8.sh: line 3: 3: command not found Exception ignored in: <_io.TextIOWrapper name='' mode='w' encoding='utf-8'> BrokenPipeError: [Errno 32] Broken pipe Onko vastaus väärin vai mistä johtuu?

av: TIM:issä muutos, joka rikkoi tehtävän, kun arvottu merkki on |, nyt on tehty korjaus tämän tehtävän kaikkiin alakohtiin.

13 Jan 22 (edited 14 Jan 22)

Toistokoodi, jossa on kolme kopiota jokaisesta bitistä, kykenee korjaamaan koodisanassa olevan yhden bitin virheen. Koska mikään ei rajoita bittivirheitä yhteen koodisanaa kohden, ei korjaukseen voi luottaa täysin. Virheenkorjausmenetelmä tuleekin aina suunnitella oletettavissa olevien virhemahdollisuuksien mukaan. Toistokoodi toimii melko luotettavasti silloin, kun useamman bitin virheet koodisanassa on hyvin paljon epätodennäköisempiä kuin yhden bitin virheet.

Seuraavissa tehtävissä on 3-toistokoodia käytettäessä tapahtunut yhden bitin virhe. Korjaa virhe, poista koodaus ja anna vastaukseksi alkuperäinen 8-bittinen ASCII-merkki.

# t11a
# t11b
# t11c
# t11d
# t11e
# t11f
# t11g
# t11h
# t11i
# t11j

Virheiden havaitseminen Internetissä

# v2018L15_8
# video2019Luento15p

Virheitä havaitaan Internetissä monella kerroksella. Virheiden korjausta tehdään pääasiassa langattomissa linkkitekniikoissa, linkkikerroksella. Sovelluskerroksella käytetään joskus virheenkorjausta, kun kuljetuskerroksella on UDP, yleisempää kuitenkin on toteuttaa mekanismeja, joilla toivutaan kadonneista paketeista. Bittivirheen jääminen huomaamatta sekä linkki-, verkko- että kuljetuskerroksella on hyvin epätodennäköistä.

  • Linkkikerros
    • Ethernet kehys
      • CRC-32 tarkistussumma
      • Vastaanottajan verkkolaite hylkää väärän tarkistussumman sisältävät kehykset
    • Erilaisia eri linkkitekniikoilla
  • Verkkokerros
    • IPv4
      • IPv4 tarkistussumma suojaa otsikkokenttiä
      • Reitittimet tai vastaanottaja hylkää väärän tarkistussumman sisältävät kehykset
    • IPv6
      • Tarkistussumma poistettiin versiosta 6 reitittimien laskentakuorman minimoimiseksi
      • Oletetaan että linkkikerros ja kuljetuskerros tarjoavat riittävän suojan virheiden havaitsemiselle
  • Kuljetuskerros
    • UDP
      • UDP Tarkistussumma, joka suojaa hyötykuorman ja informaation sekä UDP että IP protokollien otsikkokentistä
      • Vapaaehtoinen IPv4:n kanssa, pakollinen IPv6:n kanssa
      • Vastaanottajan käyttöjärjestelmän verkkopino hylkää väärän tarkistussumman sisältävät paketit
    • TCP
      • TCP Tarkistussumma, joka suojaa hyötykuorman ja informaation sekä TCP että IP protokollien otsikkokentistä
      • Vastaanottajan käyttöjärjestelmän verkkopino hylkää väärän tarkistussumman sisältävät paketit
      • Uudelleen lähetykset joko ajastimen lauetessa tai kolmesta duplikaattikuittauksesta
  • Sovelluskerros
    • Jos kuljetuskerroksella käytössä UDP, niin sovelluksen tarpeiden mukaan
    • uudelleenlähetykset tai jokin muu menetelmä virheistä toipumiseen
# videoTeoria3_26

Lopuksi - Kaikki mitä tapahtuu www- sivun pyynnössä

# v2018L15_9
# video2019Luento15q
# videoTeoria3_27

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.