1 Küldő oldal

\underline{Változók}  \underline{Jelentés}

seq : (0,1) a küldés alatt levő keret azonosítója

ack : (0,1,error,none)  nyugta a fogadótól
data : ...  küldendő adat
tout : boolean  az időzítő lejárt
time : integer  az időzítő számlálója

Kezdeti állapot

- tokenek az 1, 4 helyzetben

- seq = 1

Átmenet  Feltétel  Akció

New true

new(data); seq:=seq+1(mod 2)

üzenetet vesz át a várakozó sorból és továbblépteti az azonosítót

\underline{D} true INITIATE(transD,seq,data); ack:=none; time:=t_{0}; tout:=false;

kezdeményezi a (seq,data) keret átvitelét

A_{=} ack=seq ;

a várt nyugta fogadása

A_{≠} ack=seq+1(mod 2)

;

nyugta ismételt fogadása

E ack=error ;

torzult nyugta fogadása

T tout=true ;

az időzítő lejárt

Clock true time:=time-1; if time=0 then tout:=true

az időzítő csökkentése

partnernél kezdeményezett eljárás transD (p_{1}:(0,1), p_{2}:...): case transmission of correct : seqnb:=p_{1}; data=p_{2}; erroneous : seqnb:=error; loss : ;

2 Fogadó oldal

\underline{Változók}  \underline{Jelentés}

exp : (0,1) a következő-várt változó, következő-várt+1(mod 2) azonosítójú keret kerül legközelebb elfogadásra

seqnb: (0,1,error,none) a fogadott keretben érkezett azonosító

data : ... a fogadott keretben érkezett adat

Kezdeti állapot

- token a 3 helyzetben

- exp = 1

- seqnb = none

Átmenet  Feltétel  Akció

Use true

use(data); exp:=exp+1(mod 2)

a vett üzenetet a kimenő várakozó sorba továbbítja és továbblépteti a következő-várt változót

\underline{A} true INITIATE(transA,exp); seqnb:=none; tout:=false;

kezdeményezi az (exp) nyugta átvitelét

D_{≠} seqnb=exp+1(mod 2)

;

a következő várt keret fogadása

D_{=} seqnb=exp ;

keret ismételt fogadása

E seqnb=error ;

torzult keret fogadása

partnernél kezdeményezett eljárás transA (p:(0,1)): case transmission of correct : ack:=p; erroneous : ack:=error; loss : ;