58133 Tietoliikenne I

Kurssikokeen 9.3.2004 arvosteluperusteita ja ratkaisuja

Tehtävän 1 on arvostellut Olli Alm
Tehtävän 2 on arvostellut Mikko Rauhala (arvosteluperusteet puuttuvat vielä)
Tehtävän 3 on arvostellut Ismo Puustinen
Tehtävän 4 on arvostellut Liisa Marttinen

1. Opiskelija Aina Ahkeran ystävä on lähtenyt vaihto-oppilaaksi yliopistoon, josta myös on yhteys Internetiin.
a. Piirrä kaaviokuva Aina Ahkeran ja hänen ystävänsä koneita yhdistävästä TCP/IP-verkosta, jossa on sekä reitittimiä (router), siltoja (bridge), keskittimiä (hub), kytkimiä (switch) ja toistimia (repeater) ja näitä yhdistäviä siirtolinkkejä (link). (3 p)

Järkevästä kaaviokuvasta sai 3 pistettä.
Toistimet hyväksyttiin sekä lähiverkossa että runkolinjoilla. Keskittimet hyväksyttiin lähiverkossa. Silta ja kytkin saivat esiintyä lähiverkon läheisyydessä, eivät keskellä reititinverkkoa. Siirtolinkeillä tarkoitettiin tehtävässä laitteita yhdistäviä linjoja, ei laitetta.

Selkeä kuva ja kaikki laitteet: 3p
Pieniä kummallisuuksia, kuten jonkin laitteen puuttuminen, laite väärässä paikassa tai epämääräisiä yhdistelmiä: 2p
Paljon kummallisuuksia ja epäselvyyksiä: 1p
Puuttuva tai järjetön kuva: 0p

b. Mitkä TCP/IP-protokollapinon tasot on toteutettu kussakin näistä laitteesta ja mitä protokollia niissä tarvitaan? (6 p)

TCP/IP protokollapino:
sovelluskerros
kuljetuskerros
verkkokerros
linkkikerros
fyysinen kerros

Laitteiden toteuttamat pinon tasot:
siirtolinkki: ei mitään / fyysinen
toistin, keskitin: fyysinen
silta, kytkin: fyysinen, linkki
reititin: fyysinen, linkki ja verkko
Ainan kone: fyysinen, linkki, verkko, kuljetus ja sovelluskerros

Eri tasoilla toteutettavia protokollia:
Sovellus: smtp, pop3, dns, http, imap, ftp, jne
Kuljetus: tcp, udp
Verkko: ip, arp, rarp
Linkkikerros: ethernet osoitteet, csma/cd...
fyysinen kerros: -

Pisteytys:
protokollapino oikein, laitteet oikein ja muutamia esimerkkejä protokollista 6p.
Alemmat protokollat puuttuvat laitteen kohdalta: -1-2 p. Esimerkiksi reititin on verkkotason olio, mutta siinä on toteutettu myös alemmat protokollapinon tasot, fyysinen ja linkkikerros.
Puuttuvat esimerkit protokollista: -1-2p.
Epäselvyyksiä laitekohtaisissa pinon tasoissa: -1-3 p

c. Aina lähettää sähköpostiviestin ystävälleen. Mitä kaikkia protokollia tarvitaan, ennenkuin sähköpostisanoma on luettavissa ystävän koneella? (6 p)
Tässä tehtävässä on keskeistä ymmärtää protokollapinon merkitys: protokollapinon ylempien tasojen protokollat käyttävät protokollapinon alempia protokollia hyväkseen. Sovellustason protokolla (SMTP, DNS, IMAP) pyytää kuljetuskerroksen palveluita (TCP/UDP), joka pyytää verkkokerroksen palveluita (IP/ARP), joka pyytää siirtoyhteys/linkkikerroksen palveluita. Sovellustason protokollia käyttävät Ainan kone, ystävän kone sekä molemmat postipalvelimet.

1. Aina lähettää viestin: SMTP, TCP, IP, MAC... -DNS + alemmat kerrokset, jos Aina postipalvelimen IP-osoite ei ole tiedossa -lähiverkoissa ARP / RARP verkkokerroksella

2. Postipalvelin etsii vastaanottajan, käyttää DNS:ää DNS, TCP, IP, MAC...

3. Postipalvelin lähettää viestin ystävän palvelimelle: SMTP, TCP, IP, MAC...

4. Ystävä hakee viestin palvelimeltaan: IMAP / POP3, TCP, IP, MAC... -HTTP viestin lukemiseen tarvittaessa.

Pisteytys:
-Selkeä esitys, ylemmistä protokollista SMTP, POP3/IMAP ja DNS mukana. Alempien kerrosten toiminta käy ilmi esityksestä, mukana TCP, IP ja lähiverkon vaikutus (ARP). 6p.
-Protokollia puuttuu -1-2 p.
-Alempia kerroksia ei mainita, liian yleinen esitys -1-2 p.
-Epäselvästä esityksestä -1-2 p.

