Miten web toimii. TCP/IP-pino


Internetin ja Webin historia

Eipä osannut Salon syrjäkylillä asuva poika ennustaa mitä kaikkea olisi tulossa, kun hän syksyllä 1957 tutkaili taivaalle ja yritti pilvien lomasta nähdä uuden ajan ihmeen, sputnikin, jonka Neuvostoliitto oli ampunut maata kiertämään.
Sputnik herätti maailman mielenkiinnon avaruuteen ja se herätti myös Yhdysvaltojen puolustusministeriön. USAssa pelästyttiin, nyt on jääty pahasti jälkeen tekniikan kehityksessä. Niinpä se perusti ARPA:n (Advanced Research Projects Agency) edistämään huipputekniikan tutkimusta ja kuromaan kiinni oletettua Neuvostoliiton etumatkaa.
ARPA:ssa aloitettiin mm sodankestävän tietoverkon kehitystyö. Ensimmäinen suunnitelma pakettiverkolle, jota kutsuttiin ARPANET:iksi, julkaistiin vuonna 1967. Tosin muuan Leonard Kleinrock oli julkaissut ensimmäisen paperin pakettikytkennästä jo vuonna 1961, mutta häntä ei kukaan ottanut tosissaan. ARPANET on “grand-daddy of packet networks.”

Vuoden 1969 loppuun mennessä verkkoon liitettiin ensimmäiset neljä solmukonetta. Koneet olivat sen aikaisia supertietokoneita jotka juuri ja juuri mahtuivat isoon yksiöön ja niiden ylläpitäjät kehittivät itse tarvittavat ohjelmistot. Kehitys kehittyi ja 1970-luvun lopulla tietoverkko koostui jo 60:sta palvelinkoneesta eri puolella Yhdysvaltoja. Kun armeijan osuus erotettiin omaksi verkoksi 1983, se helpotti pakettiverkko-idean laajentumista Yhdysvaltain ulkopuolelle.
1980-luvun lopulla ARPANET muuttui Internetiksi, minkä jälkeen verkon kasvu kiihtyi entisestään. Internetin luonne myös muuttui, keskitetystä rakenteesta siirryttiin kehittämään yleiskäyttöistä ja hajautettua tiedonsiirtojärjestelmää.

Suomessa yliopistojen tietoverkot kytkettiin Internetiin vuonna 1988. Sitten alkoi tapahtua.
Sveitsin CERNissä Tim Berners-Lee kehitti hypertekstijärjestelmän (HTTP-protokolla ja HTML-kieli) 1990. Se mahdollisti nykymuotoisen webin kehityksen.
Vuonna 1993 julkaisiin ensimmäinen graafinen selain, Mosaic, jolla päästiin helposti tutkailemaan www-sivuja, World Wide Web. Se toi tekstin lisäksi kuvaruudulle kuvat, musiikin ja animaatiot.
Samana vuonna tavalliset suomalaiset pääsivät kokeilemaan internetin ihmeitä. Mikään ei enää ollut entisellään. Netti saatiin jokaisen taskuun kun Apple toi vuonna 2007 markkinoille älypuhelimen jolla pääsi internetiin.

Lyhyesti
1969: 4 konetta (ARPAnet 1969 – 1989) (ei käyttänyt TCP/IP-protokollaa)
1972: 30 konetta, sähköposti
1985: 2000 konetta (1983 – TCP/IP) pääosin USA:ssa
1989: 160’000 konetta (1990 - WWW)
1997: yli 16 miljoonaa konetta, yli 85 maata, kaikissa maanosissa
2006: 45 miljoonaa käyttäjää
2012: 2405 miljoonaa käyttäjää

 

Mitä tapahtuu kun kotikoneen käyttäjä haluaa lukea päivän uutiset Ylen sivuilta?

Työaseman (client, asiakas) selain avaa internetin kautta yhteyden palvelintietokoneelle (server). Sitten selain lähettää palvelimelle pyynnön ”lähetä minulle tiedosto index.html”. Index.html on web-palvelimen etusivu jonka se ensiksi lähettää asiakkaalle ellei toisin pyydetä. Palvelin vastaa pyyntöön lähettämällä ko. sivun. Sivulla voi olla merkkien lisäksi olla kuvia, ääntä, videota, yms.
Saatuaan palvelimelta lähetyksen selain tulostaa sivun näytölle.

Asiakkaan ja palvelimen välissä on kymmenittäin erilaisia verkon laitteita, kilometreittäin erilaisia kaapeleita, radioyhteyksiä, valokuituja ja kymmenittäin erilaisia protokollia s.o. ohjelmia tuota yksinkertaiselta vaikuttavaa prosessia toteuttamassa.
Web on idealtaan client-server system, asiakas/palvelin-järjestelmä. Tietokoneesi on asiakas ja etänä verkossa oleva tietokone, jossa on säilösssä näytettävät tiedostot, on palvelin.

