GBN protokol

С Википедије, слободне енциклопедије

Protokol GBN (engl. Go-Back-N – Vrati-za-N) predstavlja protokol u oblasti računarskih mreža, koji dozvoljava pošiljaocu da pošalje više paketa (ako ih ima) bez čekanja na potvrdu, ali ograničava najveći dozvoljeni broj N nepotvrđenih paketa u cevovodu.[1][2]

GBN protokol[уреди | уреди извор]

Ako definišemo base kao redni broj najstarijeg nepotvrđenog paketa, a nextseqnum kao najmanji neupotrebljeni redni broj (tj. redni broj sledećeg paketa koji treba poslati) možemo uočiti četiri intervala u rasponu rednih brojeva. Redni brojevi u intervalu [0, base-1] odgovaraju paketima koji su već preneti i čiji je prijem potvrđen. Interval [base, nextseqnum-1] odgovara paketima koji su poslati, ali čiji prijem još nije potvrđen. Redni brojevi u intervalu [nextseqnum, base+N-1] koriste se za pakete koji mogu da se pošalju odmah čim podaci stignu iz gornjeg sloja. Konačno, redni brojevi veći ili jednaki od base+N ne mogu se koristiti sve dok ne stigne potvrda prijema za nepotvrđeni paket koji se trenutno nalazi u cevovodu (tačnije, paket sa rednim brojem base).

Veličina prozora[уреди | уреди извор]

Raspon dozvoljenih rednih brojeva za poslate, ali još nepotvrđene pakete može se posmatrati kao prozor veličine N u rasponu rednih brojeva. Tokom rada protokola, ovaj prozor klizi unapred duž raspoloživih rednih brojeva. Zbog toga se za N često kaže da je veličina prozora, a za sam protokol GBN se kaže da je protokol sa kliznim prozorom.

Rad pošiljaoca i primaoca[уреди | уреди извор]

Pošiljalac[уреди | уреди извор]

GBN pošiljalac mora da odgovori na tri vrste događaja:

  • Poziv odozgo. Kada se odozgo pozove rdt_send(), pošiljalac prvo proverava da li je prozor pun, tj. da li postoji N nepotvrđenih paketa. Ako prozor nije pun, paket se pravi i šalje, a promenljive se ažuriraju na odgovarajući način. Ako je prozor pun, pošiljalac jednostavno vraća podatke gornjem sloju, što posredno znači da je prozor pun. Gornji sloj bi trebao prvom prilikom kasnije da ponovo pokuša slanje. U stvarnosti, verovatnije rešenje je da pošiljalac sačuva te podatke u privremenoj memoriji ili možda da ima mehanizam sinhronizacije (npr. semafore ili oznake) koji gornjem sloju dozvoljava da pozove rdt_send() samo ako prozor nije pun.
  • Prijem ACK poruke. U našem GBN protokolu, potvrda prijema za paket sa rednim brojem n smatra se kumulativnom potvrdom prijema, koji označava da je primalac pravilno primio sve pakete sa rednim brojevima koji su manji i jednaki n.
  • Istek vremena tajmera. Naziv protokola „vrati-za-N“ potiče od ponašanja pošiljaoca u slučaju izgubljenih paketa ili paketa koji previše kasne. Kao i u protokolu stani i čekaj, koristi se tajmer za oporavak od gubitka paketa sa podacima ili paketa sa potvrdom prijema. Posle isteka određenog vremena pošiljalac ponovo šalje sve pakete koji su prethodno poslati, a čiji prijem nije još uvek potvrđen. Ako stigne ACK poruka, ali još uvek ima poslatih i nepotvrđenih paketa, tajmer se ponovo pokreće. Ako više nema nepotvrđenih paketa, tajmer se zaustavlja.

Primalac[уреди | уреди извор]

Postupci primaoca u protokolu GBN takođe su jednostavni. Ako paket sa rednim brojem n primi ispravno i po redu (tj. poslednji podaci isporučeni gornjem sloju potiču iz paketa sa rednim brojem n-1), primalac šalje ACK poruku za paket sa rednim brojem n i predaje podatke iz paketa gornjem sloju. U svim ostalim slučajevima, primalac odbacuje paket i ponovo šalje ACK poruku za poslednji paket primljen po redu. Obratite pažnju na to da pošto se paketi isporučuju gornjem sloju jedan po jedan, ako je paket k primljen i isporučen, to znači i da su svi paketi sa rednim brojevima manjim od k takođe isporučeni. Prema tome, korišćenje kumulativnih potvrda prijema prirodno je za GBN protokol.

U našem protokolu GBN, primalac odbacuje pakete koji ne stižu po redu. Mada izgleda glupo i rasipno da se odbaci paket koji je pravilno primljen (iako nije po redu), za tako nešto postoji opravdanje. Ne zaboravite da primalac mora redom da pošalje podatke gornjem sloju. Pretpostavimo sada da se očekuje paket n, a stiže paket n+1. Pošto podaci moraju da se isporuče po redu, primalac bi mogao da privremeno sačuva paket n+1 i isporuči ga gornjem sloju pošto primi i isporuči paket n. Međutim, ako se paket n izgubio, i on i paket n+1 biće kasnije ponovo poslati zbog pravila ponovnog slanja u protokolu GBN na strani pošiljaoca. Prema tome, primalac može jednostavno da odbaci paket n+1. Prednost ovakvog pristupa je jednostavnije privremeno čuvanje kod primaoca-primalac ne mora privremeno da čuva ni jedan paket izvan redosleda.

Reference[уреди | уреди извор]

  1. ^ Tanenbaum, Andrew S. (2003). Computer Networks (4th изд.). ISBN 0-13-066102-3. 
  2. ^ Kurose, James F.; Keith W. Ross (2007). Computer Networking: A Top-Down Approach. ISBN 0-321-49770-8. 

Literatura[уреди | уреди извор]

  • James F. Kurose, Keith W. Ross, Umrežavanje računara, Cet, Beograd, 2009.

Vidi još[уреди | уреди извор]

Spoljašnje veze[уреди | уреди извор]