- Since the receiver
did not
send ACK
for frame #1:
Suppose
after the time out,
the sender
retransmits
frame 1 and
it is received correctly
-
Current sender/receiver windows:
- Sender window =
[1,2,3,4]
- Receiver window =
[1,2,3,4]
|
Events:
- The sender
retransmits
frame 1
- Frame 1 is
received correctly
|
How the
receiver process the
received frame (#1):
Receiver window = [1 .. 4]
Frame 1: 1 == 1 ? Yes !!
===> Buffer frame 1
===> Send ACK 1
i = 1;
while ( frame i received ) loop:
i = 1: is received ? Yes
===> deliver frame 1
===> i++ (i=2)
i = 2: is received ? Yes
===> deliver frame 2
===> i++ (i=3)
i = 3: is received ? Yes
===> deliver frame 3
===> i++ (i=4)
i = 4: is received ? Yes
===> deliver frame 4
===> i++ (i=4)
Receiver Window = [5 .. 8]
Send ACK 5 !!!
|
Graphically:
Result:
- Note:
- When the sender
receives the
ACK 5 frame,
the sender window will
move as
follows:
|
The sender window and
receiver window are
"lined up"
(= starts with the
same seq. no.)
|