Mitä kaikkea tapahtuu tuon esimerkin taustalla, sitä selvitämme nyt.
Käydään läpi vain olennaiset asiat jotta kuka tahansa netin käyttäjä saisi mielikuvan mitä oikeesti nettiyhteyden taakse kätkeytyy.
Internetin tekniikkaa tulee tuntea varsinkin jos aikomus on kirjoittaa koodia IoT-ympäristöön.

 

Ihan aluksi on tärkeää tiedostaa kaksi määritystä:
Internet
, on maailmanlaajuinen avoin tietoverkko, joka toimii tiettyjen protokollien mukaisesti.
WWW, on internetin päälle rakennettu palvelujärjestelmä jonka avulla julkaistaan verkkosivuja.

Yksinkertaisimmillaan Web koostuu seuraavista komponenteista:
- tietokoneessa jolla työskentelet on oltava langaton tai langallinen verkkoliitäntä
- web-server/palvelin, jossa web-sivut ovat
- internet-yhteys
- verkko on kaapeleita, reitittimiä, kytkimiä ja muita laitteita
- selain, esim Firefox, jolla webin servereiltä haetaan tietoa

Paikallisverkon rakenne:  rakenna-lan-paikalliverkko-kotiin-kouluun

 

Taustaa
Määritetään ensin pari termiä johon seuraavassa ja koko internet-touhussa törmätään jatkuvasti.

Mitä ovat paketti ja pakettiverkko?
Pakettiverkko on niin hieno idea, että jos sitä ei olisi keksitty, se pitäisi keksiä. Perusidea on se, että verkossa välitettävä dokumentti (teksti, kuva, ääni, video) muutetaan biteiksi (ykkösiksi ja nolliksi), jotka kootaan pieniin datatapaketteihin, pakettiin lisätään kuljetuksessa tarvittava lisäinfo (header) kuten lähde- ja kohdeosoite, ja lopuksi se muutetaan sähköiseksi signaaliksi joka johdetaan kaapeleita pitkin maailmalle.
Bittipaketissa olevan osoitteen perusteella paketit etsivät itse tiensä vastaanottajalle ennalta määräämätöntä reittiä pitkin. Ne etenevät solmulta (reitittävä tietokone) toiselle ja kukin solmu pystyy itsenäisesti välittämään ja vastaanottamaan noita paketteja.
Signaalipaketit kulkevat internetin läpi laitteesta toiseen ja vastaanottopään koneessa sähkösignaalit muutetaan takaisin biteiksi, kootaan paketeiksi, puretaan pois paketeista lisäinfot (header) ja lopuksi tulostetaan dokumentti vastaanottajan tietokoneen näytölle (kaiuttimiin, tulostimelle, jne).

Mikä on protokolla?
Protokolla (yhteyskäytäntö, protocol) on säännöstö, jota kahden tai useamman laitteen on noudatettava, jotta niiden välinen kommunikaatio olisi mahdollista. Ne määrittelevät datapaketin koostumuksen sekä toimenpiteet viestiä lähetettäessä ja kuitatessa. Tietoliikennetekniikassa käytetään samanaikaisesti monia eri protokollia, jotka huolehtivat kukin omasta tarkoin rajatusta tehtävästä.  Yhdessä nämä protokollat muodostavat protokollapinon. Protokollat ovat ohjelmistoja.
Erilaisia prokollia on internetin syövereissä käytössä kymmenittäin. Tutkitaan niistä tärkeimmät vähän syvällisemmin, jotta netin toiminta avautuu ja jotta päästään tekemään laiteläheistä koodia RasPiin.

Mikä on OSI-malli?
Jos haluat oppia tietoverkkojen toimintaa ja Internettiä, niitä ei voi käsitellä ilman OSI-mallia. OSI (Open Systems Interconnection) on ISO:n (International Organization for Standardization) kansainvälinen standardi joka käsittelee tietoverkkoja.
ISO kehitti OSI-mallin 1970-luvun lopussa helpottamaan ohjelmistojen ja laitteitten kehitystyötä ja yhtenäistämään tietoliikenteen peruskäsitteistöä. OSI-mallia käytetään lähinnä tietoliikenneverkkojen toimintojen kuvaamiseen. OSI-verkko jäi vain teoreettiseksi malliksi. Sen nykymerkitys on olla Internet-opintojen apuna. Kaikki internetin protokollat perustuvat OSI-mallin ideaan, siksi siihen kannattaa perehtyä.

