0% found this document useful (0 votes)
15 views15 pages

Computer Networks Lab

The document discusses several computer networking concepts and algorithms including bit stuffing, character stuffing, CRC algorithms, Go Back N protocol, Selective Repeat ARQ protocol, Dijkstra's algorithm, and distance vector routing algorithm. Code snippets and sample outputs are provided for each concept to demonstrate how they work.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views15 pages

Computer Networks Lab

The document discusses several computer networking concepts and algorithms including bit stuffing, character stuffing, CRC algorithms, Go Back N protocol, Selective Repeat ARQ protocol, Dijkstra's algorithm, and distance vector routing algorithm. Code snippets and sample outputs are provided for each concept to demonstrate how they work.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

COMPUTER NETWORKS LAB:

1. BIT STUFFING:

PROGRAM:

#include<stdio.h>
#include<string.h>
void main(){
int a[20],b[30],i,j,k,count,n;
printf("enter frame length: ");
scanf("%d",&n);
printf("enter input frame(0s and 1s only): ");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
i=0;j=0;count=1;
while(i<n){
if(a[i]==1){
b[j]=a[i];
for(k=i+1;a[k]==1&&k<n&&count<5;k++){
j++;
b[j]=a[k];
count++;
if(count==5){
j++;
b[j]=0;
}
i=k;
}
}
else
b[j]=a[i];
i++;
j++;
}
printf("after stuffing the frame is: ");
for(i=0;i<j;i++)
printf("%d",b[i]);
}

OUTPUT:
Enter frame length: 7
Enter input frame(0s and 1s only):
1
1
1
1
1

1
0
1
After stuffing the frame: 11111001

2. CHARACTER STUFFING :

PROGRAM:

#include<stdio.h>
#include<string.h>
void main(){
char data[30],stuffed[30]=" ";
char t[3],x[3],s[3];
char esc[1];
int i;
printf("enter characters: ");
scanf("%s",data);
printf("enter escape character: ");
scanf("%s",esc);
x[0]=s[0]=s[1]=esc[0];
x[1]=s[2]='\0';
strcat(stuffed,x);
for(i=0;i<strlen(data);i++){
t[0]=data[i];
t[1]='\0';
if(t[0]==esc[0])
strcat(stuffed,s);
else
strcat(stuffed,t);
}
strcat(stuffed,x);
printf("\n after stuffing: %s",stuffed);
getch();
}

OUTPUT:

Enter characters to be stuffed : herself


Enter the escape character: e
After stuffing :eheerseelfe

2
3. CRC ALGORITHM:

PROGRAM:

#include<stdio.h>
#include<string.h>
char data[30],check_value[30],gen_poly[20];
int data_length,N,i,j;
void XOR(){
for(j=1;j<N;j++)
check_value[j]=((check_value[j]==gen_poly[j])?'0':'1');
}
void crc(){
for(i=0;i<N;i++)
check_value[i]=data[i];

do{
if(check_value[0]=='1')
XOR();

for(j=0;j<N-1;j++)
check_value[j]=check_value[j+1];

check_value[j]=data[i++];

}while(i<=data_length+N-1);
}

