Tietoliikenteen perusteet, syksy 2011

Harjoitus 4

  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. TCP-yhteyden muodostus, segmenttien numerointi ja TCP:n vuonvalvonta
    1. Esitä TCP-yhteyden muodostussanomat, kun A aloittaa segmenttinumeroinnin numerosta 56 ja B numerosta 182.
    2. Esitä vaihdettujen TCP-segmenttien järjestysnumero- ja kuittauskenttien sisällöt tilanteessa, jossa A siirtää ensin 1000 tavun segmentin B:lle, B kuittaa tämän ja lähettää A:lle 800 tavun segmentin, jonka A kuittaa.
    3. Koneet A ja B on yhdistetty 200 Mbps:n linkillä. Koneiden välille on muodostettu TCP-yhteys, jolla kone A siirtää hyvin suurta tiedostoa koneelle B. Koneen A:n lähetysnopeus on 100 Mbps ja kone B kykenee tyhjentämään vastaanottopuskuriaan korkeintaan nopeudella 50 Mbps. Miten tässä voidaan hyödyntää TCP:n vuonvalvontaa?

  5. TCP-ruuhkanhallinta
    1. Mihin hidasta aloitusta (slow start) käytetään? Mitä hyötyä siitä on? Voiko siitä olla haittaa? Jos, niin missä tilanteissa? Mitä tarkoitetaan ruuhkan välttämisellä (congestion avoidance)?
    2. Käytetään hidasta aloitusta linjalla, jonka kiertoviive (round-trip time) on 200 ms. Verkossa 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?
    4. 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.