Mikä on TCP/IP Protocol Suite?
TCP/IP-Protocol Suite on viisikerroksinen protokollapino joka on internet-käytössä korvannut OSI-mallin. Nimitys tulee pinon kahdesta tärkeimmästä protokollasta, mutta kokonaisuuteen kuuluu monta muutakin. Pino koostuu itsenäisistä moduuleista, kerrokset. Kerrokset ovat fyysinen, linkki-, verkko-, kuljetus- ja sovelluskerros. Internetin tekniikka on hyvin monimutkainen. Kerrosajattelu auttaa meitä hahmottamaan tuon tekniikan toimintaa.

Mikä on IP-osoite?
IETF, The Internet Engineering Task Force, on Internet-protokollien standardoinnista vastaava organisaatio. Se määritteli vuonna 1979 IPv4-protokolan, joka on internetin osoitteiden rakenteen määrittävä ohjeisto. Osoite on 32-bittinen joten sen osoiteavaruus on 2 potenssiin 32 eli kaikkiaan yli 4000 miljoonaa osoitetta, tarkalleen 4 294 967 296.
Osoitteen määrittävä 32-bittinen luku on jaettu neljään 8-bitin osaan, jotta se olisi helpompi hahmottaa. Osoite on tyypiltään desimaalisena 192.168.0.33.
Koska kukaan ei tuollaisia numero-osoitteita muista, kehitettiin protokolla jolla nimiosoitteet, kuten esimerkiksi www.punomo.fi muutetaan numeroiksi. Tuo nimipalvelu, DNS, Domain Name Service, toimii niin automaattisesti ettei sitä tavallinen käyttäjä edes huomaa.

OSI-malli
OSI-malli kuvaa tiedonsiirtoprotokollien yhdistelmän seitsemässä kerroksessa. Kerrosten tehtävät ja niiden väliset rajapinnat on tarkkaan määritelty. Kukin kerroksista käyttää alemman kerroksen palvelua ja tarjoaa palvelujansa yhtä kerrosta ylemmäs.

 

7. Sovelluskerros (application layer)
Verkkopalveluja käyttäjän sovellusohjelmille.

6. Esitystapakerros (presentation layer)
Määritellään missä muodossa välitettävä data esitetään.

5. Istuntokerros (session layer)
Sovellusten toimintojen koordinointi, ts. huolehtii tietokoneiden välisistä yhteyksistä (=istunnoista).

Tärkeää tietää: ylimmät kerrokset, 5, 6 ja 7 eivät kuulu TCP/IP-pinoon, josta edempänä lisää.
Seuraavat kerrokset alaspäin: 4, 3, 2 ja 1 ovat suurinpiirtein vastaavat TCP/IP-protokollapinossa.

4. Kuljetuskerros (transport layer)
Datan pilkkominen segmentteihin.

3. Verkkokerros (network layer, internet layer)
Data pakataan verkkossa kulkeviin paketteihin jotka reititetään internetin kautta perille.

2. Siirtoyhteyskerros tai siirtokerros (data-link layer, link layer)
Rakentaa paketin ympärille kehyksen jonka jälkeen kokonaisuus on valmis muutettavaksi jännitetasoiksi, radioaalloiksi tai valoksi, riippuen mihin ympäristöön paketit johdetaan.

1. Rakenteellinen eli fyysinen kerros (physical layer)
Koaksiaalikaapeli tai parikaapeli tai valokaapeli tai radiosignaali.

Siinä lyhykäisyydessään OSI-mallin kerrokset ja niiden merkitys/tehtävä.
OSI-mallia käytetään lähinnä tietoliikenneverkkojen toimintojen kuvaamiseen ja jäsentämiseen eli Internet-opintojen apuna. Itse OSI-verkko ei koskaan saavuttanut suosiota vaan TCP/IP-pino korvasi sen.

 

TCP/IP-Stack/Pino

Miksi kerrokset?
* Kerrokset on pinottu toiminnan kannalta loogisesti.
* Erottaa protokollien toiminnat.
* Kukin kerros hoitaa sille määritellyt tehtävät dataliikenteen toiminnoista.
* Helpottaa protokollien suunnittelijoiden työtä.
* Kerrosajattelu auttaa meitä hahmottamaan internetin tekniikan toimintaa.
* Kukin taso on itsenäinen ja sitä voi muuttaa (parantaa) ilman muiden tasojen muuttamista.

TCP/IP-pinon kehitys aloitettiin 1970-luvun loppupuolella. Pino on oikeastaan OSI-mallin parannettu kopio. Se on yksinkertaisempi kuin OSI-malli, siinä on vain viisi kerrosta (neljä, laskutavasta riippuen), eikä se pyri samanlaiseen yleispätevyyteen kuin OSI. Käytännön internetverkot koostuvat TCP/IP suitesta, tai mieluummin Stack – pino, joka on kokoelma hierarkkisia protokollia jotka on suunniteltu toimimaan yhdessä. Hierarkkisuuus tässä tarkoittaa sitä, että alemman tason protokollat ikäänkuin palvelevat ylemmän tason protokollia ja päinvastoin. Jokainen taso tekee vain sille määritellyt tehtävät ja nuo tehtävät tehtyään siirtää paketin ylöspäin tai alaspäin pinossa. Alempi kerros palvelee ylempää ja ylempi alempaa.

