0% found this document useful (0 votes)
28 views16 pages

CN Record - Prudhvi

Uploaded by

sivasai1022
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views16 pages

CN Record - Prudhvi

Uploaded by

sivasai1022
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Exercise - 1

/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Implement the data link layer framing methods such as character stuffing and bit stuffing

PROGRAM:

i) Character stuffing
#include<stdio.h>
#include<string.h>
#include<process.h>
void main()
{
int i=0,j=0,n,pos;
char a[20],b[50],ch;
printf("enter string\n");
scanf("%s",&a);
n=strlen(a);
printf("enter position\n");
scanf("%d",&pos);
if(pos>n)
{
printf("invalid position, Enter again :");
scanf("%d",&pos);
}
printf("enter the character\n");
ch=getche();
b[0]='d';
b[1]='l';
b[2]='e';
b[3]='s';
b[4]='t';
b[5]='x';
j=6;
while(i<n)
{
if(i==pos-1)
{
b[j]='d';
b[j+1]='l';
b[j+2]='e';
b[j+3]=ch;
b[j+4]='d';
b[j+5]='l';
b[j+6]='e';
j=j+7;
}
if(a[i]=='d' && a[i+1]=='l' && a[i+2]=='e')
{
b[j]='d';
b[j+1]='l';
b[j+2]='e';
j=j+3;
}
b[j]=a[i];
i++;
j++;
}
b[j]='d';
b[j+1]='l';
b[j+2]='e';
b[j+3]='e';
b[j+4]='t';
b[j+5]='x';
b[j+6]='\0';
printf("\nframe after stuffing:\n");
printf("%s",b);
}

OUTPUT:

enter string
computer
enter position
3
enter the character
n
frame after stuffing:
dlestxcodlendlemputerdleetx
ii) Bit stuffing
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */

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 (0's & 1's only):");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
i=0;
count=1;
j=0;
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:5
Enter input frame (0's & 1's only):1
1
1
1
1
After stuffing the frame is:111110

Exercise - 2
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : To Write a Program to implement data link layer farming method
checksum.

PROGRAM:

#include<stdio.h>
#include<conio.h>
int add(int, int);
int com(int);
void main()
{
int i, j, dl, dil;
int data1[10], data2[10], newdata[10], comp[10], checksum[10];
printf("\n Enter the data length=");
scanf("%d", &dl);
printf("\n Enter the data1 : \n");
for (i = 0; i < dl; i++)
scanf("%d", &data1[i]);
printf("\n Enter the data2 : \n");
for (i = 0; i < dl; i++)
scanf("%d", &data2[i]);
for (i = dl - 1; i >= 0; i--) {
newdata[i] = add(data1[i], data2[i]);
}

printf("\n\n Data 1 : ");


for (i = 0; i < dl; i++)
printf("%d", data1[i]);
printf("\n Data 2 : ");
for (i = 0; i < dl; i++)
printf("%d", data2[i]);

printf("\n\n The new data is : ");


for (i = 0; i < dl; i++) {
printf("%d", newdata[i]);
}
printf("\n Checksum : ");
for (i = 0; i < dl; i++) {
checksum[i] = com(newdata[i]);
printf("%d", checksum[i]);
}

printf("\n\n Receiver Side : \n");


printf("\n Data : ");
for (i = 0; i < dl; i++)
printf("%d", data1[i]);
printf(" ");
for (i = 0; i < dl; i++)
printf("%d", data2[i]);
printf(" ");
for (i = 0; i < dl; i++)
printf("%d", checksum[i]);

printf("\n Addition : ");


for (i = dl - 1; i >= 0; i--) {
newdata[i] = add(newdata[i], checksum[i]);
}
for (i = 0; i < dl; i++) {
printf("%d", newdata[i]);
}
printf("\n Compliment : ");
for (i = 0; i < dl; i++) {
comp[i] = com(newdata[i]);
printf("%d", comp[i]);
}
}

int add(int x, int y) {


static int carry = 0;
if (x == 1 && y == 1 && carry == 0) {
carry = 1;
return 0;
} else if (x == 1 && y == 1 && carry == 1) {
carry = 1;
return 1;
} else if (x == 1 && y == 0 && carry == 0) {
carry = 0;
return 1;
} else if (x == 1 && y == 0 && carry == 1) {
carry = 1;
return 0;
} else if (x == 0 && y == 1 && carry == 0) {
carry = 0;
return 1;
} else if (x == 0 && y == 1 && carry == 1) {
carry = 1;
return 0;
} else if (x == 0 && y == 0 && carry == 0) {
carry = 0;
return 0;
} else {
carry = 0;
return 1;
}
}
int com(int a) {
if (a == 0)
return 1;
else
return 0;
}

OUTPUT:
Enter the data length=4
Enter the data 1:
1
2
5
3
Enter the data 2:
7
5
6
4
Data 1: 1253
Data 2: 7564
The new data is: 1111
Checksum: 0000
Receiver Side:
Data: 1253 7564 0000
Addition 1111
Compliment: 0000

