Telecommunications software and Multimedia Laboratory
in English

Tietokoneverkot

2001: Kotitehtävä 1 - Mallivastaus

Huomaa! Tämä mallivastaus on viitteellinen. Vastaukset eivät välttämättä ole täysin kattavia, mutta suuntaa-antavia kuitenkin. Lisäksi tässä on korostettu vain niitä asioita jotka arvostelussa olivat tärkeitä. Joskus mallivastauksiin on myös hiipinyt virhe, jos huomaat sellaisen, ilmoita toki kurssin assareille.


Tehtävä: IP ja muuta siihen liittyvää

  • Osoitteistus (7 pistettä)
    1. Mihin luokkaan kuuluu IP-osoite 82D9CB1F? Mikä se on desimaalimuodossa (dotted decimal notation)? Entä binäärisenä? (1.5 pistettä)

      Luokka: B
      Desimaalisena: 130.217.203.31
      Binäärisenä: 1000 0010 1101 1001 1100 1011 0001 1111

    2. Mikä on osoitteen 128.214.205.173/26 verkko-osuus? Entä kone-osuus? (0.5 pistettä)

      Verkko-osuus (ensimmäiset 26 bittiä) 128.214.205.128
      Koneosuus viimeiset 6 bittiä (128.214.128-128.214.205.191)

    3. Montako aliverkkoa yllämainitussa verkossa voi enintään olla? Entä montako konetta yhdessä aliverkkossa? (1.5 pistettä)

      Yllämainitussa B-luokan verkossa voi teoriassa olla 2**10 aliverkkoa (26-16=10 bittiä aliverkolle). Koneosoitteita on 2**6=64, joista varataan vielä ainakin verkolle ja broadcastille omat, joten maksimi 62.

    4. Mitä eroa on osoitepareilla 162.54.3.3/16 162.54.2.3/16 ja 162.54.3.3/24 162.54.2.3/24 reitittimen kannalta? (0.5 pistettä)

      Ensimmäiset kaksi ovat samassa aliverkossa, toiset kaksi eri.

    5. Millaisia ovat IP:n broadcast ja local broadcast -osoitteet? Mitä eroa niissä on? (1p)

      Broadcast: koneosan bitit ykkösiä
      Local broadcast: kaikki bitit ykkösiä, leviää vain omassa verkossa

    6. Kertaa itsellesi, mitä tarkoittaa, kun osoitteen verkko-osuus ja/tai koneosuus on 0.
      0-osoite (0.0.0.0) ja loopback-osoite (esim. 127.0.0.1) viittaavat molemmat tavallaan "tähän" laitteeseen. Mitä eroa niillä/niiden käytössä on? (1p)

      Loopback: käytetään kohdeosoitteena, ei mene verkkoon (vaan oman koneen protokollapinolle)
      0.0.0.0: Käytetään vain lähdeosoitteena, yleensä silloin kun ei tiedetä omaa osoitetta

    7. Mitä luulet, miksi IP-osoitteita ei jaeta maantieteellisesti, niinkuin esim. puhelinverkon osoitteiden (puhelinnumeroiden) jako on perinteisesti tehty? (1p)

      Mikä tahansa perusteltu mielipide hyväksyttiin.

  • ARP (ja RARP) (3 pistettä)
    1. Kokeile jossakin ATK-keskuksen koneessa (esim. alphassa tai vipusessa) komentoa /usr/sbin/arp -a. Mitä komento näyttää sinulle? Mistä tiedot haetaan? (noin 2 riviä) (0.5 p)

      Arp näyttää tietokoneen ARP-cachen sisällön, jossa säilytetään taulukkoa oman aliverkon koneiden IP- ja MAC-osoitteista.

      Esimerkiksi:

      alpha ~ 52 % /usr/sbin/arp -a
      chi.hut.fi (130.233.4.24) at 00-00-f8-40-b7-0e
      sentraali.hut.fi (130.233.224.37) at 08-00-2b-e2-95-14
      gamma.hut.fi (130.233.224.52) at 08-00-2b-32-b8-15
      pulteri.hut.fi (130.233.224.104) at 00-90-27-1b-79-f8 stale
      finger.hut.fi (130.233.224.30) at 08-00-2b-96-5d-5f
      rho.hut.fi (130.233.224.23) at 08-00-2b-9c-e3-9e
      psi.hut.fi (130.233.4.25) at 00-00-f8-40-b7-c8
      ns1.hut.fi (130.233.224.1) at 08-00-2b-e2-95-14
      hutnet-sw.hut.fi (130.233.227.254) at 00-e0-34-9c-6c-0a
      nftp.hut.fi (130.233.224.9) at 00-90-27-09-46-4d
      sigma.hut.fi (130.233.224.24) at 08-00-2b-96-5d-5f
      korppu-f.hut.fi (130.233.4.26) at 00-00-f8-40-b7-0e
      lerppu-f.hut.fi (130.233.4.27) at 00-00-f8-40-b7-c8
      beta.hut.fi (130.233.224.51) at 08-00-2b-31-ba-9a
      moppe.hut.fi (130.233.224.29) at 00-50-8b-b0-0c-f6 stale
      alpha ~ 53 % 
      
    2. Miksi ARPia ei pidetä kovin turvallisena? (0,5 p)
      Anna esimerkki hyökkäyksestä, jossa käytetään ARPia. (1 p)

      ARPissa toimii broadcasteilla siten, että laite jonka tarvitsee saada selville jonkin toisen koneen MAC-osoite lähettää koko aliverkolle broadcast-kyselyn joka sisältää kohdekoneen IP-osoitteen. Tämän jälkeen kohdekone lähettää oman MAC-osoitteensa vastaukseksi. Samalla kaikki muutkin aliverkon koneet poimivat kohdekoneen IP-osoitteen ja MAC-osoitteen omaan ARP-tauluunsa talteen.

      Ongelma piilee siinä että ARP-kyselyyn vastaavaa konetta ei autentikoida mitenkään, jolloin vihamielinen taho voi yrittää vastata kyselyyn ennen oikeaa konetta ja näin saada aliverkon koneet lähettämään oikealle vastaanottajalle tarkoitetut paketit hyökkääjälle.

    3. RARP (Reverse ARP) on protokolla, jolla laite saa selville oman IP-osoitteensa. RARP:in käyttö alkaa kuitenkin olla poissa muodista. Mainitse joku muu protokolla, joka ajaa saman asian, ja kerro jokin asia, joka siinä on toteutettu paremmin kuin RARP:issa. (1 p)

      Esimerkiksi DHCP pystyy hoitamaan kaikki RARP:n tehtävät. DHCP kykenee välittämään verkkoon liittyvälle koneelle huomattavasti kattavammat alkutiedot (esimerkiksi verkon reitittimen osoitteen) kuin RARP. Lisäksi DHCP voidaan toteuttaa sovelluksena.

  • IP ja mitä sen alta löytyy (7 pistettä)
    1. Mikä on MTU ja miten se liittyy fragmentointiin? (vastauksen pituus n. 3 riviä) (0.5 p)

      MTU (Maximum Transfer Unit) kertoo suurimman mahdollisen paketin koon jonka siirtotie pystyy välittämään. MTU:ta suuremmat paketit on pilkottava (fragmentoitava) useampaan osaan.

    2. Kokeile jossakin ATK-keskuksen koneessa komentoa /usr/sbin/netstat -in. Mikä on loopbackin MTU? (Kerro myös missä koneessa kokeilit.) (0.5 p)

      Esimerkiksi:

      kosh ~ 54 % /usr/sbin/netstat -in
      Name  Mtu   Network        Address               Ipkts Ierrs    Opkts Oerrs  Coll
      tu0   1500           08:00:2b:c4:5b:a7  449142053     0 385453320     3     0
      tu0   1500  130.233.228/26 130.233.228.10     449142053     0 385453320     3     0
      tu1   1500           08:00:2b:c5:8b:8d  206254573     0 162947291     4     0
      tu1   1500  130.233.248/24 130.233.248.10     206254573     0 162947291     4     0
      sl0*  296                                      0     0        0     0     0
      lo0   4096                              83771488     0 83771488     0     0
      lo0   4096  127/8          127.0.0.1          83771488     0 83771488     0     0
      ppp0* 1500                                     0     0        0     0     0
      
      Koshin loopbackin MTU on 4096
    3. ATM käyttää 53 oktetin soluja, joissa hyötykuorman osuus on 48 oktettia. Kuinka moneen osaan IP fragmentoi paketin, jonka koko on 1400 tavua ja joka siirretään ATM:llä? Entä paketin, jonka koko on 10000 tavua? (Ohje: katso Comer(4th ed) 18.11) (1 p)

      IP:n MTU ATM:n päällä on 9180 (Comer 18.10), joten 1400 tavun paketti siirtyy sellaisenaan ja 10000 tavun paketti fragmentoidaan kahteen osaan.

    4. IP-otsakkeessa on vaihtelevan pituinen optiot-kenttä. Mahdollisia optioita ovat mm. Loose source route ja Strict source route. Miksi on kaksi erilaista source route -optiota? (1p)
      Mitä haittaa source route -option käytöstä voi olla? (1 p)

      Strict source route määrittelee jokaisen reitittimen jonka kautta paketin on vain ja ainoastaan kuljettava määränpäähänsä.

      Loose source route määrittelee joukon reitittimiä joiden kautta paketin on kuljettava, eli määrittelee osan reittiä.

      Source routeilla voidaan diagnosoida reititystä ja estää paketin kulku jonkun tietyn organisaation hallinnoiman aliverkon halki. Haittana on mahdollisuus että joku määritellyistä reitittimistä ei olekaan toiminnassa ja paketteja ei voida toimittaa varayhteyttä pitkin perille.

    5. Koulukirjan perusesimerkissä IP:n alta löytyy yleensä Ethernet. Mitä protokollia IP:n alla voi olla soittaessasi modeemilla ISP:n soittosarjaan? Anna kaksi vaihtoehtoa ja kerro lyhyesti, miten ne eroavat toisistaan. (2 p)

      SLIP (Serial Line Interface Protocol) ja PPP (Point to Point Protocol).

      PPP on SLIPiä uudempi ja monin tavoin parempi protokolla. PPP ei ensinnäkään SLIPin tavoin ole sidottu vain TCP/IP-liikenteeseen vaan muutkin siirtoprotokollat käyvät. PPP yhteydellä voidaan soittajakoneen IP-osoite neuvotella dynaamisesti ja PPP sisältää valinnaisen autentikoinnin. PPP sisältää virheentunnistuksen on virallinen standardi.

    6. Miten IP kulkee runkoverkossa: Kerro, mitä siirtotekniikoita käytetään uudessa Funet2001-verkossa. (1p)

      Runkoverkossa käytetään PoS- (Packet over Sonet/SDH) ja ATM-tekniikoita. Verkkoon voi liittyä myös Ethernet-tekniikalla. Suurimmat PoS-tekniikalla käytettävät nopeudet ovat STM16-tasoa (2,5Gbit/s).

  • ICMP (8 pistettä)
    1. Miksi jotkut verkkoylläpitäjät haluavat filtteröidä ICMP-paketit pois? Miten se vaikuttaa käytettävyyteen? Entä näkyvyyteen verkossa? (3p)

      ICMP denial-of-service-hyökkäyksillä on onnistuttu kaatamaan monet huonosti ohjelmoidut TCP/IP-pinot ja jotkut verkkoylläpitäjät yrittävät suojata koneitaan suodattamalla kaikki ICMP viestit verkon palomuurilla. Toinen syy suodatukseen on verkon koneiden statuksien kyselemisen estäminen ping- ja traceroute-ohjelmilla.

      Jos kaikki ICMP-liikenne filtteröidään, työasemat eivät kuitenkaan kykene vastaanottamaan verkko-ongelmistakaan, kuten liian isosta MTUsta, kohdekoneen toimimattomuudesta tai vääristä osoitteista, kertovia ICMP-viestejä. Näin ollen koneen käytettävyys kärsii ja koneen käyttäjä voi olla ihmeissään verkon "takkuilusta".

      Tietokoneen näkyvyyteen verkossa ICMP-viestien suodatus vähentää tavallisen tietokoneenkäyttäjän mahdollisuutta selvittää koneiden olemassaoloa. Erilaiset stealth-skannerit löytävät kyllä verkon koneet ilman ICMP:täkin.

    2. Jos et ennestään tunne traceroute-ohjelmaa, niin kokeile sitä jossakin koneessa, esim. komennolla /usr/sbin/traceroute www.userfriendly.org
      Tehtävänäsi on hahmotella ohjelma, joka toteuttaa yksinkertaistetun version traceroutesta. Tracerouten toimintaperiaate löytyy kirjan lisäksi esim. vanhoista mallivastauksista. Voit hahmotella toimintaa esim. pseudokoodilla, javalla tai C:llä. Voit olettaa, että kaikki reitittimet lähettävät kiltisti tarvittaessa Time Exceeded -viestejä, ja että sinulla on jokin yksinkertainen rajapinta protokollaohjelmistoon, esim. jos käytät C:tä, voi käyttää jotain seuraavan tapaista rajapintaa:
      #define TIME_EX 11
      typedef IPaddr int;
      struct icmp_struct{ IPaddr source; int icmp_type };
      typedef struct icmp_struct my_icmp; 
      
      void sendpacket(IPaddr dest, int ttl);
      my_icmp * receivepacket();
      
      HUOM! Tarkoitus ei ole toteuttaa toimivaa ohjelmaa, vain hahmotella tracerouten toimintaa algoritminomaisesti.
      (5 p)

      Tämän tehtävän tarkoituksena oli pistää opiskelijat muistelemaan miten se ohjelmointi tapahtuikaan. Samalla tarkistettiin että opiskelijat tuntevat sellaiset ohjelmoinnin peruselementit kuten silmukka ja ehtolause.

      3 pisteen vastaus sisälsi jotain ohjelmakoodin rakenteeseen viittaavaa tekstiä, vähintään yhden silmukan, lähetä/vastaanota-kutsun ja jonkin tulostusmenetelmän.

      4 pisteen vastaus ei sisällä triviaaleja ohjelmavirheitä kuten ohjelman päätymistä loputtomaan silmukkaan (=huonot ehdot) jos esimerkiksi kohdekone ei vastaa ym.

      5 pisteen vastaus on jo potentiaalisesti toteutettavissa ja sisältää mahdollisesti jotain ylimääräistä minimivaatimuksiin nähden.

      Alla on yksi mahdollinen koodinpätkä (lukemattomista vaihtoehdoista) jossa esiintyvät tarvittavat perusasiat:

      DEFINE time_exceeded 66
      DEFINE max_hops 255
      
      for (i=0; i<maxhops; i++) {
        sendpacket(destination, i);
        if ((tmp = receivepacket)->icmp_type == 'time_exceeded')
          break;
        print("%d", tmp->source);
      }
      

    Tämän sivun sisällöstä vastaavat verkkojen assarit, sähköposti: verkot@tml.hut.fi
    Sivun sisältöä on viimeksi päivitetty 1.2.2001.
    URL: http://www.tml.hut.fi/Opinnot/Tik-110.350/2001/tehtava_01_malli.html