Pino koostuu alhaalta ylöspäin ajatellen fyysinen, data link-, verkko- ja kuljetus- ja sovelluskerros. Ylimpänä ovat käyttäjän sovellukset. “Rautaa” edustaa alin eli fyysinen taso, joka on joko Ethernet-kaapelointi tai mahdollisesti valokuitu tai radiotie, joka on nykyään yleinen kännyköiden ja tablettien muodossa. Me käsittelemme vain Ethernet-verkkoa eli parikaapelointia. Katso paikallisverkko....

Internet yhdistää erilaiset verkot joiden kaikkien on toimittava yhteisesti sovittujen sääntöjen mukaisesti. Nuo säännöt on määritelty TCP/IP-protokollapinossa. Verkolla ei tarvitse olla mitään ylimääräistä älyä, sille riittää kun se osaa kuljettaa datapaketit lähettäjältä vastaanottajalle. Siihen riittää IP-protokolla.
TCP/IP protokollapino on osa Linux-käyttöjärjestelmän (ja muidenkin) kerneliä (käyttöjärjestelmän ydin) ja sitä ajetaan koneen kernel-muistissa. Koneessa toimivat sovellusohjelmat ajetaan käyttömuistissa kuten muutkin ohjelmat ja ne käyttävät sovelluskerroksessa mm seuraavia protokollia: HTTP, FTP, SMTP, SSH. Mainitut protokollat eivät kuulu TCP/IP-pinoon, mutta myös ne on kansainvälisesti standardoitu.

Protokollat ovat ohjelmia. Kun paketti viimein saapuu koneeseen jossa selaimesi on, paketti nousee pinossa kerros kerrallaan ylöspäin ja siitä puretaan headerit yksi kerrallaan, oikeassa järjestyksessä tietty. Kun viimein originaali HTTP-paketti on jälellä, HTTP header poistetaan ja selain manipuloi sivun näyttöön alkuperäiseen asuun. Tästä on omat harjoitukset, jolloin viimeistään selviää mitä tapahtui.
Kukin lähetyspuolen kerros luulee keskustelevansa ainoastaan vastaanottopuolen vastaavan kerroksen kanssa, oikeasti data siirtyy alas ja ylös protokollapinossa.

Klikkaa kuva suuremmaksi.
TCP/IP-protokolla-pino

 

5. Sovelluskerros (application layer)
Sovelluskerros sisältää palveluja käyttäjän sovellusohjelmille. Tärkein sovellus internetin kannalta on HTML-sivujen esittämiseen käytetty selain (Firefox, Chrome, Internet Explorer, MS Edge). HTML, Hypertext Markup Language, on merkkauskieli jota käytetään www-dokumenttien tekoon. Siis www-sivujen tekoon. HTML-sivuilla voi olla tekstin lisäksi kuvia, audioita ja videoita, animaatioita, jne. Näistä lisää, kun teemme omia html-sovelluksia RasPin web-serveriin.

Muita webin sovelluksia ovat, mm:
- sähköposti-email, helppo ja halpa tapa kommunikoida internetin kautta koko maailman kanssa.
- Youtube, mm musiikkivideoiden katseluun/kuunteluun.
- Skype, videopuheluihin.
- Facebook, “sosiaalinen media”.
- SSH, Secure Shell, salattuun tietoliikenteeseen tarkoitettu protokolla, joka mahdollistaa loggautumisen verkon yli toiseen koneeseen ja työskentelemään siellä vaikka kone olisi toisella puolella maapalloa.
- FTP, File Transfer Protocol, mahdollistaa tiedostojen siirtämisen toiseen koneeseen Internetin tai lähiverkon kautta.

Tänä päivänä voi kuunnella radioasemia internetin kautta maailman kaikilta kulmilta ja oikein FM-laatua. DX-kuuntelusta nykynuoriso ei ole tiedä mitään, sen muistavat vain vanhat papparaiset. Television katselu onnistuu samoin. Esim Formulat näkyvät netin kautta kohtuullisen hyvin.

