Here you will get sliding window protocol program in C.
In computer networks sliding window protocol is a method to transmit data on a network. Sliding window protocol is applied on the Data Link Layer of OSI model. At data link layer data is in the form of frames. In Networking, Window simply means a buffer which has data frames that needs to be transmitted.
Both sender and receiver agrees on some window size. If window size=w then after sending w frames sender waits for the acknowledgement (ack) of the first frame.
As soon as sender receives the acknowledgement of a frame it is replaced by the next frames to be transmitted by the sender. If receiver sends a collective or cumulative acknowledgement to sender then it understands that more than one frames are properly received, for eg:- if ack of frame 3 is received it understands that frame 1 and frame 2 are received properly.
In sliding window protocol the receiver has to have some memory to compensate any loss in transmission or if the frames are received unordered.
Efficiency of Sliding Window Protocol
η = (W*tx)/(tx+2tp)
W = Window Size
tx = Transmission time
tp = Propagation delay
Sliding window works in full duplex mode
It is of two types:-
1. Selective Repeat: Sender transmits only that frame which is erroneous or is lost.
2. Go back n: Sender transmits all frames present in the window that occurs after the error bit including error bit also.
Sliding Window Protocol Program in C
Below is the simulation of sliding window protocol in C.
#include<stdio.h> int main() { int w,i,f,frames[50]; printf("Enter window size: "); scanf("%d",&w); printf("\nEnter number of frames to transmit: "); scanf("%d",&f); printf("\nEnter %d frames: ",f); for(i=1;i<=f;i++) scanf("%d",&frames[i]); printf("\nWith sliding window protocol the frames will be sent in the following manner (assuming no corruption of frames)\n\n"); printf("After sending %d frames at each stage sender waits for acknowledgement sent by the receiver\n\n",w); for(i=1;i<=f;i++) { if(i%w==0) { printf("%d\n",frames[i]); printf("Acknowledgement of above frames sent is received by sender\n\n"); } else printf("%d ",frames[i]); } if(f%w!=0) printf("\nAcknowledgement of above frames sent is received by sender\n"); return 0; }
Output
Enter window size: 3
Enter number of frames to transmit: 5
Enter 5 frames: 12 5 89 4 6
With sliding window protocol the frames will be sent in the following manner (assuming no corruption of frames)
After sending 3 frames at each stage sender waits for acknowledgement sent by the receiver
12 5 89
Acknowledgement of above frames sent is received by sender
4 6
Acknowledgement of above frames sent is received by sender
Sliding Window Protocol Program in C++
Below is the simulation of sliding window protocol in C++.
#include<iostream> using namespace std; int main() { int w,i,f,frames[50]; cout<<"Enter window size: "; cin>>w; cout<<"\nEnter number of frames to transmit: "; cin>>f; cout<<"\nEnter "<<f<<" frames: "; for(i=1;i<=f;i++) cin>>frames[i]; cout<<"\nWith sliding window protocol the frames will be sent in the following manner (assuming no corruption of frames)\n\n"; cout<<"After sending "<<w<<" frames at each stage sender waits for acknowledgement sent by the receiver\n\n"; for(i=1;i<=f;i++) { if(i%w==0) { cout<<frames[i]<<"\n"; cout<<"Acknowledgement of above frames sent is received by sender\n\n"; } else cout<<frames[i]<<" "; } if(f%w!=0) cout<<"\nAcknowledgement of above frames sent is received by sender\n"; return 0; }
Comment below if you have any queries regarding above program.
what exactly is the frame? is this a image?a window frame? or a info packet frame?
Packet frame in this case
bruuh the implementation is of Go Back N protocol not sliding window protocol
exactly bro