“Stop&Wait Protokoll” programmi arvutuse kirjeldus

 

Programm töötab tsüklis. Programm teeb niimitu tsüklit nagu on testi kestuvuse väljale sisestatud.

 

Paketil on kaks võimalust:

  1. pakett jõuab vastuvõtjani ilma bitivigadeta
  2. pakett jõuab vastuvõtjani vigasena

 

Selle teise võimaluse tõenäosus on on ära määratud väljaga “Bitivea esinemise tõenäosus”. Pakett on seega vigaselt kohale jõudnud kui kasvõi üks bitt 128’st võimalikust on vigane või üks bitt 8'st ACK'is on vigane.

Kui pakett jõuab vastuvõtjani vigasena, vastuvõtja ACK tagasi ei saada, seega käiku tuleb time-out. Time-out’i määrab ära kasutaja sisestades väärtuse välja “Time-Out”. Time-Out’i arvestab programm järgmiselt:

kasutaja poolt sisestatava välja “Time-Out” (mis on µs-dites) lisatakse minimaalne aeg mis kulub paketi teekonnale kanalis ja ACK signaali tagasitulekuks, eeldusel et vastuvõtja poolel eemaldatakse pakett puhvrist momentaalselt (seega minimaalne aeg, millega on võimalik pakett edukalt saata). Seega kui time-out=0, siis on paketil veel võimalik jõuda edukalt kohale ja ACK signaalil tagasi. Reaalselt sellise situatsiooni tõenäosus on küllaltki väike, kuna vastuvõtja tavaliselt ei eemalda pakette oma puhvrist momentaalselt.

Järgmisena tuleb arvesse võtta vastuvõtja teenindussagedus (seega aeg, mille jooksul vastuvõtja eemaldab paketi puhvrist ja väljastab ACK signaali - loomulikult juhul kui pakett saabus ilma bitivigadeta).

See aga toimub Poissoni jaotuse järgi.

f(t)=µe-µt

Seega: f(t)/µ= e-µt

-µt=ln(f(t)/µ)

t=ln(f(t)/µ)/-µ

Funktsioon f(t) võib omandada väärtusi 0..µ-ni. Seega asendades funktsiooni f(t) random(µ)ga, saame:

t=-ln(random(µ)/µ)/µ

Kuna aga random(µ)/µ on sama, mis lihtsalt random, siis

t=-ln(random)/µ, kus random omandab väärtusi 0..1

Selle valemi järgi on võimalik arvutada aeg, mille jookul pakett eemaldatakse puhvrist.

 

Järgmiseks arvutab programm aja, mis kulub paketi edukaks kohalejõudmiseks ja ACK signaali tagasijõudmiseks.

t = 2*(250000/2*108) + (128+8)/1024² + (aeg, mis kulub paketi eemaldamiseks puhvrist)

 

Järgmiseks on võimalus, et kasutaja on määranud sellise Time-Out aja, mille korral pakett pole siiski jõudnud vastuvõtjasse (või ACK pole jõudnud tagasi). Sellel korral on näiteks teeninduseks kulunud aeg pikem kui Time-Out’iga lubati. Ka sel korral läheb käiku Time-Out aeg ja pakett saadetakse uuesti teele.