Sovelluskerros toimii TCP/IP-pinon päällä, ts. TCP/IP-pino kokonaisuudessaan palvelee sovellustason protokollia. Verkkoselaimen ja verkkopalvelimen väliseen kommunikointiin käytetään HTTP-protokollaa, Hypertext Transfer Protocol. HTTP lisää omat header-tietonsa lähetettävään datapakettiin, ennenkuin se siirtää datapaketin alaspäin TCP/IP-pinoon.
HTTPS, Hypertext Transfer Protocol Secure, on HTTP-protokollan ja SSL/TLS-protokollan yhdistelmä. Sitä käytetään tiedon suojattuun siirtoon Internetissä, esim pankkiyhteyksiin.
Jos lähetettävä data on iso, se palastellaan ja datapaketit numeroidaan, jotta ne voidaan vastaanottopäässä kerätä yhteen ja laittaa oikeaan järjestykseen. Kaikissa paketeissa on alkuperäisen paketin tunniste ja sijainti paketissa, ja vielä tieto josko paketti on sarjan viimeinen.

4. Kuljetuskerros, siirtokerros (transport layer)
Kuljetuskerroksen kaksi tärkeintä protokollaa ovat yhteydellinen TCP ja yhteydetön UDP.
Kuljetuskerros vastaanottaa sovelluksen viestit ja segmentoi ne tarvittaessa pienemmiksi paketeiksi sekä lisää protokollan mukaiset otsikkokentät, header, datan eteen.

TCP, Transmission Control Protocol
TCP on hyvin monimutkainen, mutta tutkaillaan vain olennainen joka auttaa meitä ymmärtämään pääkohdat, yksityiskohdat jääköön jokainen oman mielenkiinnon varaan. Google on ystäväsi, tässäkin. HTTP-palvelin käyttää HTTP-protokollaa web-sovellusten tiedonsiirtoon kuten edellä kävi ilmi. Toisin sanoen asiakaspäässä on tavallinen selain ja palvelimen päässä on HTTP-palvelin, välitettävä HTTP-pakettidata on todellisuudessa TCP-protokollan kautta välitetty tavallinen bittijono. 
TCP:n avulla pakettidata kulkee luotettavasti perille, olipa laite sitten pc, älypuhelin, tabletti tai jokin muu. Luotettavuus syntyy siitä, että se pitää kirjaa jokaisesta yhteydestä. Se numeroi paketit jotta ne ovat tarvittaessa uudelleen lähetettävissä. Se valvoo, että paketit menevät perille ja ovat vastaanottopäässä koottavissa oikeaan järjestykseen. Tämä siksi, että saman tiedoston paketit saattavat kulkea eri reittejä pitkin ja saapua perille “väärässä” järjestyksessä. Toisin kuin UDP, se tekee yhteyden alussa kättelyn, joka varmentaa, että yhteys on avattu oikeaoppisesti ja että molemmat sovellukset ovat valmiita keskustelemaan.

TCP-protokolla on monimutkainen verrattuna UDP:hen, mikä johtuu siitä, että se huolehtii pakettien perillemenosta. Vastaanottaja lähettää kuittauksia vastaanotetusta datasta. Jos kuittausviestiä ei lähetetä tietyn aikakehyksen sisällä paketin lähettämisestä, se lähetetään uudelleen. TCP-kerros ei tiedä mitään datan sisällöstä jonka se kuljettaa pinon läpi. Se vain ottaa vastaan “ylhäältä” saamansa datapaketin, lisää siihen omat tiedot, header, ja lähettää sen “alaspäin” IP-kerrokseen. Verkon toisessa päässä kaikki tapahtuu päinvastaisessa järjestyksessä ja viimein www-sivu saavuttaaa selaimen ikkunan.
Siirrettävä data ei “tiedä” yhtään mitään kerroksista eikä internetistä.

Aina ei tarvitse varmistua siitä että paketti saapuu perille. Tällaisia tilanteita varten kehitettiin yksinkertaisempi protokolla, nimeltä

UDP, User Datagram Protocol
Se tarjoaa sovelluksille epäluotettavaa, yhteydetöntä viestintää. Kuullostaa pahalta. UDP lähettää sille annetun datan välittömästi, eikä se jouda ylläpitämään mitään tilatietoja. Joten sen ei tarvitse harrastaa uudelleenlähetystä kuten TCP tekee. Siksi yhteydetön viestin välitys nopeuttaa tiedonsiirtoa.
On paljon sovelluksia joissa ei haittaa vaikka kaikki paketit eivät perille menekään. Niille tärkeämpää on nopeus. Esimerkiksi puheen ja musiikin toisto eivät välitä, jos jokin paketti ei saavu koskaan perille. Jos paketteja jää matkalle paljon, ääneen voi tulla säröä tai videokuvaan häiriöitä. Mutta mitä se rock’nrollissa haittaa?
Verkkopelit käyttävät yleensä molempia protokollia, siis TCP- ja UDP-protokollaa. UDP:tä käytetään esimerkiksi pelin objektien liikepakettien lähetykseen. Liikepaketteja lähetetään tiuhaan tahtiin. Muutaman liikepaketin puuttuminen ei haittaa sovelluksen toimintaa, uusia on tulossa jonoksi asti. Pelit käyttävät rinnakkaista TCP-yhteyttä tärkeän datan lähetykseen (esim pelitilan muutokset) jotka täytyy saada jokaiselle pelaajalle luotettavasti. UDP soveltuu hyvin reaaliaikajärjestelmiin, joissa osa luotettavuutta voidaan uhrata nopeudelle.

 