int main(){
printf("\nEnter data to be transmitted: ");
scanf("%s",data);
printf("\nEnter the generating polynomial: ");
scanf("%s",gen_poly);

data_length=strlen(data);
N=strlen(gen_poly);

for(i=data_length;i<data_length+N-1;i++)
data[i]='0';

printf("\nData padded with %d zeros:%s",N-1,data);


crc();
printf("\nCRC value is:%s",check_value);

for(i=data_length;i<data_length+N-1;i++)
data[i]=check_value[i-data_length];

printf("\nData to be sent:%s",data);

3
return 0;

OUTPUT:

Enter data to be transmitted: 10101000001110000101

Enter the generating polynomial: 101010101010

Data padded with 11 zeros:1010100000111000010100000000000

CRC value is:01100111100

Data to be sent:1010100000111000010101100111100

4. GO BACK N PROTOCOL:

PROGRAM:
#include<stdio.h>
int main(){
int ws,sent=0,ack,i,f;
printf("enter window size:");
scanf("%d",&ws);
printf("\nEnter frame size:");
scanf("%d",&f);
while(1){
for(i=0;i<ws;i++){
printf("\ntransmitting %d",sent);
sent++;
if(sent==f)
break;
}
printf("\nenter last ack recieved :");
scanf("%d",&ack);

if(ack==f-1)
break;
else
sent=ack;

}
}

OUPUT:
enter window size:3

Enter frame size:4

4
transmitting 0
transmitting 1
transmitting 2
enter last ack recieved :1

transmitting 1
transmitting 2
transmitting 3
enter last ack recieved :3

5. SELECTIVE REPEAT ARQ PROTOCOL:

PROGRAM:

#include<stdio.h>
int main(){
int ws,sent=0,ack,i,f;
printf("enter window size:");
scanf("%d",&ws);
printf("\nEnter frame size:");
scanf("%d",&f);
int frames[f];
for(i=0;i<ws;i++){
printf("\nsending frame %d",sent);
sent++;}

for(i=0;i<ws;i++){
printf("\nEnter acknowledgment for frame %d",i);
scanf("%d",&frames[i]);}
while(1){
if(sent==f)
break;
i=sent-ws;

while(i<sent){
if(frames[i]==0){
printf("sending frame %d\n",i);
printf("\nEnter acknowledgment for frame %d",i);
scanf("%d",&frames[i]);
i++;
break;
}
i++;

5
}
if(i==sent){
printf("sending frame %d\n",i);
printf("\nEnter acknowledgment for frame %d",i);
scanf("%d",&frames[i]);
sent++;
}
}
return 0;
}

OUTPUT:
enter window size:4
Enter frame size:8

sending frame 0
sending frame 1
sending frame 2
sending frame 3
Enter acknowledgment for frame 0:1

Enter acknowledgment for frame 1:0

Enter acknowledgment for frame 2:1

Enter acknowledgment for frame 3:1


sending frame 1

Enter acknowledgment for frame 1:1


sending frame 4

Enter acknowledgment for frame 4:0


sending frame 4

Enter acknowledgment for frame 4:1


sending frame 5

Enter acknowledgment for frame 5:1


sending frame 6

Enter acknowledgment for frame 6:1


sending frame 7

Enter acknowledgment for frame 7:1

6. DIJKSTRA’S ALGORITHM:
PROGRAM:

6
#include<stdio.h>
int minimum(int a,int b){
return a<b?a:b;
}
int main(){
int v,i,j;
printf("\nEnter no of vertices");
scanf("%d",&v);
int m[v][v];
for(i=0;i<v;i++){
for(j=0;j<v;j++)
scanf("%d",&m[i][j]);
}
int dist_m[v];
int visited[v];

for(i=0;i<v;i++){
dist_m[i]=999;
visited[i]=0;
}
int starting_v;
printf("please enter the starting vertex:\n");
scanf("%d",&starting_v);
visited[starting_v]=1;
int selected=starting_v;

for(i=0;i<v;i++)
dist_m[i]=m[selected][i];

for(i=0;i<v;i++){
int min=999,min_index;

for(j=0;j<v;j++){
if(dist_m[j]<min&&visited[j]==0){
min=dist_m[j];
min_index=j;
}
}

selected=min_index;
visited[selected]=1;
//min=999;

for(j=0;j<v;j++)
dist_m[j]=minimum(dist_m[j],(dist_m[selected]+m[selected][j]));
}

printf("the distance matrix is:\n");

7
for(i=0;i<v;i++)
printf("%d",dist_m[i]);

return 0;
}

OUTPUT:

Enter no of vertices4
0
2
5
4
2
0
3
7
5
3
0
3
4
7
3
0
please enter the starting vertex:
1
the distance matrix is:
2036

7. DISTANCE VECTOR ALGORITHM:

PROGRAM:

#include<stdio.h>
struct node{
unsigned dist[20];
unsigned from[20];
}rt[10];

int main(){
int costmat[20][20];
int n,i,j,k,count=0;
printf("enter the no of nodes:");
scanf("%d",&n);
printf("\nEnter the cost matrix:\n");
for(i=0;i<n;i++){
for(j=0;j<n;j++){

8
scanf("%d",&costmat[i][j]);
costmat[i][i]=0;
rt[i].dist[j]=costmat[i][j];
rt[i].from[j]=j;
}
}

do{
count=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
if(rt[i].dist[j]>rt[i].dist[k]+rt[k].dist[j]){
rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}
}
}
}
}while(count!=0);

