TÄMÄ SIVU AUKEAA TYYLIKKÄIMMIN NETSCAPELLA - IE:LLÄKIN TÄSTÄ SAA KYLLÄ JOTENKIN SELVÄÄ !


2. JOHDATUS YHTEYSKÄYTÄNTÖIHIN

 

Lähdemme nyt tarkastelemaan, miten edellisessä luvussa esitellyn kaltaisia ja muita, käyttäjän omista tarpeista lähteviä tiedonsiirtoa käyttäviä sovelluksia toteutetaan. Lähtökohtana ovat sovellukselle asetettavat vaatimukset, joista tärkeimpiä ovat

 

      tiedonsiirron virheettömyys

      riittävä siirtonopeus

      luottamuksellisuus

      standardien mukaisuus, jotta vastaanottaja kykenisi tulkitsemaan tiedot sekä

      kaiken tämän toteuttaminen mahdollisimman alhaisin kustannuksin.

 

Vaatimukset ovat osaksi keskenään ristiriitaisia ja etenkin mahdollisia virhetilanteita on lukuisia erilaisia tiedonsiirron eri vaiheissa. Lisäksi vaatimusten painoarvo ja keskinäinen tärkeysjärjestys vaihtelee tapauksesta toiseen. Jotta tilanne pysyisi hallinnassa sovellus on jaettava osiin, joista kukin ratkaisee yhden osaongelman.

 

2.1 Asiakas – palvelinperiaate

 

Tietoliikennettä käyttävä sovellus (sähköposti, WWW-palvelu, jossain muualla sijaitsevan tieto­koneen etäkäyttö, firman oma kirjanpito- tai tilaustenkäsittelysovellus…) voidaan karkeasti jakaa seuraaviin osiin

 

      tietokone, jonka ääressä käyttäjä istuu, ja siinä käytössä oleva ohjelma

      toinen tietokone ohjelmineen, jolta käyttäjä voi oman tietokoneensa ja tietoliikenneyhteyden välityksellä pyytää palveluja sekä

      jonkinlainen koneita yhdistävä tietoliikenneverkko, jonka välityksellä ohjelmat kommuni­koivat keskenään.

 

Ensimmäisestä, käyttäjän kanssa kommunikoivasta ohjelmasta käytetään tavallisesti nimitystä asiakas (client) ja toisesta ohjelmasta nimitystä palvelin (server).

 

Toisinaan, esim. pelattaessa jotakin peliä verkon yli, on kysymys kahden eri tietokoneen ja niiden käyttäjien välisestä kommunikoinnista ja tilanne on melko symmetrinen (käytetään nimityksiä peer-to-peer tai client-client). Tällöin toiminnan aloittaja (perinteistä puhelinterminologiaa käyttäen A-tilaaja) on teknisessä mielessä asiakas ja toinen osapuoli (B-tilaaja) palvelin. Jos taas on kysymys monenkeskisestä tiedonsiirrosta yhdellä palvelimella voi olla useita asiakkaita tai asiakkaan ja palvelimen roolit voivat vaihdella tilanteen mukaan (esim. A pyytää palvelua B:ltä ja tämä puoles­taan C:ltä).

 

2.2 Ohjelman pääosat

 

Sekä asiakas- että palvelinohjelma jakautuvat edelleen pienempiin osiin. Eräs tärkeä rajapinta (interface) on jako varsinaiseen sovellukseen (esim. sähköposti) ja tietoliikenneosaan. Tietoliikenneosa on käytännössä joukko aliohjelmia (funktioita, metodeja). Tietoliikenneohjelmisto hankitaan yleensä valmiina. Asiakas- ja palvelinkoneen tietoliikenneohjelmat kommunikoivat keskenään jonkin verkon välityksellä. Myös sovellusohjelman asiakas- ja palvelinosat kommunikoivat (näennäisesti eli virtuaalisesti) suoraan keskenään. Tietoliikenneohjelma ja verkko toimivat välissä läpinäkyvästi ja huolehtivat monista tavallisista, sovelluksesta riippumatta samantapaisina toistuvista tietoliikenteeseen liittyvistä tehtävistä, mm. siirtovirheisiin varautu­mi­sesta ja niiden korjaamisesta mahdollisuuksien mukaan. Näitä rutiinitoimintoja ei siten tarvitse ohjelmoida joka sovellusta varten aina uudelleen. Tietoliikennepakkauksen käyttö on käytännössä varsin samantapaista kuin valmiiksi ohjelmoitujen syöttö- ja tulostusaliohjelmien tai tiedostojen käsittelyrutiinien käyttö.

 

 

                      Asiakas                                                       Palvelin

 

 

Kuva 2.1 Tietoliikennettä käyttävän sovelluksen pääosat

 

Sovellusohjelmat lähettävät toisilleen toiminnan aloittamiseen ja lopettamiseen sekä tiedonsiirron varsinaiseen tarkoitukseen (esim. sähköpostin välitykseen) liittyviä viestejä. Tietoliikenne­pakkauk­sen tarjoaman palvelun vuoksi sovellusohjelman laatija voi olettaa, että lähetetyt viestit myös aikanaan saapuvat virheettöminä perille. Tietoliikennepalvelu huolehtii myös mm. viestien pilkkomisesta siirron kannalta sopivan pituisiksi pätkiksi ja niiden uudelleen kokoamisesta.

 