3. Verkkokerros (network layer, internet layer)
IP, Internet Protocol, on verkkokerroksen tärkein protokolla, monta muutakin kerroksesta löytyy. IP-kerros lisää omat header-tietonsa pakettiin (osoitteet yms) joita tarvitaan jotta koko paketti kulkee internetin läpi kohti oikeaa konetta. Datapaketit voivat kulkea omia teitään, mutta yleensä ne kulkevat samojen solmujen (välittäjätietokone) kautta.
IP reitittää paketit, datagrammit, lähettäjältä vastaanottajalle, mutta se ei ota vastuuta pakettien perillemenosta. IP on yhteydetön, se ei pidä kirjaa yhteyksistä. Koska IP ei välitä luotettavuudesta tai virheistä, siksi ne hoidetaan TCP-kerroksessa. IP:n täydentämä paketti lähetetään edelleen “alas” ja linkki- eli ethernet-kerros lisää siihen omat tietonsa jolloin saadaan Ethernet-kehys, frame. Verkon kytkimet, reitittimet ja muut laitteet eivät tiedä TCP-protokollasta mitään, ne näkevät yhteyksien sijaan vain eteenpäin siirrettäviä paketteja. 

TTL-laskuri
IP-paketissa on TTL-, Time To Live, laskuri, elinaikalaskuri. IPv4-protokollassa TTL on 8-bittinen luku, eli 2 potenssiin 8 = 256 (IETF suositus 255), joka kertoo jäljellä olevien reititinhyppyjen maksimilukumäärän. TTL-arvoa vähennetään yhdellä aina joka hypyllä reitittimestä toiseen. Paketti hävitetään kun laskuri menee nollille. Tämä siksi, ettei verkkoon jäisi perille osaamattomia paketteja hortoilemaan ikuisesti ja siten ruuhkauttamaan verkkoa.

Ulkoisen, Internetissä näkyvän IP-osoitteen selvittäminen:
Mene osoitteeseen whatismyipaddress.com , sivulla näkyy käytössäsi oleva ulkoinen IP-osoite.

 

2. Linkkikerros, Siirtoyhteyskerros (data-link layer, link layer)
Linkkikerros ja fyysinen kerros muodostavat yhdessä peruskerroksen. TCP/IP-malli ei määritä tarkkaan mitä tapahtuu verkkokerroksen alapuolella eli peruskerroksessa. Meidän tapauksessa vastaus on ethernet.
Ethernet on yleisin lähiverkkoteknologia. Lähiverkko syntyy kytkemällä kaikki laitteet, siis PC, verkkotulostin, verkkotallennin, yms, reitittimeen tai kytkimeen.
Ethernet on yleisnimi joukolle IEEE:n (The Institute of Electrical and Electronics Engineers) kehittämiä tiedonsiirron standardeja. Ensimmäinen IEEE 802.3 standardi julkaistiin vuonna 1983.

Ethernet-verkossa siirrettävä data kapseloidaan Ethernet-kehykseen, tehdään raami, frame. Tämä on samalla liitäntä verkon rautaan, eli se hoitaa paikallisverkon laitteiden välisen liikennöinnin.
Siirtokerrosprotokolla on pääosin toteutettu verkkoadapterissa joka usein on NIC, Network Interface Card. Tutkitaan korttia tarkemmin kerroksessa 1. Lähiverkossa käytetään fyysisiä osoitteita. Siispä tarvitaan MAC.

MAC–osoite (Media Access Control)

MAC-osoitetta tarvitaan kun kaksi samassa Ethernet-verkossa olevaa laitetta kommunikoi keskenään. MAC-osoitteesta käytetään myös nimityksiä LAN-, fyysinen-, laite- tai Ethernet-osoite. Se voi myös olla jossain tapauksisa EHA, Ethernet hardware address.
Jokaisessa Ethernet-verkkoon kytketyssä laitteessa, oli se sitten tietokone, reititin, verkkotulostin, verkkotallennin tai joku muu, tulee olla yksilöllinen MAC-osoite. Muuten laitteet eivät löydä toisiaan ja eivät voi kommunikoida keskenään. Esim. PC ei löydä tulostinta eikä tulostus onnistu. Paikallisverkon laitteiden MAC-osoitteet eivät näy reitittimen läpi ulospäin internetiin.