2. Koneen A kuljetuskerros (transport layer) saa sovelluskerrokselta (application layer) kuljetettavaksi 2000 tavua dataa isäntäkoneelle B. A ja B sijaitsevat vierekkäisissä verkoissa, joiden välissä on reititin. A:n lähiverkossa (LAN1) yhdessä kehyksessä voi kuljettaa korkeintaan 1500 tavua dataa ja B:n lähiverkon (LAN2) kehyksessä voi kuljettaa korkeintaan 1000 tavua dataa. Oletetaan, että seuraavaksi käytettävä IP-paketin (tai datagrammin) numero koneessa A on 100.


                  A - XXXXXXXXX - reititin - XXXXXXXXXXXX - B

                     verkko LAN1              verkko LAN2

              maks. 1500 tavua dataa      maks. 1000tavua dataa
a. Millaisia IP-paketteja A lähettää? Mitä reititin tekee näille paketeille? Millaisia IP-paketteja B vastaanottaa? Esitä lähetettyjen ja vastaanotettujen IP-pakettien pakettien paloitteluun (fragmentation) liittyvien otsakekenttien sisältö sekä datakentan sisältö. (10 p)

b. Voiko pakettien paloittelu aiheuttaa turvallisuusongelmia isäntäkoneille? Jos voi, niin miten ja millaisia ja voiko niitä mitenkään estää? (3 p)

3. Millä eri tavoin TCP-prorokolla pyrkii varmistamaan tiedonsiirron luotettavuuden eli millainen on pääpiirteissään TCP-protokollan käyttämä
Kaikki tehtävän kohdat olivat esseekysymyksiä. Arvostelussa tämä huomoitiin siten, että vastauksen piti olla jotenkin loogisessa järjestyksessä ja aukikirjoitettu. Vastauksissa tiettyjen asioiden ansiokkaalla selvittämisellä saattoi kompensoida puutteita toisissa asioissa.

a. virhevalvonta (error control), (5 p)
TCP pyrkii virheettömään tiedonsiirtoon: havaitsemaan virheet ja toipumaan niistä.
Checksum lasketaan segmentille, otsakkeelle ja pseudo-otsakkeelle. Tässä pisteitä annettiin siitä, että osattiin kertoa oikein, miten checksum lasketaan lähettäjän ja vastaanottajan päissä ja mihin sitä tarvitaan. Hamming-koodauksen, pariteettibittien tai CRC:n selityksestä ei saanut pisteitä. (3 p)
Virheettömät ja oikeassa järjestyksessä vastaanotetut paketit kuitataan; numeroinnista sovitaan yhteyttä muodostettaessa. Jos kuittaus ei tule ajoissa, paketin ajastin laukeaa ja lähettäjä lähettää paketin uudelleen vastaanottajalle. TCP ei käytä NAK-kuittauksia (paitsi kolmen duplikaatti-ACK:in aiheuttamaa pikalähetystä). (2 p).

b. vuonvalvonta (flow control), (3 p)
Koska kysymyksessä kysyttiin nimenomaan TCP:n vuonvalvonnan piirteistä, yleisen vuonvalvonnan idean selittäminen ei sinänsä riittänyt vastaukseksi.
TCP käyttää joustavaa ja dynaamista liukuvan ikkunan menetelmä (sliding window). Jokaisessa kuittauksessa on mukana ilmoitus uudesta ikkunan koosta eli paljonko on tilaa vielä vastaanottajan puskurissa (RcvWindow-kenttä). Tämä kerrotaan myös jo alkukättelyssä. Liukuvan ikkunan periaatteen, ikkunan täyttymisen ja ikkunan liikkumisen havainnollistaminen kuvin, tekstein yms. helpotti pisteiden saamista. Myös kertominen, miten menetellään vastaanottoikkunan koon ollessa 0, oli hyödyllistä. Tämä oli myös oikea kohta kertoa pakettien numeroavaruuden koon merkityksestä, jos halusi. (3 p)

c.ruuhkanvalvonta (congestion control)? (6 p)
TCP-ruuhkanvalvontaan kuuluu seuraavia asioita:
Hidas aloitus: aloitetaan yhdellä segmentillä ja kasvatetaan lähetysmäärä kaksinkertaiseksi aina kun saadaan edelliseen lähetykseen kuittaus ajoissa.
Lineaarinen kasvautus: kun saavutetaan kynnysarvo (merkki siitä, että aletaan olla lähellä ruuhkaa aiheuttavaa lähetysmäärää), niin kasvatetaan vain yhdellä segmentillä.
Jos kuittaus ei tule ajoissa ja ajastin laukeaa => tulkitaan tilanne ruuhkaksi ja vähennetään lähetystä perusversiossa aloitetaan uudestaan hitaalla aloituksella. Myös kynnysarvoa muutetaan puoleen ruuhkahetken lähetysmäärästä.
Näiden selittämisestä sai 3-4 p.