Sovellusohjelmien toisilleen lähettämien viestien on oltava tiukasti määrämuotoisia, jotta vastaan­ottaja kykenisi tulkitsemaan ne. Sen sijaan tapa, jolla tietoliikennealiohjelmia kutsutaan, ja parametrien järjestys riippuu käytettävästä ohjelmointikielestä ja jossain määrin myös ko. tieto­koneen käyttöjärjestelmästä, joten ohjelmien siirtäminen uuteen ympäristöön vaatii enemmän tai vähemmän tapauskohtaista sovitustyötä.

 

2.3 Tietoliikenneprotokolla

 

Tietoliikenneprotokolla eli yhteyskäytäntö on kahden jonkin tietoliikenneyhteyden välityksellä keskenään kommunikoivan ohjelman noudattama menettelytapasopimus, jossa on spesifioitu

 

      miten tiedonsiirto aloitetaan ja lopetetaan ja mitä tietoja kussakin vaiheessa siirretään

      varaudutaanko virhetilanteisiin ja miten virheen sattuessa menetellään sekä

      ohjelmien välillä välitettävien sanomien muoto yksityiskohtaisesti.

      Sen sijaan protokollan käyttäjän esittämien palvelupyyntöjen osalta riittää listata, mitä palvelupyyntöjä on olemassa ja mitä tietoja (parametreja) kunkin pyynnön yhteydessä tarvitaan. Palvelupyyntöjen yksityiskohtainen muoto ei vaadi standardointia osapuolten välillä.

 

Ohjelman toimintaa voidaan havainnollistaa esim. digitaalitekniikasta tuttua tilakone-esitystä käyttäen. Protokolliksi kutsutaan sekä em. määrittelyt sisältäviä standardeja että niiden reali­saatioita, sääntöjen mukaisesti toimivia ohjelmia.

 

Esimerkki Tietokannassa on tietoja firman tuotteista, niiden hinnoista ja saatavuudesta. Asiakaspuolen sovellusohjelma kommunikoi käyttäjän kanssa ja lähettää palvelimelle sopivalla tavalla koodattuja sanomia ja saa vastauksia, jotka liittyvät esim.

 

      toiminnan aloittamiseen ja käyttäjän tunnistukseen

      tuotteiden saatavuutta ja hintoja koskeviin kyselyihin

      tilausten tekemiseen tai

      toiminnan lopettamiseen.

 

Tietoliikennepalvelujen käyttäjärajapintaan voi kuulua esim. seuraavan tapaisia funktioita (paluu­para­metrit on selvyyden vuoksi merkitty tähdellä):

 

          open(source port, destination port, destination URL, connection id*, error*)

          waitfor_open(destination port, connection id*, error*)

          send(connection id, data, ack, window, error*)

          receive(connection id, data*, ack*, window*, end*)

          close(connection id)

 

Tietoliikenneohjelmiston kannalta edellä mainitut sovellukseen liittyvät sanomat ovat vain välitet­tävää tietoa, jonka sisältöön ei kiinnitetä mitään huomiota. Tietoliikenneohjelmiston tehtävänä on vain lähettää sanomat luotettavasti toiselle osapuolelle.

 

Edellä esitetty sovelluksen ja tietoliikenneohjelmiston välinen rajapinta on sekä periaatteelliselta kannalta että käytännön ratkaisuissa muodostunut sangen keskeiseksi, koska käytännöllisesti katsoen jokaiselle tietokoneelle on saatavissa palvelun toteuttava aliohjelmapakkaus, joka vapauttaa tiedonsiirtoa käyttävän sovellusohjelman laatijan monista varsinaiseen sovellukseen liittymättömistä ohjelmointitehtävistä.

 

Esimerkkinä siitä, millaisia sanomia protokolla noudattavat osapuolet lähettävät toisilleen, tarkastellaan joukkoa (kuvitteellisia ja idealisoituja, mutta mahdollisia) sanomia, joita käyttäen tietoliikenneohjelmat voisivat kommunikoida keskenään jonkin siirtotien välityksellä.

 

 

Kuva 2.2  Tietoliikenneohjelmien toisilleen lähettämiä kehyksiä

 

 

 

Sanoman ensimmäinen kenttä kertoo, minkä tyyppisestä sanomasta on kysymys (järjestyksessä: aloituspyyntö, vastaus siihen, tavallinen datakehys, datan kuittaus – onnistuiko – ja lopetuspyyntö). Yhteyttä muodostettaessa sille annetaan viitenumero, jota seuraavissa kehyksissä käytetään. Viimeinen kenttä puolestaan on tarkiste, jonka arvo voidaan laskea muiden kenttien perusteella. Kun laskettua arvoa ja vastaanotetussa kehyksessä olevaa tarkistetta verrataan toisiinsa, voidaan havaita, onko kehykseen tullut matkalla bittivirheitä. Kehyksen järjestysnumeroa tarvitaan mahdollisen uudelleenlähetyspyynnön yhteydessä.

 

Edellä mainittu sovellustason sanoma kulkee nyt datakehyksen sisällä eikä sen sisällöllä ole tällä tasolla merkitystä.