By B.A.
Khivsara
Asst Prof.
Computer Dept
SNJB’s KBJ COE,Chandwad
Sliding window protocols are used where Reliable In-
order delivery of packets is required, & such as in the
Data Link Layer (OSI model) in the Transmission
Control Protocol(TCP).
The sliding window technique places varying limits on
the number of data packets that are sent before
waiting for an acknowledgment signal back from the
receiving computer. The number of data packets is
called the window size.
protocols are
divided into 2 types
noiseless
(error-free)
channels
noisy (error-
creating)
channels
Figure Taxonomy of protocols
11.4
Let us first assume we have an ideal channel in
which no frames are lost, duplicated, or
corrupted.
We introduce two protocols for this type of
channel. The first is a protocol that does not use
flow control; the second is the one use flow
control.
If data frames arrive at the receiver site faster than they can
be processed, the frames must be stored until their use.
To prevent the receiver from becoming overwhelmed with
frames, we need to tell the sender to slow down.
In this protocol the sender sends one frame, stops until it
receives confirmation from the receiver and then sends the
next frame.
Figure Flow diagram for stop and wait Protocol
11.7
NOISY CHANNELS (Sliding Window Protocol)
Although the Stop-and-Wait Protocol gives us an idea of
how to add flow control to its predecessor, noiseless
channels are nonexistent. We discuss three protocols in
this section that use error control.
Topics discussed in this section:
Stop-and-Wait Automatic Repeat Request
Go-Back-N Automatic Repeat Request
Selective Repeat Automatic Repeat Request
11.8
Note
Error correction in Stop-and-Wait ARQ is done
by keeping a copy of the sent frame and
retransmitting of the frame when the timer
expires.
11.9
Noiseless channels are nonexistent, so we need to add error
control to our protocols.
Stop-and-Wait Automatic Repeat Request protocol add a simple
error control mechanism to the Stop-and-Wait Protocol.
To detect and correct corrupted frames, we need to add
redundancy bits to our data frame.
When the frame arrives at the receiver site, it is checked and if it
is corrupted, it is silently discarded.
Lost frames are more difficult to handle than corrupted
ones.
The received frame could be the correct one, or a duplicate,
or a frame out of order.
The solution is to number the frames.
When the receiver receives a data frame that is out of order,
this means that frames were either lost or duplicated.
The completed and lost frames need to be resent in this
protocol.
The sender keeps a copy of the sent frame. At the same
time, it starts a timer.
If the timer expires and there is no ACK for the sent frame,
the frame is resent, the copy is held, and the timer is
restarted.
Since an ACK frame can also be corrupted
and lost, it too needs redundancy bits
and a sequence number.
The ACK frame for this protocol has a
sequence number field.
Design of the Stop-and-Wait ARQ Protocol
11.14
Figure Flow diagram for Stop and Wait ARQ
11.15
Go-Back-N ARQ is a specific instance of the automatic
repeat request (ARQ) protocol, in which the sending
process continues to send a number of frames specified
by a window size even without receiving
an acknowledgement (ACK) packet from the receiver.
The receiver process keeps track of the sequence
number of the next frame it expects to receive, and
sends that number with every ACK it sends.
The receiver will discard any frame that does not have the
exact sequence number it expects and will resend an ACK for
the last correct in-order frame.
Once the sender has sent all of the frames in its window, it will
detect that all of the frames since the first lost frame
are outstanding, and will go back to the sequence number of
the last ACK it received from the receiver process and fill its
window starting with that frame and continue the process over
again.
Figure 11.14 Design of Go-Back-N ARQ
Figure 11.16 Flow diagram for Example 11.6
Concept of Selective Repeat
Selective Repeat is part of the automatic repeat-request
(ARQ).
With selective repeat, the sender sends a number of
frames specified by a window size even without the need
to wait for individual ACK from the receiver as in go-
back-n ARQ.
The receiver may selectively reject a single frame, which
may be retransmitted alone;
this contrasts with other forms of ARQ, which must send
every frame from that point again.
The receiver accepts out-of-order frames and buffers
them.
The sender individually retransmits frames that have
timed out.
Comparison of Go-back-n (fig. a) & Selective
Repeat (Fig. b)
Data Communication
Use GBN or SR?
If errors low, might use GBN.
If errors high, might use SR.
If bandwidth cheap, might use GBN.
If bandwidth costly, might use SR.
Program in Java for
Sliding Window
Protocol
Sender side
&
Receiver Side
Sender side
import java.net.*;
import java.io.*;
import java.rmi.*;
public class slidsender
{
public static void main(String a[])throws Exception
{
ServerSocket ser=new ServerSocket(10);
Socket s=ser.accept();
DataInputStream in=new DataInputStream(System.in);
DataInputStream in1=new DataInputStream(s.getInputStream());
String sbuff[]=new String[8];
PrintStream p;
int sptr=0,sws=8,nf,ano,i;
String ch;
Do {
p=new PrintStream(s.getOutputStream());
System.out.print("Enter the no. of frames : ");
nf=Integer.parseInt(in.readLine());
p.println(nf);
if(nf<=sws-1)
{
System.out.println("Enter "+nf+" Messages to be
send\n");
for(i=1;i<=nf;i++) {
sbuff[sptr]=in.readLine();
p.println(sbuff[sptr]);
sptr=++sptr%8; }
sws-=nf;
System.out.print("Acknowledgment received");
ano=Integer.parseInt(in1.readLine());
System.out.println(" for "+ano+" frames");
sws+=nf;
}
Else
{
System.out.println("The no. of frames exceeds window size");
break;
}
System.out.print("\nDo you wants to send some more frames : ");
ch=in.readLine(); p.println(ch); }
while(ch.equals("yes"));
s.close();
}
}
Receiver
import java.net.*;
import java.io.*;
class slidreceiver
{
public static void main(String a[])throws Exception
{
Socket s=new Socket(InetAddress.getLocalHost(),10);
DataInputStream in=new DataInputStream(s.getInputStream());
PrintStream p=new PrintStream(s.getOutputStream());
int i=0,rptr=-1,nf,rws=8;
String rbuf[]=new String[8];
String ch; System.out.println();
do
{
nf=Integer.parseInt(in.readLine());
if(nf<=rws-1)
{
for(i=1;i<=nf;i++)
{
rptr=++rptr%8;
rbuf[rptr]=in.readLine();
System.out.println("The received Frame " +rptr+"
is : "+rbuf[rptr]);
}
rws-=nf;
System.out.println("\nAcknowledgment sent\n");
p.println(rptr+1); rws+=nf; }
else
break;
ch=in.readLine();
}
while(ch.equals("yes"));
}
}
How to Run Program
Sender on one Machine
Receiver on another machine
Run sender first
Then run receiver
OUTPUT:
//SENDER OUTPUT
Enter the no. of frames : 4
Enter 4 Messages to be send
hiii
how r u
i am fine
how is evryone
Acknowledgment received for 4 frames
Do you wants to send some more frames : no
//RECEIVER OUTPUT
The received Frame 0 is : hiii
The received Frame 1 is : how r u
The received Frame 2 is : i am fine
The received Frame 3 is : how is evryone
Acknowledgment sent