Exercise - 3
/*DATE:
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM: Write a program for Hamming Code generation for error detection and
correction.

PROGRAM:

#include <math.h>
#include <stdio.h>
// Store input bits
int input[32];
// Store hamming code
int code[32];
int ham_calc(int, int);
void solve(int input[], int);
// Function to calculate bit for
// ith position
int ham_calc(int position, int c_l)
{
int count = 0, i, j;
i = position - 1;
// Traverse to store Hamming Code
while (i < c_l) {

for (j = i; j < i + position; j++) {

// If current boit is 1
if (code[j] == 1)
count++;
}
// Update i
i = i + 2 * position;
}
if (count % 2 == 0)
return 0;
else
return 1;
}
// Function to calculate hamming code
void solve(int input[], int n)
{
int i, p_n = 0, c_l, j, k;
i = 0;
// Find msg bits having set bit
// at x'th position of number
while (n > (int)pow(2, i) - (i + 1)) {
p_n++;
i++;
}
c_l = p_n + n;
j = k = 0;
// Traverse the msgBits
for (i = 0; i < c_l; i++) {

// Update the code


if (i == ((int)pow(2, k) - 1)) {
code[i] = 0;
k++;
}

// Update the code[i] to the


// input character at index j
else {
code[i] = input[j];
j++;
}
}

// Traverse and update the


// hamming code
for (i = 0; i < p_n; i++) {
// Find current position
int position = (int)pow(2, i);
// Find value at current position
int value = ham_calc(position, c_l);
// Update the code
code[position - 1] = value;
}

// Print the Hamming Code


printf("\nThe generated Code Word is: ");
for (i = 0; i < c_l; i++) {
printf("%d", code[i]);
}
}

// Driver Code
void main()
{
// Given input message Bit
input[0] = 0;
input[1] = 1;
input[2] = 1;
input[3] = 1;
int N = 4;
// Function Call
solve(input, N);
}

OUTPUT :

The generated Code Word is: 0001111

Exercise - 4
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Write a Program to implement on a data set of characters the three
CRC polynomials – CRC 12, CRC 16 and CRC CCIP.

PROGRAM :
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[50],b[50],c[50],d[50];
int i,j,k,l;
printf("Enter frame:"); /*read the frame*/
gets(a);
strcpy(d,a);
printf("Enter generated frame:"); /*read the generated frame*/
gets(b);
l=strlen(b); /*finding length of the generator*/
for(i=0;i<l-1;i++)
strcat(a,"0");
k=strlen(a); /*finding length of the frame*/
for(i=0;i<l;i++)
c[i]=a[i];
for(i=l;i<k;i++)
{
if(c[0]=='1')
{ /* performing modulo-2 operation*/
for(j=0;j<l;j++)
c[j]=c[j]^b[j];
}
else
{
for(j=0;j<1;j++)
{
if(c[j]=='0')
c[j]='0';
else
c[j]='1';
}
}
printf("\n");
if(i!=k)
{
/* performing last modulo-2 operation and finding reminder*/
for(j=0;j<(l-1);j++)
c[j]=c[j+1];
c[j]=a[i];
}
}
printf("CRC /reminder: \n");
for(i=1;i<l;i++)
printf("%c",c[i]); /*displays the crc*/
printf("\n The transmitted frame:"); /*displays the Transmitted frame*/
printf("%c",d[i]);
for(i=1;i<l;i++)
printf("%c",c[i]);
getch();
}

OUTPUT :
Enter frame:11011011
Enter generated frame :1101

CRC /remainder:000
The transmitted frame:1000

Exercise -5
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Write a Program to implement Sliding window protocol for GoBackN.

Program:

#include<stdio.h>
int main()
{
int windowsize,sent=0,ack,i;
printf("enter window size\n");
scanf("%d",&windowsize);
while(1)
{
for( i = 0; i < windowsize; i++)
{
printf("Frame %d has been transmitted.\n",sent);
sent++;
if(sent == windowsize)
break;
}
printf("\nPlease enter the last Acknowledgement received.\n");
scanf("%d",&ack);

if(ack == windowsize)
break;
else
sent = ack;
}
return 0;

Output:

enter window size:8

Frame has 0 been transmitted.

Frame 1 has been transmitted.

Frame 2 has been transmitted.

Frame 3 has been transmitted.

Frame 4 has been transmitted.

Frame 5 has been transmitted.


Frame 6 has been transmitted.

Frame 7 has been transmitted.

Please enter the last Acknowledgement received.

Frame 2 has been transmitted.

Frame 3 has been transmitted.

Frame 4 has been transmitted.

Frame 5 has been transmitted.

Frame 6 has been transmitted.

Frame 7 has been transmitted.

Please enter the last Acknowledgement received.

Exercise - 6
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Write a Program to implement Sliding window protocol for Selective
repeat.

PROGRAM:

#include<stdio.h>
#include<conio.h>
void main()
{
char sender[50],receiver[50];
int i,winsize;
printf("\n ENTER THE WINDOWS SIZE : ");
scanf("%d",&winsize);
printf("\n SENDER WINDOW IS EXPANDED TO STORE MESSAGE OR WINDOW \
n");
printf("\n ENTER THE DATA TO BE SENT: ");
fflush(stdin);
gets(sender);
for(i=0;i<winsize;i++)
receiver[i]=sender[i];
receiver[i]=NULL;
printf("\n MESSAGE SEND BY THE SENDER:\n");
puts(sender);
printf("\n WINDOW SIZE OF RECEIVER IS EXPANDED\n");
printf("\n ACKNOWLEDGEMENT FROM RECEIVER \n");
for(i=0;i<winsize;i++);
printf("\n ACK:%d",i);
printf("\n MESSAGE RECEIVED BY RECEIVER IS : ");
puts(receiver);
printf("\n WINDOW SIZE OF RECEIVER IS SHRINKED \n");
getch();
}

OUTPUT:

ENTER THE WINDOWS SIZE: 5


SENDER WINDOW IS EXPANDED TO STORE MESSAGE OR WINDOW
ENTER THE DATA TO BE SENT: hai
MESSAGE SEND BY THE SENDER: hai
WINDOW SIZE OF RECEIVER IS EXPANDED
ACKNOWLEDGEMENT FROM RECEIVER
ACK:5
MESSAGE RECEIVED BY RECEIVER IS: hai
WINDOW SIZE OF RECEIVER IS SHRINKED

You might also like