MAC-osoitetta käytetään pakettien ohjaamiseen saman aliverkon sisällä laitteelta toiselle. Jos paketti on menossa internetiin, ensin selvitetään MAC- ja IP- osoitteiden vastaavuus ARP- kyselyllä. Sitten paketti ohjataan reitittimelle sen MAC-osoitteeseen ja reititin ohjaa ne edelleen paketissa olevan IP osoitteen perusteella maailmalle.

Verkossa olevan laitteen IP-osoite saattaa vaihtua ja eri tilanteissa vaihtuukin. MAC-osoite ei vaihdu. Verkkokortin (tai muun vastaavan adapterin) valmistaja on kirjoittanut MAC-osoitteen pysyvästi kortin ROM-muistiin (Read Only Memory, haihtumaton muisti). Se tosin on joissakin tapauksissa vaihdettavissa jälkikäteen, mutta miksi pitäisi, ellei ole pahat mielessä?

MAC-osoite on 48 bittinen (6 tavua) binääriluku (uudempi formaatti on 64 bittinen), ja yleensä ilmaistaan kuudella hexadesimaaliluvulla tyyliin 01-23-6c-62-c6-09. Näistä kolme ensimmäistä kertoo kuka on kortin valmistaja ja kolme jälkimmäistä on juokseva sarjanumero.

MAC-osoitteen toiminta paikalliverkossa
MAC-osoite ja IP-osoite ovat kaksi eri asiaa, ne ovat eri tason protokollia. MAC-osoitetta tarvitaan paikallisverkossa. Internetistä tullut datapaketti sisältää IP-osoitteen jonka avulla se on tullut kotiververkon reitittimelle. Paketti on nyt oikeassa verkossa, mutta mille koneelle se pitäisi toimittaa? Miten selvitetään IP-osoitetta vastaava MAC-osoite?
Vastaus on ARP, Address Resolution Protocol. ARP lähettää yleislähetysosoitteella broadcast, siis kaikille samassa verkkosegmentissä oleville, kyselyn, "Kenellä on tällainen IP?". Oman osoitteensa tunnistava laite vastaa kyselijän (reitittimen) MAC-osoitteeseen ja kertoo samalla oman MAC-osoitteensa.
Lähettäjä/kyselijä tallettaa IP/MAC-osoiteparin omaan ARP-taulukkoonsa. ARP-taulu pitää tallessa kyselyjen vastauksia. Kussakin koneessa (myös reitittimessä) on jokaiselle aliverkolle oma taulunsa. IP-pakettien välityksessä IP-osoitetta käytetään vain sen aikaa kun selvitetään kenellä samassa verkkosegmentissä on mikäkin MAC-osoite. Kaikki session paketit lähetetään jatkossa näiden MAC-osoitteiden välillä.
Erityisiä MAC-osoitteita käytetään multicast-lähetysten, ryhmälähetys, välittämiseen. Multicast-kehys, esim. videoneuvottelu tai videolähetys, lähetetään yhdeltä monelle (mutta ei kaikille kuten broadcast).

RasPin MAC-osoitteen selvittäminen
Komento on: ifconfig

Kuvassa erään RasPin IP-osoite: inet 192.168.0.22
netmask: 255.255.255.0 (sillä selvitetään kuuluuko osoite omaan verkkoon)
broadcast-osoite: 192.168.0.255 (yhteinen kaikille samassa verkossa oleville)
MAC-osoite, ether: b8:27:eb:92:f8:84

MAC ja matkapuhelin
MAC-osoitteen avulla puhelimet ja niiden käyttäjät ovat paikannettavissa. Matkapuhelimien MAC-osoitteita käytetään muun muassa markkinointitarkoituksiin. Osoitetta voi käyttää ihmisten liikkeiden seurantaan ja vaikkapa ostokäyttäytymisen tarkasteluun. Applen kännyköiden käyttöjärjestelmä IOS vaihtaa dynaamisesti mobiililaitteen MAC-osoitetta verkkoja etsiessään. Se vaikeuttaa puhelimen seurantaa.

 

Miten data paketoidaan Ethernet-kehykseen?
Sovelluksen palastelemaan dataan lisätään joka protokollakerroksella sen oma header-tiedosto, jossa on protokollan määrittämiä tietoja joita tarvitaan pakettien siirrossa lähettäjältä vastaanottajalle. Menemättä yksityiskohtiin seuraava kuva kertoo idean.

IP-paketin (datagram) minimikoko on 46 tavua ja maksimikoko 1500 tavua. TCP-headerin koko on 20 tavua, IP-headerin samoin.
Ethernet-verkossa käytettävä kehys, frame, on 14 + IP datagram + 4 tavua. Jos IP-datagrammi (kuvan verkkodata) ei mahdu Ethernet-kehykseen se palastellaan pienemmäksi.
Vastaanottopäässä sama tapahtuu päinvastaisessa järjestyksessä.
Kukin TCP/IP-pinon kerros purkaa oman headerinsa paketista, analysoi sen ja lopuksi sovellus saa datansa. Lopputulema on se, että selain päivittää tulostuksensa tuolla datalla.