for(i=0;i<n;i++){
printf("\n\nFor router %d\n",i+1);
for(j=0;j<n;j++)
printf("\t\nnode %d via %d Distance %d
\n\n",j+1,rt[i].from[j]+1,rt[i].dist[j]);
}

OUTPUT:

enter the no of nodes:6


Enter the cost matrix:
0
2
5
999
999
999
2
0
999
4
999
999
5

9
999
0
999
1
999
999
4
999
0
6
999
999
999
1
6
0
2
999
999
999
999
2
0

For router 1
node 1 via 1 Distance 0
node 2 via 2 Distance 2
node 3 via 3 Distance 5
node 4 via 2 Distance 6
node 5 via 3 Distance 6
node 6 via 5 Distance 8

For router 2
node 1 via 1 Distance 2
node 2 via 2 Distance 0
node 3 via 1 Distance 7
node 4 via 4 Distance 4
node 5 via 1 Distance 8
node 6 via 1 Distance 10

For router 3
node 1 via 1 Distance 5
node 2 via 1 Distance 7
node 3 via 3 Distance 0
node 4 via 5 Distance 7
node 5 via 5 Distance 1
node 6 via 5 Distance 3

10
For router 4
node 1 via 2 Distance 6
node 2 via 2 Distance 4
node 3 via 5 Distance 7
node 4 via 4 Distance 0
node 5 via 5 Distance 6
node 6 via 5 Distance 8

For router 5
node 1 via 3 Distance 6
node 2 via 1 Distance 8
node 3 via 3 Distance 1
node 4 via 4 Distance 6
node 5 via 5 Distance 0
node 6 via 6 Distance 2

For router 6
node 1 via 5 Distance 8
node 2 via 1 Distance 10
node 3 via 5 Distance 3
node 4 via 5 Distance 8
node 5 via 5 Distance 2
node 6 via 6 Distance 0

8. SUBNET OF HOSTS:

PROGRAM:

#include <stdio.h>
#include <stdlib.h>
int i,j,k,a,b,u,v,n,ne=1;
int min,mincost=0,cost[9][9],parent[9];
int find(int);
int uni(int,int);
int main(){
printf("Enter the no of vertices: ");
scanf("%d",&n);
printf("Enter the cost adjacency matrix:\n");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
scanf("%d",&cost[i][j]);
if(cost[i][j]==0)
cost[i][j]=9999;
}
}
printf("the edges of broadcast tree are \n");
while(ne<n){
for(i=1,min=9999;i<=n;i++){

11
for(j=1;j<=n;j++){
if(cost[i][j]<min){
min=cost[i][j];
a=u=i;
b=v=j;
}
}
}
u=find(u);
v=find(v);
if(uni(u,v)){
printf("%d edge (%d,%d) = %d\n",ne++,a,b,min);
mincost+=min;
}
cost[a][b]=cost[b][a]=9999;
}
printf("minimum cost=%d\n",mincost);
return 0;
}
int find(int i){
while(parent[i])
i=parent[i];
return i;
}

int uni(int i, int j){


if(i!=j){
parent[j]=i;
return 1;
}
return 0;
}

OUTPUT:

Enter the no of vertices: 5


Enter the cost adjacency matrix:
0
3
2
0
0
0
0
2
0
7
0

12
0
0
5
0
0
0
0
0
4
0
0
0
0
0
the edges of broadcast tree are
1 edge (1,3) = 2
2 edge (2,3) = 2
3 edge (4,5) = 4
4 edge (3,4) = 5
minimum cost=13

9. LEAKY BUCKET ALGORITHM:

PROGRAM:

#include<stdio.h>
int main(){
int b_s;
printf("enter bucket size:\n");
scanf("%d",&b_s);

int flowrate=200;
int input,bucket=0,packet_loss=0,i=1;

do{
printf("****Iteration %d****\n",i);
i++;
printf("enter no of input packets:\n");
scanf("%d",&input);

if(bucket+input>b_s){
packet_loss=((bucket+input)-b_s);
bucket=b_s;
}
else{
bucket+=input;
packet_loss=0;

13
}

if(bucket<flowrate){
printf("Outflow packet:%d\n",bucket);
bucket=0;
printf("packets lost:%d\n",packet_loss);
printf("packets in bucket:%d\n",bucket);
}
else{
printf("Outflow packet:%d\n",bucket);
bucket-=flowrate;
printf("packets lost:%d\n",packet_loss);
printf("packets in bucket:%d\n",bucket);
}
}while(bucket>=0);
return 0;
}

OUTPUT:

enter bucket size:


300
****Iteration 1****
enter no of input packets:
500
Outflow packet:300
packets lost:200
packets in bucket:100
****Iteration 2****
enter no of input packets:
50
Outflow packet:150
packets lost:0
packets in bucket:0

10. DATA ENCRYPTION AND DECRYPTION:

PROGRAM:

#include <stdio.h>

int main()
{
int i, x;
char str[100];

printf("\nPlease enter a string:\t");


gets(str);

14
printf("\nPlease choose following options:\n");
printf("1 = Encrypt the string.\n");
printf("2 = Decrypt the string.\n");
scanf("%d", &x);

switch(x)
{
case 1:
for(i = 0; (i < 100 && str[i] != '\0'); i++)
str[i] = str[i] + 3; //the key for encryption is 3 that is added to ASCII value

printf("\nEncrypted string: %s\n", str);


break;

case 2:
for(i = 0; (i < 100 && str[i] != '\0'); i++)
str[i] = str[i] - 3; //the key for encryption is 3 that is subtracted to ASCII value

printf("\nDecrypted string: %s\n", str);


break;

default:
printf("\nError\n");
}
return 0;
}

OUTPUT:

Please enter a string: hello

Please choose following options:


1 = Encrypt the string.
2 = Decrypt the string.
1

Encrypted string: khoor

15

You might also like