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 dataaa. 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)
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)
c. Mikä on pistoke (socket) ja kuinka se liittyy tietoliikenteeseen? (2 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)
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
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)
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)
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)