PROTOCOALE PE O LEGTUR DE DATE Structuri de

  • Slides: 7
Download presentation
PROTOCOALE PE O LEGĂTURĂ DE DATE

PROTOCOALE PE O LEGĂTURĂ DE DATE

Structuri de date şi proceduri folosite - 1 const Last. Bit =. . .

Structuri de date şi proceduri folosite - 1 const Last. Bit =. . . ; {determina marimea pachetului} doomsday = false; {variabila pentru ciclu infinit} Max. Seq =. . . ; {secventa maxima 2^n-1} type bit = 0, 1; Sequence. Nr = 0. . . Max. Seq; {numarul de secventa al cadrelor} packet = packed array [0. . . Last. Bit] of bit; {pachetul de la nivelul retea} Frame. Kind = (data, ack, nak); {tipul cadrelor} frame = packed record kind : Frame. Kind; seq : Sequence. Nr; ack : sequence. Nr; info : packet; end; {frame} procedure wait (var event: Ev. Type); begin{asteapta producerea unui evenimet; in event se returneaza tipul evenimentului care a avut loc} end; procedure From. Network. Layer (var p : packet); begin {incarca informatiile – pachetul – de la nivelul retea, pentru a fi transmis pe canal} end; procedure To. Network. Layer (p : packet); begin{livreaza informatiile spre nivelul retea de la un cadru de intrare} end; procedure From. Physical. Layer (var r : frame); begin{copiaza in r un cadru de intrare de la nivelul fizic} end; procedure To. Physical. Layer (s : frame); begin{preda un cadru din s nivelului fizic pentru a fi trasmis} end;

Structuri de date şi proceduri folosite -2 procedure Start. Timer (k : Sequence. Nr);

Structuri de date şi proceduri folosite -2 procedure Start. Timer (k : Sequence. Nr); begin{porneste ceasul si valideaza procedura evenimentului Time. Out} end; procedure Stop. Timer (k : Sequence. Nr); begin{opreste ceasul si invalideaza procedura evenimentului Time. Out} end; procedure Start. Ack. Timer; begin{porneste un ceas auxiliar pentru a trimite ack separat} end; procedure Stop. Ack. Timer; begin{opreste ceasul auxiliar si invalideaza procedura evenimentului Network. Layer. Idle} end; procedure Enable. Network. Layer; begin{permite nivelului retea producerea evenimentului Network. Layer Ready} end; procedure Disable. Network. Layer; begin{interzice nivelului retea producerea evenimentului Network. Layer Ready} end; procedure inc (var k : Sequence. Nr); begin{incrementeaza k circular} if k < Max. Seq then k: =k+1 else k: = 0 end;

1. Protocol pe un canal fără erori type Ev. Type = (Frame. Arrival); procedure

1. Protocol pe un canal fără erori type Ev. Type = (Frame. Arrival); procedure sender 1; var s: frame; buffer: packet; begin repeat From. Network. Layer (buffer); s. info: = buffer; To. Physical. Layer(s); until doomsday end; {sender 1} procedure receiver 1; var r: frame; event: Ev. Type; begin repeat wait(event); From. Physical. Layer(r); To. Network. Layer(r. info); until doomsday end; {receiver 1} {buffer pentru un cadru de iesire} {buffer pentru un pachet de iesire} {ia ceva pentru a transmite} {copiaza in s pentru transmisie} {trimite cadrul} {e returnat de wait dar nu e folosit aici} {doar Frame. Arrival} {preia cadrul de intrare} {trimite data nivelului retea}

2. Protocol STOP & WAIT pe un canal fără erori type Ev. Type =

2. Protocol STOP & WAIT pe un canal fără erori type Ev. Type = (Frame. Arrival); procedure sender 2; var s: frame; buffer: packet; event: Ev. Type; begin repeat From. Network. Layer(buffer); s. info : = buffer; To. Physical. Layer(s); wait(event); until doomsday; end; { sender 2 } procedure receiver 2; var r, s: frame; event: Ev. Type; begin repeat wait(event); From. Physical. Layer(r); To. Network. Layer(r. info); To. Physical. Layer(s); until doomsday; end; { receiver 2 } { extrage informatia de la nivelul retea } { copiaza informatia in s } { trimite cadrul } {asteapta sosirea unui cadru de raspuns } { singurul eveniment posibil este Frame. Arrival } {ia cadrul de la nivelul fizic } {livreaza pachetul nivelului retea } {trimite un cadru gol de achitare }

3. Protocol STOP & WAIT pe un canal cu erori-1 const Max. Seq =

3. Protocol STOP & WAIT pe un canal cu erori-1 const Max. Seq = 1; type Ev. Type = ( Frame. Arrival , Cksum. Err , Time. Out ); procedure sender 3; var Next. Frame. To. Send: Sequence. Nr; s: frame; buffer: packet; event: Ev. Type; begin Next. Frame. To. Send: = 0; From. Network. Layer(buffer); repeat s. info: = buffer; s. seq: = Next. Frame. To. Send; To. Physical. Layer(s); Start. Timer(s. seq); wait(event); if event = Frame. Arrival then begin From. Network. Layer(buffer); inc(Next. Frame. To. Send); end; until doomsday; end; { sender 3 }

3. Protocol STOP & WAIT pe un canal cu erori-2 procedure receiver 3; var

3. Protocol STOP & WAIT pe un canal cu erori-2 procedure receiver 3; var Frame. Expected: Sequence. Nr; r, s: frame; event: Ev. Type; begin Frame. Expected: = 0; repeat wait (event); if event = Frame. Arrival then begin From. Physical. Layer(r); if r. seq = Frame. Expected then begin To. Network. Layer(r. info); inc(Frame. Expected); end; To. Physical. Layer(s); end; until doomsday; end; { receiver 3 }