Prezentarea se încărcă. Vă rugăm să așteptați

Prezentarea se încărcă. Vă rugăm să așteptați

PROTOCOALE PE O LEGĂTURĂ DE DATE

Prezentări similare


Prezentarea pe tema: "PROTOCOALE PE O LEGĂTURĂ DE DATE"— Transcriere de prezentare:

1 PROTOCOALE PE O LEGĂTURĂ DE DATE

2 Structuri de date şi proceduri folosite - 1
const LastBit = . . .; {determina marimea pachetului} doomsday = false; {variabila pentru ciclu infinit} MaxSeq = . . .; {secventa maxima 2^n-1} type bit = 0,1; SequenceNr = MaxSeq; {numarul de secventa al cadrelor} packet = packed array [0. . .LastBit] of bit; {pachetul de la nivelul retea} FrameKind = (data,ack,nak); {tipul cadrelor} frame = packed record kind : FrameKind; seq : SequenceNr; ack : sequenceNr; info : packet; end; {frame} procedure wait (var event:EvType); begin{asteapta producerea unui evenimet; in event se returneaza tipul evenimentului care a avut loc} end; procedure FromNetworkLayer (var p : packet); begin {incarca informatiile – pachetul – de la nivelul retea, pentru a fi transmis pe canal} end; procedure ToNetworkLayer (p : packet); begin{livreaza informatiile spre nivelul retea de la un cadru de intrare} end; procedure FromPhysicalLayer (var r : frame); begin{copiaza in r un cadru de intrare de la nivelul fizic} end; procedure ToPhysicalLayer (s : frame); begin{preda un cadru din s nivelului fizic pentru a fi trasmis} end;

3 Structuri de date şi proceduri folosite -2
procedure StartTimer (k : SequenceNr); begin{porneste ceasul si valideaza procedura evenimentului TimeOut} end; procedure StopTimer (k : SequenceNr); begin{opreste ceasul si invalideaza procedura evenimentului TimeOut} end; procedure StartAckTimer; begin{porneste un ceas auxiliar pentru a trimite ack separat} end; procedure StopAckTimer; begin{opreste ceasul auxiliar si invalideaza procedura evenimentului NetworkLayerIdle} end; procedure EnableNetworkLayer; begin{permite nivelului retea producerea evenimentului NetworkLayer Ready} end; procedure DisableNetworkLayer; begin{interzice nivelului retea producerea evenimentului NetworkLayer Ready} end; procedure inc (var k : SequenceNr); begin{incrementeaza k circular} if k < MaxSeq then k:=k+1 else k:= 0 end;

4 1. Protocol pe un canal fără erori
type EvType = (FrameArrival); procedure sender1; var s:frame; {buffer pentru un cadru de iesire} buffer:packet; {buffer pentru un pachet de iesire} begin repeat FromNetworkLayer (buffer); {ia ceva pentru a transmite} s.info: = buffer; {copiaza in s pentru transmisie} ToPhysicalLayer(s); {trimite cadrul} until doomsday end;{sender1} procedure receiver1; var r:frame; event:EvType; {e returnat de wait dar nu e folosit aici} wait(event); {doar FrameArrival} FromPhysicalLayer(r); {preia cadrul de intrare} ToNetworkLayer(r.info); {trimite data nivelului retea} end;{receiver1}

5 2. Protocol STOP & WAIT pe un canal fără erori
type EvType = (FrameArrival); procedure sender2; var s: frame; buffer: packet; event: EvType; begin repeat FromNetworkLayer(buffer); { extrage informatia de la nivelul retea } s.info : = buffer; { copiaza informatia in s } ToPhysicalLayer(s); { trimite cadrul } wait(event); {asteapta sosirea unui cadru de raspuns } until doomsday; end; { sender2 } procedure receiver2; var r,s: frame; wait(event); { singurul eveniment posibil este FrameArrival } FromPhysicalLayer(r); {ia cadrul de la nivelul fizic } ToNetworkLayer(r.info); {livreaza pachetul nivelului retea } ToPhysicalLayer(s); {trimite un cadru gol de achitare } end; { receiver2 }

6 3. Protocol STOP & WAIT pe un canal cu erori-1
const MaxSeq = 1; type EvType = ( FrameArrival , CksumErr , TimeOut ); procedure sender3; var NextFrameToSend: SequenceNr; s: frame; buffer: packet; event: EvType; begin NextFrameToSend: = 0; FromNetworkLayer(buffer); repeat s.info: = buffer; s.seq: = NextFrameToSend; ToPhysicalLayer(s); StartTimer(s.seq); wait(event); if event = FrameArrival then inc(NextFrameToSend); end; until doomsday; end; { sender3 }

7 3. Protocol STOP & WAIT pe un canal cu erori-2
procedure receiver3; var FrameExpected: SequenceNr; r,s: frame; event: EvType; begin FrameExpected: = 0; repeat wait (event); if event = FrameArrival then FromPhysicalLayer(r); if r.seq = FrameExpected then ToNetworkLayer(r.info); inc(FrameExpected); end; ToPhysicalLayer(s); until doomsday; end; { receiver3 }


Descărcați ppt "PROTOCOALE PE O LEGĂTURĂ DE DATE"

Prezentări similare


Publicitate de la Google