Simulate and implement go back n sliding window protocol in Computer Network -KML Tutorial

 Aim:- Simulate and implement go back n sliding window protocol.

Program:-

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. #include<time.h>
  5. int main(){
  6.     int n,i=0,j=0,k=0,sn=0,rn=0,proba=0,wn_size,end_sn,m,tn,p=0;
  7.     srand(time(0));
  8.     printf("Enter the number of frames:");
  9.     scanf("%d",&n);
  10.     printf("Enter number of bits for sequence number:");
  11.     scanf("%d",&m);
  12.     tn=pow(2,m);
  13.     end_sn=tn-1;
  14.     wn_size=end_sn;
  15.     int window[wn_size];
  16.     while(i<n){
  17.         j=0;
  18.         while(j<wn_size && i<n){
  19.             sn=i%tn;
  20.             window[j]=i;
  21.             printf("Sender: sending frame no. %d with sequence number %d\n",i,sn);
  22.             j++; i++;
  23.         }
  24.         k=0;
  25.         while(k<j){
  26.             proba=rand()%100;
  27.             if(proba>80){
  28.                 printf("****Frame %d is corrupted****\n",window[k]);
  29.                 i=window[k];
  30.                 printf("****Rest frames discarded as out of order****\n",window[k]);
  31.                 break;
  32.             }else{
  33.                 if(window[k]%tn==rn){
  34.                     rn=(rn+1)%tn;
  35.                     printf("Receiver: sending acknowledgment No. %d\n",rn);
  36.                     proba=rand()%100;
  37.                     if(proba>80){
  38.                             printf("**Acknowledgment frame corrupted**\n");
  39.                             i=window[k];
  40.                             break;
  41.                     }
  42.                 }else{
  43.                     printf("Receiver: Discarded frame no. %d as it is out of order\n",window[k]);
  44.                 }
  45.             }
  46.             k++;
  47.         }
  48.         printf("\n\n");
  49.     }
  50.     system("pause");
  51.     return 0;
  52. }

Outpute:-

Enter the number of frames:5
Enter number of bits for sequence number:4
Sender: sending frame no. 0 with sequence number 0
Sender: sending frame no. 1 with sequence number 1
Sender: sending frame no. 2 with sequence number 2
Sender: sending frame no. 3 with sequence number 3
Sender: sending frame no. 4 with sequence number 4
Receiver: sending acknowledgment No. 1
****Frame 1 is corrupted****
****Rest frames discarded as out of order****


Sender: sending frame no. 1 with sequence number 1
Sender: sending frame no. 2 with sequence number 2
Sender: sending frame no. 3 with sequence number 3
Sender: sending frame no. 4 with sequence number 4
Receiver: sending acknowledgment No. 2
Receiver: sending acknowledgment No. 3
Receiver: sending acknowledgment No. 4
Receiver: sending acknowledgment No. 5

Comments