Muissa ympäristöissä (mm. ATM, PPP, matkapuhelimien GPRS ja 3G) kehystäminen tapahtuu niiden järjestelmien ehdoilla. Tarkempi tutustuminen jääköön jokaisen oman motivaation varaan.

 

1. Rakenteellinen eli fyysinen kerros (physical layer)
Linkkikerros ja fyysinen kerros muodostavat yhdessä peruskerroksen.

Fyysinen kerros on ainoa, jossa määritellään konkreettisia, mitattavia asioita kuten liittimet, johtimet ja sähköiset tasot. Kaikki muut kerrokset sisältävät ohjelmistomäärittelyjä.
Fyysinen kerros on vastuussa bittien muuttamisesta sellaiseen sähköiseen muotoon, että ne kulkevat kaapeleissa. Se osaa toiminnot joilla bittijonot siirretään fyysisen laitteiston kautta toiseen laitteistoon. Tyypillinen Ethernet on kierretty parikaapeli.

  Klikkaa kuva suuremmaksi.

 

Siirtokerroksen ja fyysisen kerroksen toiminnot yhdistyvät NIC-verkkokortissa

1.1. Linkkikerros jolla on yhteys ylempiin kerroksiin
- kokoaa “ylhäältä saamansa” datan Ethernet-kehyksiksi yhdessä osoitteiden ja virheenkorjauksen kanssa
- purkaa kehykset vastaanotettaessa
- vuon valvonta ja virheenkorjaus (jos lähetyksessä törmäyksiä)
- yhtenäinen rajapinta erilaisille verkoille (muillekin kuin ethernet)

1.2. Fyysinen kerros
- bittien sisällyttäminen sähkösignaaliin (koodaus) ja siirtäminen siirtotielle, esim CAT5-kaapeli ja päinvastoin tulevalle signaalille

Verkkokortti, NIC, tai verkkoliitäntä (kuten RasPissa) koostuu tyypillisesti:
- RAM-muisti (luku-kirjoitus-muisti), DSP-signaaliprosessori, isäntäkoneen väylärajapinta sekä linkkirajapinta
- suorittaa Ethernet-kehystämisen ja purun

 

NIC, Network Interface Card, Verkkokortti. PCI-liitäntäinen Ethernet-verkkokortti ( https://fi.wikipedia.org/wiki/Verkkosovitin )

RasPin verkkoadapteri toimii samoin kuin NIC.

 

Yhteenveto
HTTP-aktiviteetti koostuu neljästä askeleesta:
1. selain avaa yhteyden palvelimeen
2. selain lähettää pyynnön palvelimelle: lähetä index.html (tai joku muu tiedosto)
3. palvelin vastaanottaa pyynnön ja palauttaa pyydetyn tiedoston
4. yhteys katkaistaan

Datan siirto
HTTP on protokolla, jota selain ja web-palvelin käyttävät tiedonsiirtoon. Web-palvelin kuuntelee porttia 80 ja odottaa, että asiakaspää lähettää pyyntönsä palvelimelle.
HTTP operoi sovelluskerroksessa ja siirtää HTML-tiedostoja, kuvatiedostoja ja muita resursseja.
Verkkoselain, esim Firefox, on asiakas, joka lähettää pyyntöviestejä Raspissa olevalle NGINX-web-serverille.
Pyyntöviestissä kerrotaan mitä tietoja ollaan hakemassa, esim serverin lämpöanturin tietoja, tai mitä serveriin asennettujen toimilaitteiden tulee tehdä.

Kun järjestelmä lähettää dataa käyttäen IP-protokollaa, data on palasteltu paketeiksi joita sanotaan datagrammeiksi. Useimmiten puhutaan vain paketeista. Datagrammi sisältää headerin joka sisältää osoitteet aivan kuten tavallisen postin kirjekuori, sekä muuta infoa jota IP-protokolla määrittää.

Jos lähetään vaikka viisi IP-pakettia, mikään ei takaa, että ne kaikki menevät perille tai että ne kulkevat samaa reittiä tai saapuvat perille oikeassa järjestyksessä. TCP-protokollan velvollisuus on hoitaa paketit järjestykseen.

 

Paluu pääsivulle:

 

 

Päivitetty 05/2024
Jaa somessa:
Punomo Logo

Kirjaudu Punomoon

Ei vielä Punomo tiliä? Rekisteröidy alla

Punomo Logo

Anna palautetta

Käyttäjiemme palaute auttaa Punomon kehittämisessä. Anna palautetta alla.