Aina ajastimen laukeaminen ei johdu ruuhkasta, vaan myös esim. siirtovirheestä. Tällaisessa tilanteessa on turha vähentää lähetysmäärää, sen sijaan syytä mahdollisimman nopeasti lähettää uudelleen virheellinen paketti. Tätä varten on kehitetty ns. nopea uudelleenlähetys (fast retransmission): kolmas toistokuittaus kertoo, että paketti on puuttunut jo liian kauan ja muut sen jälkeiset paketit menneet hyvin perille => ei varmaankaan ruuhkaa, vaan virheellinen paketti, joka syytä lähettää heti uudestaan eikä odottaa ajastimen laukeamista. (1 p)
Nopea toipuminen (fast recovery): koska oletettavasti ei ole ruuhkaa pudotetaan lähetysmäärä vain puoleen ja jatketaan siitä lähettämistä. Samoin uudeksi kynnysarvoksi tulee puolet sen hetkisestä lähetysmäärästä. (1 p)
Ajastimen arvon laskeminen ja ajastimen merkitys ruuhkanvalvonnalle (1 p)

4. Vastaa lyhyesti, muutamalla lauseella seuraaviin kysymyksiin (8 p):
Kunkin kohdan vastaus on tuottanut 0, 1/2, 1, 1 1/2, 2 pistettä. Tarvittaessa on käytetty myös miinuksia ja plussia. Eri kohtien pisteet on laskettu yhteen ja tulos on pyöristetty kokonaisluvuksi. Mitä enemmän 'oikeaa' asiaa vastaus on sisältänyt, sitä enemmän on saanut pisteitä.

a. Mihin tarvitaan ARP-protokollaa? Miten se toimii? (2 p)
ARP-protokollan avulla selvitetään IP-osoitetta vastaava MAC-osoite (koneosoite, fyysinen osoite, verkkokortin osoite). Reitittimen tai isäntäkoneen verkkokerros tuntee vain vastaanottajan IP-osoitteen. Jotta paketti pystyttäisiin lähettämään oikealle lähiverkon koneelle, tulee tietää tätä IP-osoitetta vastaava MAC-osoite. (1 p)
Jos MAC-osoite ole tiedossa, niin ARP-protokollalla lähetetään yleislähetyksenä kysely:"Kenellä on IP-osoite ?". Tähän vastaa se lähiverkon kone, joka tunnistaa osoitteen omakseen, ilmoittamalla oman MAC-osoittensa. (1 p)

b. Tuntumattomassa sillassa (transparent bridge) on liitännät useihin lähiverkkoihin. Miten silta oppii tietämään, mistä suunnasta eri koneet löytyvät? Miten silta toimii, jos se ei tiedä, minkä liitännän kautta vastaanottaja tavoitetaan? (2 p)
Silta kuuntelee 'nuuskija'-moodissa (=tutkii kaikki kehykset) kaikkissa siihen liitetyissä lähiverkoissa kulkevaa liikennettä ja kerää siltatauluunsa tiedot kehysten lähettäjistä ja siitä, mistä portista (eli mistä lähiverkosta) kehys tuli. (1 p)
Kun tulee tarve lähettää, silta usein löytää omasta siltataulustaan tiedon vastaaottajan portista. Jos tietoa ei ole, silta tulvittaa kehyksen kaikkiin muihin portteihin paitsi siihen, josta kehys tuli. Jotta tulvitus ei aiheuttaisi ongelmia, silloista pitää muodostaa ns. virittävä puu (eli ei saa olla silmukoita). (1 p)

c. Mikä on pistoke (socket) ja kuinka se liittyy tietoliikenteeseen? (2 p)
Pistoke on ohjelman liitäntä tietoliikenteen palveluihin eli kuljetuskerroksen (transport layer) palveluihin, kuten TCP ja UDP. Pistokkeen avulla ohjelma voi lähettää verkkoon tai vastaanottaa verkosta dataa samalla tavoin kuin se lukee tiedostosta tai kirjottaa tiedostoon. (1 p)
Kuljetuskerroksella ns. porttiosoite identifioi kommunikoivat osapuolet prosessin tarkuudella. (IP osoite identifioi koneen tarkkuudella.) Ohjelmallista käsitettä pistoke vastaa tietoliikenteen käsite portti. Käytännössä molemmat yleensä liittyvät tiettyyn puskuriin, johon verkosta tiettyyn porttiin tuleva data siirretään ja josta ohjelma käy sen lukemassa. (1 p)

d. Mitä tarkoitetaan tavun lisäämisellä (byte stuffing)? Missä sitä tarvitaan ja miksi? (2 p) Tavunlisäyksessä käytetään erityismerkityksellistä tavua ilmoittamaan siitä, että datassa esiintyvä erityismerkityksellisen tavun, esim. kehyksen lopetusmerkin näköinen tavu, ei oikeasti olekaan lopetusmerkki, vaan pelkkää dataa. Näin datassa voi esiintyä mitä tahansa tavuja tai bittikombinaatioita. (1 p)
Jotta bittivirtaan voidaan lisätä tarkistusbitteja, niin bittivirta on jaettava kehyksiin. Linkkikerros rajaa datan kehyksiin, joiden alku ja loppu ilmoitetaan yleensä jollakin erityisellä ns. lipputavulla. Näin toimitaan mm. PPP-protokollassa. Tavunlisäyksellä merkataan datassa olevat lipputavut, jotta niitä ei sekoiteta kehystystavuihin. (1 p)