Tietoliikenteen perusteet, Kevät 2007

Harjoitus 4 (ti 3.4., ke 4.4. ja to 12.4. (välissä pääsiäisloma)

  1. Stop and wait -protokolla (tai vuorottelevan bitin protokolla) rdt3.0.
    1. Esitä kaaviokuvana, kuinka protokolla rdt3.0 toimii, kun ensin katoaa paketti ja sitten uudelleenlähetetyn paketin kuittaus.
    2. Miksi 1-bittinen järjestysnumero (käytössä siis numerot 0 ja 1) riittää 'stop and wait' -protokollassa? Tutki protokollan toimintaa ja päättele sen perusteella, ettei useampia numeroita tarvita erottamaan lähetykset toisistaan, vaikka lähetetty sanoma voi kadota kokonaan tai vääristyä virheelliseksi. Entä voivatko pitkäksi aikaa viivästyneet lähetykset aiheuttaa ongelmia?
    3. Onko myös kuittaukset ACK ja NAK numeroitava 'stop and wait' -protokollassa? Tutki taas protokollan toimintaa eri tilanteissa ja selvitä, löytyykö tilannetta, jossa numeroimaton ACK tai NAK aiheuttaa ongelmia.
    4. Toimiiko rdt3.0-protokolla, jos välissä oleva linkkiyhteys voi muuttaa sanomien järjestystä? Perustele vastauksesi osoittamalla kaaviona tilanne, jossa protokolla toimii väärin tai selvitä, miksi tällaista tilannetta ei voi syntyä.

  2. Ikkunan koko ja numeroiden määrä
    1. Osoita, että 'Go-Back-N':ää käytettäessä syntyy ongelmia, jos numeroita on käytössä 8 (0, 1, ...7) ja ikkunan koko on 8. Jos ikkunan koko on 7, niin mitään ongelmia ei ole.
    2. Osoita, että valikoivaa toistoa (Selective Repeat) käytettäessä syntyy samoilla numeroilla ongelmia jo, kun ikkunan koko on 5.

  3. Liukuvan ikkunan protokollien toiminta
    Oletetaan, että häiriöpurske tuhoaa datakehyksen D(n+1) ja sitä edellisen kehyksen D(n) ACK-kuittauksen sekä vielä sitä seuraavan kuittauksen.
    1. Näytä kaaviokuvana, kuinka tilanteessa toimii
      • paluu N:ään (Go-Back-N),
      • valikoiva toisto (Selective Repeat)
    2. Olisiko NAK-kuittauksen käytöstä mitään hyötyä kummankaan protokollan tilanteessa? Mitä haittaa NAK-kuittauksesta voisi olla?
    3. Onko ajastin ihan välttämätön molemmissa protokollissa?

  4. Hidas aloitus (slow start)
    1. Mihin hidasta aloitusta käytetään? Mitä hyötyä siitä on? Voiko siitä olla haittaa? Jos, niin missä tilanteissa?
    2. Käytetään hidasta aloitusta linjalla, jonka kiertoviive (round-trip time) on 200 ms. Linjalla ei ole ruuhkaa ja kuittaukset saapuvat ajoissa. Vastaanottajan ikkuna on 18 KB ja yhdessä segmentissä voidaan lähettää korkeintaan 2 KB (= maximum segment size). Kynnysarvo (threshold) on aluksi 30 KB. Kauanko kestää, ennenkuin voidaan lähettää ensimmäinen täysi ikkunallinen? Linjan siirtonopeus (transmission rate) on niin suuri, että segmenttien lähettämiseen kuluvalla ajalla ei ole merkitystä.
    3. Kun täysi ikkunallinen on lähetetty, siihen ei saadakaan kuittausta ajoissa, vaan uudelleenlähetysajastin (retransmission timer) ehtii laueta. Miten lähettämistä jatketaan tämän jälkeen? Onko tässä eroa sillä, käytetäänkö TCP:n versiota Tahoe vai Reno?

  5. Lisää ruuhkanhallinnasta: nopea toipuminen, uudelleenlähetysajastin
    1. Mitä tarkoitetaan nopealla toipumisella (fast recovery)? Milloin sitä voi käyttää ja mitä hyötyä siitä on?
    2. Miten uudelleenlähetysajastimen arvo saadaan? Miksi on tärkeää, että uudelleenlähetysajastimen arvo on oikein? Mitä vaikutusta on sillä, että arvo on i) liian pieni tai ii) liian suuri?

  6. Kuljetuskerroksen toiminnasta
    Opiskelija surffailee Internetissä ja klikkaa URL-linkkiä. Tuloksena opiskelijan koneen näytölle tulee näkyviin osoitetta vastaava sivu jostakin kaukana olevasta koneesta.
    Mitä tapahtui kuljetuskerroksella? Mitä kuljetuskerroksen protokollia tarvittiin ja mihin? Esitä kaaviokuvana, mitä kuljetuskerroksen segmenttejä eri järjestelmien välilä vaihdettiin. Kerro myös, mitä lähetetyt segmentit pääpiirteissään sisälsivät.