COMPUTER NETWORKS AND UNIX LAB MANUAL

182  Download (0)

Full text

(1)
(2)

COMPUTER NETWORKS AND UNIX LAB MANUAL

Prepared by Mr P. Ramesh babu Mr M.Sivanjaneyulu Department of Information Technology Amrita Sai institute of

science and Technology Paritala.

(3)
(4)

TABLE OF CONTENTS S.NO CONTENTS Page No.

1 Implement the Data link layer framing methods such as character stuffing and bit stuffing.

2 Implement on a data set of characters the CRC

polynomials. 3 Implement Dijkstra’s algorithm to compute the shortest path thru a graph. 4 Take an example subnet graph with weights indicating

delay between nodes. Now obtain Routing table art each node using distance vector routing algorithm.

5 Take an example subnet of hosts .obtain broadcast tree for

it. 6 Description about UNIX commands 7 Description about shells 8 Guidelines to execute the Unix programs 9 Shell script to generate a multiplication table. 10 Shell script that copies multiple files to a Directory. 11 Shell script that counts the number of lines and words

present in a given file. 12 Shell script that Display the list of all files in the given directory. 13 Shell script that adds ,subtracts , multiplies and divides the

given two integers. 14 Shell script to reverse the rows and columns of a matrix. 15 C program that counts the number of blanks in a text file.

a)using standard I/O

b)using system calls 16 Implementation in C the following UNIX commands using system calls.

a)cat b) ls c)mv 17 Program that takes one or more file/directory names as command line arguments and Reports the following information on the file. a)File type b)Number of links c)Time of last access

d)Read, wr ite and Execute permissions. 18 C program that illustrates the uses of the mkdir ,opendir ,readdir ,closedir, and rmdirAPIs. 19 c program that illustrates how to execute two commands concurrently with a command Pipe.

(5)

20 C program that illustrates Two­way communication with

(6)

bidirectional pipes. 21 C program that illustrate the creation of child process using fork system call. 22 C Program that displays the real time of a day every 60

seconds. 23 UNIX Viva Questions and Answers

(7)
(8)

Course context and Overview:

The course entitled as Computer Networks and UNIX Lab is included in the II semester of the III B.                                   

Tech. The pre requisite courses are ANSI C programming and Well known about the Framing and                              Routing algorithms of Computer Networks. This Course contains two parts. In part A it focuses on the                                implementation of framing, Error detecting code Cyclic Redundancy Check and Implementation of                      Routing Algorithms like Dijkstra’s, Distance Vector Routing.

In part B it focuses on the implementation of the programs in UNIX environment and execution of those                                  programs by using Shells. The programs are written in Shell Script and ANSI C. These programs are                                executed by using the UNIX command prompt. The C programs in this Lab were mostly focused on                                the implementation of the UNIX System calls.

Prerequisite Courses: Programming in C, ANSI C, COMPUTER NETWORKS.

Text book references: [1] W.R.Stevens, Unix network programming, Pearson/PHI. [2] Sumithabadas, Unix the ultimate Guide 3e, TMH. [3] Behrouz A. ForouZan, Richrd F Gilberg , Unix and shell programming, CENGAGE. [4] Behrouz A. ForouZan , Data Communications and Networking 4e,TMH [5] Andrew S Tanenbaum , Computer networks 4e,Pearson/PHI

Additional Resources :

[1] http://nptel.iitm.ac.in/courses/Webcourse­contents/IISc­

BANG/Operating%20Systems/pdf/Lecture_notes/Mod%2013_ln.pdf [2] N B Venkateswarlu, Advanced UNIX Programming, BS publications,2e

Programme Educational Objectives (PEOs) for Graduate Programme:

I. Acquire knowledge in basic sciences and fundamentals of Computer Science and Information Technology to excel in professional career by application of innovative practices and continue their education in related fields.

II. Apply mathematical, scientific and computer engineering principles to identify, understand, evaluate, formulate and solutions to meet industry and societal needs.

(9)

III. Ability to analyze real life problems, design computing systems appropriate to its

(10)

solutions that are technically sound, economically feasible and sustainable.

IV. Exhibit professionalism, ethical attitude, effective written and oral communication skills and team work to practice in their profession with high regard to social issues and

responsibilities.

V. Engage in lifelong learning, obtain the tools to successfully identify, adapt to ever changing technologies, to remain current in their profession and be leader in

technological society.

Course Learning Objectives: The objectives of the Course are Correlates to Program

Educational Objectives(PEOs)

Provides Knowledge about how framing ,error checking is done in Data link layer in Computer Networks.

I,II

Implementation of Routing Algorithms which are part of the Network layer.

I,II

Write moderately complex Shell scripts. Make a Shell script executable. II

Make a Shell script executable II Implementing of the Unix commands using system calls in C. II Creating of the child process from a Parent process.

II

Execute programs written in C under UNIX environment.

II

Compile source code into object and executable modules.

II

(11)
(12)

Programs Include:

WEEK­1

1. Introduction to Unix Lab 2. Unix commands Execution WEEK­2

1.Introduction to Shell Script. 2. Write a shell script to generate a multiplication table.

WEEK­3

1. Write a shell script that copies multiple files to a Directory. 2. Write a shell script that counts the number of lines and words present in a

given file.

WEEK­4

1. Write a shell script that Display the list of all files in the given directory. 2. Write a shell script that adds, subtracts, multiplies and divides the given two integers.

There are two division options: one returns the quotient and the returns the remainder. The script requires 3 arguments: the operation to be used and two integer numbers. The options are

add(­a),subtract(­s),multiply(­m),quotient(­c) and remainder(­r).

WEEK­5

1. Write a shell script to reverse the rows and columns of a matrix. 2. Write a C program that counts the number of blanks in a text file.

a)using standard I/O b)using system calls WEEK­6

1 . Implement in C the following UNIX commands using system calls.

a)cat b) ls c)mv 2. Write a program that takes one or more file/directory names as command line arguments and Reports the following information on the file. a)File type b)Number of links c)Time of last access d)Read,wr ite and

Execute permissions.

WEEK­7

1. Write a C program that illustrates the uses of the mkdir ,opendir ,readdir

,closedir, and rmdirAPIs 2. Write a c program that illustrates how to execute two commands concurrently with

a command.

(13)

WEEK­8

(14)

1. Write a C program that illustrates the following

a) Two­way communication with unidirectional pipes. b)Two­way communication with bidirectional pipes. 2. Write a C program that illustrate the creation of child process using fork system call.

WEEK­9

1. Write a C Program that displays the real time of a day every 60 seconds. 2. Implement the Data link layer framing methods such as character stuffing and bit

stuffing.

WEEK­10

1. Implement on a data set of characters the three CRC polynomials­CRC12, CRC16 and CRC CCIP. 2. Implement Dijkstra’s algorithm to compute the shortest path thru a graph.

WEEK­11

1. Take an example subnet graph with weights indicating delay between nodes. Now Obtain Routing table art each node using distance vector routing algorithm.

2. Take an example subnet of hosts .obtain broadcast tree for it.

Selected subset of Program Outcomes for this Course as identified by NBA (from ABET):

Program Outcome

a. An ability to apply knowledge of mathematics, science, and Engineering

b. An ability to design and conduct experiments, as well as to analyze and interpret data c. An ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability

d. An ability to function on multidisciplinary teams

e. An ability to identify, formulate, and solve engineering problem f. An understanding of professional and ethical responsibility g. An ability to communicate effectively

h. The broad education necessary to understand the impact of engineering solutions in a global, economic, environmental and societal context

i. A Recognition of the need for, and an ability to engage in life­long learning j. Acknowledge of contemporary issues

k. An ability to use techniques, skills, and modern engineering tools necessary for

(15)

engineering practice.

(16)

Course Outcomes and their relationship to Program Outcomes : After completion of

(17)

this course, the student shall be able to:

1) Understand how framing, error control is implemented in Data link layer. (po ­a, b) 2) Understand and Implement Routing algorithms(po – a, b)

3) Know about how the UNIX operating system works and usage of UNIX commands.( po­ b).

4) Use the UNIX operating system and able to write the Interactive shell Script programs.(po – b, i )

5) Write the programs using system calls and use the pipes for communication.(po – a,b) 6) Create a child process from parent process.(po –a,b)

Course Learning Outcomes, PO Levels, Instructional Methods, Knowledge Categories:

CLO (Course Learning Outcome)/ Competencies: At the end of the course the student should be able to Levels of coverage: Slightly­1, moderate­2, completely­3 (1:2 means Programme outcome 1 is met moderately by CLO 1)

Cognitive Levels: Remember, Understand, Apply, Analyze, Evaluate, Create

Knowledge Categories: Factual, Conceptual, Procedural, Fundamental Design Concepts, Criteria and Specifications, Practical Constraints, Design Instrumentalities, Met cognitive.

Instructional Methods: M1 ­ Lecture interspersed with discussions M2 ­ Lecture with a quiz M3 ­ Tutorial M4 – Laboratory M5 ­ Group Discussion M6 ­ Group Assignment M7 ­ Group Project M8 ­ Term Paper/Report Innovative Delivery Methods/ Technologies M9 ­ Promote Active Learning M10 – Course/ Learning Management System M11 ­ Video Lectures (NPTEL, SONET, MIT etc) M12 ­ ICT tools

(18)

Knowledge POs­

(19)

Cognitive levels Level

Category

Instructional Methods CLO1

CLO/competency

Ability to understand and implement Data link layer Framing, Error control using CRC a:2, b:3 APPLY

constraints Practical M1,M4

CLO2

Ability to understand and implement Routing algorithms like Distance vector Routing, Dijkstra’s and Hierarchical Routing.

a :2, b:3 APPLY

constraints Practical M1,M4

CLO3

Understand how the UNIX operating system Works, multi user system, Multitasking system, command based system and UNIX commands . Learning about the UNIX shells.

b:2, i:3 Remember

constraints Practical M1,M3,M4

CLO4

Ability to use the UNIX operating system, execute the commands and able to write the shell scripts and execute them.

b:2, i:3 Analyze

constraints Practical M1,M4

CLO5

Ability to use the system calls in writing programs, understand and apply pipes for communication.

(20)

a:2:, b:3 Apply

constraints Practical M1,M4

CLO6

Understand about the Process and able to create a child process from a parent process using fork system call

a:2, b:3 Apply

constraints Practical M1,M4

(21)

CLO/competency­PO matrix: Relationship of Course Learning Outcomes to Computer

(22)

Science & Engineering Program outcomes Comp a b c d E f g h i j K CLO1

2 3

CLO2 2 3 CLO3 2 3 CLO4 2 3 CLO5 2 3 CLO6 2 3

Evaluation of Marks for the Laboratory Exam

Internal Marks 25

For Laboratory courses there should be continuous evaluation during the semester for 25 Internal                          Marks. The distribution of Internal Marks is given below.

Serial No Criteria Marks

1 Day to Day Work 10 2 Record 5 3 Internal Examination 10 External Lab Exam 50

Each semester end lab Examination shall be evaluated by an External Examiner along with an Internal Examiner.

Serial No Criteria Marks

1 Experiment 20 2 Viva 10 3 Results 20

(23)

PART­A

(24)

COMPUTER NETWORKS LAB LIST OF EXPERIMENTS:

1. Implement the Data link layer farming methods such as character stuffing

and bit stuffing. 2. Implement on a data set of characters the three CRC polynomials­

CRC12,CRC16 and CRC CCIP. 3. Implement Dijkstra’s algorithm to compute the shortest path thru a graph. 4. Take an example subnet graph with weights indicating delay between nodes. Now obtain Routing table art each node using distance vector routing algorithm. 5. Take an example subnet of hosts .obtain broadcast tree for it.

(25)

EXPERIMENT NO: 1(a)

(26)

AIM: To write a program to implement Bit­Stuffing

DESCRIPTON: This program is used for stuffing the bits. When there are five consecutive                          ones in given string it stuffs zero after them. while decrypting the zero’s are removed. This                              process is continued for entire given string.

ALGORITHM: 1) Take a flag type array and initialize it with string “01111110” 2) Initialize count to zero and ln to zero 3) Read the bit stream of the frame to an array a 4) Concat the strings temp and flag 5) Initialize i to 0 6) If i less than string length of a

a) if a[i]==1

i. increment the count ii. ln is made equal to string length of temp iii. temp of ln is made equal to a[i] iv. if count is equal to 5

ln is equal to string length of temp temp of ln is equal to ’0’ Count =0 b) else

i. count=0 ii. ln is assigned to string length of temp iii. temp is assigned to a[i] c) i++

goto 7(a) and check the condition and continue 8) Concat the strings temp, flag 9) Concat the strings a and temp 10) Print string after the bit stuffing 11) Stop

PROGRAM: /***********************************************************************

To implement Bit­stuffing

***********************************************************************/ #include<stdio.h>

#include<conio.h> #include<string.h> void main() { char a[50], flag[]=”01111110”;

int count=0,ln=0,I; clrscr();

printf(“Enter bit stream (0,1) of frame”); /* reading bits */

(27)

gets(a); strcat(temp,flag);

(28)

for(i=0;i<strlen(a);i++) {

count=0; ln=strlen(temp); if(a[i]= =’1’) { /* counting number of ones*/

count++; ln=strlen(temp); temp[ln]=a[i]; if(count==5) {

ln=strlen(temp); /* appending zero in ones */ temp[ln]=’0’; } } else { temp[ln]=a[i]; } } }

strcat(temp.flag); strcpy(a,temp);

printf(“\nAfter bit stuffing the frame”); /* printing the stuffed bits */ puts(a); getch(); } INPUT/OUTPUT:

1) Enter the bit stream(0,1) of the frame

0111000011101 After the bit stuffing the frame is

01111110011100001110101111110 2) Enter the bit stream(0,1) of the frame 01111101111110 After the bit stuffing the frame is

01111110011111001111101001111110 CONCLUSION:

The output is correct and the program is error free VIVA QUESTIONS: 1) what is bit stuffing?

Ans ) After consecutive five ones insert zero. Ex) 0100111111110 01001111101110

(29)

EXPERIMENT NO: 1(b)

(30)

AIM: To write a program to implement character stuffing.

DESCRIPTION: This program is used for stuffing the characters. In the input data if DLE exists we stuff another DLE in the data. For starting and ending of data we use DLESTX and DLEETX respectively.while decrypting we remove the stuffed DLE.

ALGORITHM: 1) start 2) Initialize a character type array ‘test’ to “DLE” 3) Initialize the string

‘stx’ with “DLESTX” 4) Initialize the string ‘end’ with “DLEETX” 5) Copy the string stx to t 6) Read the input value to n 7) Read the string to an array 8) initialize i to 0 9) if i< n repeat the following steps

a) if the strings input and test are equal, then concatenate the

string test to t b) concatenate string input to t c) concatenate the string end to t d) print the string t e) copy the string stx to t 10) stop

PROGRAM:

/*PROGRAM TO IMPLEMENT CHARACTER STUFFING*/

#include<stdio.h> #include<conio.h> #include<string.h>

void main() {

char input[10][10]; /* declaration and initialization of variables*/ int i, n; char stx[10]=”DLESTX”; char end[10]=”DLEETX”; char t[50],test[25]=”DLE”; clrscr();

strcpy(t,stx); printf(“enter the input value for n”); /* read n value*/ scanf(“%d”,&n);

for(i=0;i<n;i++) {

printf(“enter the string %d”,i); /*read n strings*/ fflush(stdin”);

(31)

gets(input[i]); } printf(“after character stuffing”); for(i=0i<n;i++) {

(32)

if(strcmp(input[i],test)==0) /*verify if input is same as DLE*/

strcat(t,input[i]); strcat(t,end); fflush(stdin); printf(“%s”,t); printf(“\n”); strcpy(t,stx); } getch(); }

OUTPUT:

1) Enter the input value for n 4 Enter the string ABCFIC Enter the string CILM Enter the string DLE Enter the string ABDLECN After character stuffing

DLESTXABCFICDLEETX DLESTXCILMDLEETX DLESTXDLEDLEDLEETX DLESTXABDLECNDLEETX 2) Enter the input value for n 1 Enter the string 12345 After character stuffing

DLESTX12345DLEETX

CONCLUSION: the output is correct and hence the program is error free.

VIVA QUESTIONS: 1) What are design issues of data link layer?

Ans) services provided to upper layers, framing, error control, flow control.

(33)

EXPERIMENT No:2(a)

(34)

AIM: To write a program to implement CRC Encoding algorithm

DESCRIPTION: (CYCLIC REDUNDANCY CHECK)This program is used for encoding the                  given bits using the generated string. The encoded information is transmitted to the other                          end.For encoding we perform the exclusive operation.

ALGORITHM:

1)Start 2)Read the frame string to cg 3)Read the generated string to cg 4)for the entire string length of cg

a) Concatenate the string 0 to cp 5)print the cp 6)for the entire string length of cp a)calculate p[i]as cp[i]­‘0’ 7)for the entire string length of cg

a)calculate g[i]ascg[i]­‘0’ 8)Initialize i and j to zero 9)while(1) a)Initialize j to zero b)While p[j] is not equal to 1

i)Increment j ii)if j is grater than strlen(cp)­(strlen(cg)­1) then do

1)goto step a iii)Initialize k to zero iv)for i=j to j+strlen(cg) step i and step k 1)p[i]=p[i]^g[k] 10)for i=strlen(cp)­1 to strlen(cp)­(strlen(cg)­1) step down i a)cp=p[i]­‘0’ 11)Print cp which has the data to be transmitted 12)Stop

PROGRAM:

/********program to implement CRC encoding**********/

#include<stdio.h> #include<conio.h> #include<string.h> void main() {

static int p[20],g[20]; int I,j,k; char cp[20],cg[20]; clrscr(); printf(“enter the frame string”); /*

reading strings*/ gets(cp);

(35)

printf(“enter the generated string”); gets(cg);

(36)

for(k=0;k<strlen(cg)­1;k++)

strcat(cp,”0”); for(i=0;i<strlen(cp);i++) p[i]=cp[i]­‘0’; for(i=0;i<strlen(cg);i++)/* removing zeros*/

g[i]=cg[i]­‘0’; printf(“\n”); i=0; j=0; while(1) {

j=0; while(p[j]!=1)/* check until 1*/ j++ ; if(j>=strlen(cp)­(strlen(cg)­1)) break; k=0; for(i=j;i<j+strlen(cg);i++,k++ )

p[i]=p[i]^g[k];/* doing exclusive or operation*/ } printf(“the database transmitted is:”);

for(i=strlen(cp)­1);i>=strlen(cp)­strlen(cg)­1);i­­)

cp[i]=p[i]+'0’; /* appending zeros */ printf(“%s”,cp); getch(); } /**************END OF PROGRAM*****************/

INPUT/OUTPUT:

1)enter the frame string: 11101100 enter the generator string: 1101 the database transmitted is:11101100110 2) enter the frame string:110011010 enter the generator string:1101 the database transmitted is:1100110011011 3) enter the frame

string:1011001010

enter the generator string:1101 the database transmitted is:10011001100110 CONCLUSION:

The output is correct and hence the program is error free.

(37)

EXPERIMENT NO:2(b)

(38)

AIM: To implement the crc decoding algorithm.

DESCRIPTION:This program is used for decoding the string which is encoded in the CRC                          encoding algorithm. Also we check for the errors that occur in the transmited data. For this                              we use exclusive operation.

ALGORITHM:

1. Start. 2. read the received string in cp. 3. read the generating string cg. 4. for all the values from 0 to the whole length of cp do

p[i]=cp[i]­‘0’. 5. for all the values from 0 to the whole length of cg do g[i]=cg[i]­‘0’. 6. initialize i and j to zero. 7. a. initialize j to zero.

b. increment j until cp[j] is equal to 1. c. if (j>=strlen(cp)­strlen((cg)­1) then goto step 8 d. initialize k to zero. e. from j to j+strlen(cg) do

p[i]=p[i]^g[k] increment i and k. 8. for i is zero to strlen(cp) check if cp[i] is not equal to zero break. 9. a. if I is equal to strlen(cp) then do i. then write there is no error. ii. write the data received is iii. for i from 0 to strlen(cp) then

print cp[i]­‘0’. b. if I is not equalto strlen(cp) then write there is an error. 10.Stop.

PROGRAM:

#include<stdio.h> #include<conio.h> #include<math.h> #include<string.h> main() { static int p[20],g[20]; int i,j,k; char cp[20],cg[20]; clrscr(); printf(“crc received string:”);

/*reading recived string */

gets(cp);

(39)

printf(“enter the polynomial string:”);

(40)

gets(cg);

for(i=0;i<strlen(cp);i++)

p[i]=cp[i]­‘0’; for(i=0;i<strlen(cg);i++) g[i]=cg[i]­‘0’; i=0; j=0; while(1) { j=0; while(p[j]!=1)

j++; if(j>strlen(cp)­(strlen(cg)­1)) break; k=0;

for(i=j;i<j+strlen(cg);i++,k++)

p[i]=p[i]^g[k]; /* dong exclusive or operation */ } for(i=0;i<strlen(cp);i++) /*

checking for errors */

if(p[i]!=0)

break; if(i==strlen(cp)) {

printf(“\n No errors”); printf(“\n The Data received is :”); for(i=0;i<strlen(cp)­(strlen(cg)­1);i++) printf(“%d”,cp[i]­‘0’); /* printing decoded string */ } else

printf(“\n ERROR”); /* reporting errors */ getch(); } INPUT/OUTPUT: 1. crc received string : 11010110111110 Enter the polynomial string 10011

No errors.

The data received is : 1101011011 2. crc received string is : 1110001010 Enter the polynomial string 11010

ERROR. 3. crc received string : 101010110 Enter the polynomial string 10001

(41)

No errors

(42)

The data received is : 111000010.

CONCLUSION:

Hence the program is error free.

VIVA QUESTIONS:

1)CRC is mainly used for?

Ans) Error detection

2)what are different error correction methods?

Ans) Hamming code ,parity check etc.

(43)

EXPERIMENT NO: 3

(44)

AIM: To write a C program to implement the dijsktra’s algorithm.

DESCRIPTION: This program is used for finding the shortest path between nodes. Path is found based on the cost of the path existing between the nodes. Among different paths it selects the minimum path between source and destination.

ALGORITHM:

1. Start. 2. Read the number of nodes to n. 3. Read all the distances to matrix ‘mat’. 4.

Read the source to variable ‘sor’. 5. vnod[v++]=sor 6. Read the destination to des 7. a. cou is incremented .

b. assign visit to zero. c. assign 1000 to small. d. for j from 0 to n incrementing j in steps of 1 and assigning visit to zero repeat

the following steps.

If mat[sor][j]<small && mat [sor][j]!=0then do the following:

for k from 0 to v­1 do

if j=vnod[k] assign 1 to visit if visit!=1 do small=mat[sor][j] assign j to sor vnod[v++]=sor

if sor=des then break e.if sor is not equal to des or cou=n then goto step a otherwise goto step 9. Print the path­vnod[0]+65. 10. for i=1 to v print the

vnod[1]+65. 11. Stop.

PROGRAM: /* to implement dijsktra’s algorithm */ #include<stdio.h> #include<conio.h>

void main() {

int mat[10][10]; int n=8,sor,des,small=1000,vnod[10]={­1},v=0,cou=0; int visit=0,I,j,k; clrscr(

); printf( “ enter the no. of nodes\n”); /* reading no. of nodes */ scanf(“%d”,&n); printf(“enter the distances\n”); /* reading distances */ for(i=0;i<n;i++)

(45)

{

(46)

for(j=0;j<n;j++) {

scanf(“%d”,&mat[i][j]); } } printf(“distances \n”); for(i=0;i<n;i++) { for(j=0;j<n;j++) {

printf(“%d”,mat[i][j]); } printf(“\n”); } printf(“enter the source”); /*reading source */

scanf(“%d”.&sor); vnod[v++]=sor; printf(“\n enter the destination \n”); /* reading destination

*/ scanf(“%d”,&des); do {

cou++ ; visit=0; small=1000; for(j=o;j<n;j++,visit=0) if(mat[sor][j]<small && mat[sor][j]!=0) {

for(k=0;k<v­1;k++) if(j = = vnod[k])

visit=1; /* marking nodes */ if(visit!=1) { small=mat[sor][j]; sor=j; vnod[v++]=sor;

if(sor==des) Break;

} } }while(sor!=des | | cou==n); /* until source equals to destination */

print(“the path is \n”); printf(“%c”,vnod[0]+65); for(i=1;i<v;i++) Printf(“→%c” vnod[i]+65); /* printing path */ getch( ); }

(47)

INPUT/OUTPUT: 1. enter no. of nodes

(48)

4 enter distances 0 3 5 4 3 0 1 0 5 1 0 3 4 0 3 0 the distances are 0 3 5 4 3 0 1 0 5 1 0 3 4 0 3 0 enter the source 0 enter the destination 2 the path is A­­>B­­>C

CONCLUSION: The output is correct and hence the program is error­free.

VIVA QUSTIONS: 1)Is shortest path routing algorithm either static or dynamic routing algorithm ? Ans) static 2) which principle is used in shortest path routing algorithm ? Ans) Dijkstra’s

(49)

EXPERIMENT NO: 4

(50)

AIM: To write a program for implementing the Distance Vector Routing Algorithm

DESCRIPTION: This program is used for finding the shortest path between source and                        destination using time delays. The path is selected based on the minimum time delay of                            the adjacent vertices. The time delays for all the nodes are read as input.

ALGORITHM:

1) start 2) read the number of vertices to nv 3) read the source vertex name and number to sv and sn 4) read the number of adjacent vertices to noadj 5) for each I from 0 to noadj read the time delay to adj node and the name of that node to edel[i] and adver[i] 6) for each I from 0 to noadj

read the time delay from adver[i] to all the other nodes to tdel[i] j varies from 0 to nv 7) for each I from 0 to nv

min=1000 ch=0

a)for each j from 0 to noadj

if min>tdel[j][i]+edel[j] then min=tdel[j][i]+edel[j] ch=adver[j] if i!=sv­1 then

write i+1 ch,min else Write i+1 8) stop PROGRAM:

#include<stdio.h> main() {

int i,j,k,nv,noadj,edel[20],tdel[20][20],min; char sn,adver[20],ch; clrscr();

printf(“\n Enter the number of vertices:”); /* reading vertices */ scanf(“%d”,&nv); printf(“Enter the number of adjacent vertices to the vertex %c :”,sn);

/* enter the adjacent vertices*/ scanf(“%d”,&noadj);

for(i=0;i<noadj;i++) {

(51)

printf(“\n Enter time delay to adj node %d and node name of adj node %d:”,i+1,i+1); /*

(52)

reading time delay and node name*/

scanf(“%d%c”,&edel[i],&adver[i]); } for(i=0;i<noadj;i++) {

printf(“\nEnter the time delay from %c to all other nodes:”,adver[i]);

for(j=0;j<nv;j++) scanf(“%d”,&tdel[i][j]); } printf(“\n Destination Node \t Adjacent Node \t Shortest Delay”);

for(i=0;i<nv;i++) { min=1000; ch=0;

for(j=0;j<noadj;j++)

if(min>tdel[j][i]+edel[j])) /* finding the shortest path */ {

min=tdel[j][i]+edel[j]; ch=adver[j]; } if(i!=sv­1) printf(“\n %d \t \t %d”,i+1,ch,min); else printf(\n

%d­0 »,i+1) ; } getch(); } INPUT/OUTPUT:

Enter number of vertices: 12 Enter source vertex and name: 10j Enter number of adjacent nodes to the source vertex: j 4 Enter time delay to adjacent node 1 and node name of adjacent node: 1 8a Enter time delay to adjacent node 2 and node name of adjacent node:

2 10i Enter time delay to adjacent node 3 and node name of adjacent node: 3 12h Enter time delay to adjacent node 4 and node name of adjacent node:4 9k Enter time delay from a to all other nodes: 0 12 25 40 14 23 18 17 21 9 24 29 Enter time delay from i to all other nodes:

24 36 18 27 7 20 0 11 22 23 Enter time delay from h to all other nodes:

20 31 19 8 30 19 6 0 14 7 22 9 Enter time delay from k to all other nodes: 21 28 36 24 22 40 31 19 22 10 0 9

(53)

Destination Node Adjacent Node Shortest Delay 1 a 8 2 a 20 3 i 28 4 h 20 5 i 17 6 i 30 7 h

(54)

18 8 h 12 9 i 10 10 – 0 11 k 9 12 k 18

CONCLUSION: The output is correct and hence the program is error free.

VIVA QUESTIONS:

1) Is distance vector routing algorithm static or dynamic?

Ans) dynamic 2) what are another names to distance vector routing algorithm?

Ans) Bell man Ford, Ford fulkerson

(55)

EXPERIMENT NO: 5

(56)

AIM: To write a program for implementation of hierarchical routing Algorithm.

DESCRIPTION: This program is used for finding the shortest between the source and                        destination . The shortest path is selected based on the number of hops existing between                            the nodes. The program displays the path to the other region and hops required for that                              going to that region.

ALGORITHM: 1) start 2) read number of vertices no 3) read the source vertex to sv 4) read full table for source vertex sv 5) initialize i to 0 6) if i<no, repeat the following steps

a) read f[i].dest, f[i].line, f[i].hops b) increment i by 1 7) initialize i to 0 8) if i<no repeat the following steps a) if sv[0]==f[i].dest[0]

write f[i].dest, f[i].line, f[i].hops increment i b) else

initialize min to 0, minver to 0 assign f[i].dest[0] to temp while temp is equal to dest[0]

repeat the following if min>f[i].hops then

min=f[i].hops minver=i increment i write temp, f[minver].line, f[minver].hops

Program: #include<stdio.h> #include<conio.h> struct full /*declaration of structure full */ { char line[10],dest[10]; int hops; }f[20];

void main() {

int nv,min ,minver,I; char sv[2],temp; clrscr(); printf(“enter no. of vertices”); /* reading vertices

*/

(57)

scanf(“%d”,&nv); printf(“enter source vertex”); /* reading source vertex */ scanf(“%s”,sv);

(58)

printf(“enter full table for soutce vertex %s”,sv); /* reading distances */ for(i=0;i<no;i++) scanf(%s%s%d”,f[i].dest,f[i].line,&f[i].hops); printf(“\n HIERARCHICAL TABLE\n”);

for(i=0;i<nv;) {

if(sv[0]==f[i].dest[0]) {

printf(“\n%s%s%d”,f[i].dest,f[i].line,f[i].hops); i++; } else {

min=1000; minver=0; while(temp==f[i].dest[0]) /* calculating the minimum distances */

{

if(min>f[i].hops) {

min=f[i].hops; minver=i; } i++; } printf(“\n%c%s%d”,temp,f[minver].line,f[minver].hops);

} } getch(); }

OUTPUT: 1) enter no. of vertices 17 Enter source vertex 1a Enter full table for source vertex 1a 1a 0 0 1b 1b 1 1c 1c 1 2a 1c 2 2b 1c 3 2c 1c 4 2d 1c 3 3a 1c 2 3b 1c 3 4a 1c 4 4b 1c 5

(59)

4c 1c 5 5a 1c 5 5b 1c 5 5c 1c 4 5d 1c 5 5e 1c 6 HIERARCHICAL TABLE

(60)

1a 0 0 1b 1b 1 1c 1c 1 2 1c 2 3 1c 2 4 1c 4 5 1c 5 CONCLUSION: hence the program is error free.

VIVA QUESTIONS: 1) what are advantages of hierarchical routing algorithm? Ans) memory space reduced , time complex reduced,line bandwidth utilized effectively.

2) what are properties of routing algorithm?

Ans) simplicity ,fairness ,optimality, robustness, stability.

(61)

Exercise Problems:

(62)

1. Write a program for DES encryption process

2. Write a program to generate key for RSA algorithm 3. Write a Program to implement RSA encryption.

4. Write a program to implement RSA decryption.

5. Write a program to implement the Hamming code.

(63)

PART­B

(64)

UNIX PROGRAMMING

LAB OBJECTIVE

Upon successful completion of this Lab the student will be able to:

1. Demonstrate how to use the following Bourne Shell commands: cat, grep, ls, more, ps, chmod, finger, ftp, etc.

2. Use the following Bourne Shell constructs: test, if then, if then else, if then elif,

for, while, until, and case. 3. Learn tracing mechanisms (for debugging), user variables,

BourneShell variables, read­only variables, positional parameters, reading input to a BourneShell script, command substitution, comments, and exporting variables. In addition, test on numeric values, test on file type, and test on character strings are covered.

4. Copy, move, and delete files and directories 5. Write moderately complex Shell scripts.

6. Make a Shell script executable.

7. Create a ".profile" script to customize the user environment.

8. Compile source code into object and executable modules.

9. Execute programs written in c under UNIX environment

(65)

LIST OF EXPERIMENTS:

(66)

1) Write a shell script to generate a multiplication table. 2) Write a shell script that copies multiple files to a Directory. 3) Write a shell script that counts the number of lines and words present in a given file. 4) Write a shell script that Display the list of all files in the given directory.

5) Write a shell script that adds ,subtracts ,multiplies and divides the given two

integers. There are two division options: one returns the quotient and the returns the remainder.

The script requires 3 arguments : the operation to be used and two integer numbers.The options are add(­a),subtract(­s),multiply(­m),quotient(­c) and remainder(­r). 6) Write a shell script to reverse the rows and columns of a matrix. 7) Write a C program that counts the number of blanks in a text file.

a)using standard I/O b)using system calls

8) Implement in C the following UNIX commands using system calls.

a)cat b) ls c)mv 9) Write a program that takes one or more file/directory names as command

line arguments and Reports the following information on the file. a)File type b)Number of links c)Time of last access d)Read,wr ite and execute permissions.

10) Write a C program that illustrates the uses of the mkdir ,opendir ,readdir, , . closedir, and rmdir APIs

11) Write a c program that illustrates how to execute two commands

concurrently with a command Pipe. 12) Write a C program that illustrates the following a) Two­way communication with unidirectional pipes. b)Two­way communication with bidirectional pipes. 13) Write a C program that illustrate the creation of child process using

fork System call. 14) Write a c Program that displays the real time of a day every 60 seconds.

(67)
(68)

Basic Unix commands

Command CAT Syntax

cat [argument] [specific file]

Description

“cat" is short for concatenate. This command is used to create, view and concatenate files.

Examples cat /etc/passwd

This command displays the "/etc/passwd" file on your screen.

cat /etc/profile

This command displays the "/etc/profile" file on your screen. Notice that some of the contents of this file                                  may scroll off of your screen.

cat file1 file2 file3 > file4

This command combines the contents of the first three files into the fourth file.

Command pwd Syntax pwd

Description

"pwd" stands for print working directory. It displays your current position in the UNIX filesystem.

Examples pwd

There are no options (or arguments) with the "pwd" command. It is simply used to report your current working directory. Command Ls

Syntax

ls [options] [names]

(69)

"ls" Description

(70)

stands for list. It is used to list information about files and directories.

Examples ls

This is the basic "ls" command, with no options. It provides a very basic listing of the files in your current working directory. Filenames beginning with a decimal are considered hidden files, and they are not shown.

ls ­a

The ­a option tells the ls command to report information about all files, including hidden files.

ls ­l

The ­l option tells the "ls" command to provide a long listing of information about the files and directories it reports. The long listing will provide important information about file permissions, user and group ownership, file size, and creation date.

ls ­al

This command provides a long listing of information about all files in the current directory. It combines the functionality of the ­a and ­l options. This is probably the most used version of the ls command.

ls ­al /usr

This command lists long information about all files in the "/usr" directory.

ls ­alR /usr | more

This command lists long information about all files in the "/usr" directory, and all sub­directories of /usr.

The ­R option tells the ls command to provide a recursive listing of all files and sub­directories.

ls ­ld /usr

Rather than list the files contained in the /usr directory, this command lists information about the /usr directory itself (without generating a listing of the contents of /usr). This is very useful when you want to check the permissions of the directory, and not the files the directory contains.

(71)

Command Mv Syntax mv [options] sources target

(72)

Options ­b backup files that are about to be overwritten or removed

­i interactive mode; if dest exists, you'll be asked whether to overwrite the file

Description The "mv" command is used to move and rename files. Examples mv Chapter1 Chapter1.bad

This command renames the file "Chapter1" to the new name "Chapter1.bad".

mv Chapter1 garbage

This command renames the file "Chapter1" to the new name "garbage". (Notice that if "garbage" is a directory, "Chapter1" would be moved into that directory).

mv Chapter1 /tmp

This command moves the file "Chapter1" into the directory named "/tmp".

mv tmp tmp.old

Assuming in this case that tmp is a directory, this example renames the directory tmp to the new name tmp.old. Command Rm Syntax rm [options] files

Options ­d, ­­directory

unlink FILE, even if it is a non­empty directory (super­user only)

­f, ­­force

ignore nonexistent files, never prompt

­i, ­­interactive

prompt before any removal

­r, ­R, ­­recursive

remove the contents of directories recursively

(73)

­v, ­­verbose

(74)

explain what is being done

Description The "rm" command is used to remove files and directories. (Warning ­ be very careful when removing files and directories!) Examples rm Chapter1.bad

This command deletes the file named "Chapter1.bad" (assuming you have permission to delete this file).

rm Chapter1 Chapter2 Chapter3

This command deletes the files named "Chapter1", "Chapter2", and "Chapter3".

rm ­i Chapter1 Chapter2 Chapter3

This command prompts you before deleting any of the three files specified. The ­i option stands for inquire. You must answer y (for yes) for each file you really want to delete. This can be a safer way to delete files.

rm *.html

This command deletes all files in the current directory whose filename ends with the characters ".html".

rm index*

This command deletes all files in the current directory whose filename begins with the characters "index".

rm ­r new­novel

This command deletes the directory named "new­novel". This directory, and all of its' contents, are erased from the disk, including any sub­directories and files.

Command Cp Syntax cp [options] file1 file2

(75)

cp [options] files directory

(76)

Options ­b backup files that are about to be overwritten or removed

­i interactive mode; if dest exists, you'll be asked whether to

overwrite the file ­p preserves the original file's ownership, group, permissions, and timestamp

Description The "cp" command is used to copy files and directories.

Note that when using the cp command, you must always specify both the source and destination of the file(s) to be copied.

Examples cp .profile .profile.bak

This command copies your ".profile" to a file named ".profile.bak".

cp /usr/fred/Chapter1 .

This command copies the file named "Chapter1" in the "/usr/fred" directory to the current directory. This example assumes that you have write permission in the current directory.

cp /usr/fred/Chapter1 /usr/mary

This command copies the "Chapter1" file in "/usr/fred" to the directory named "/usr/mary". This example                            assumes that you have write permission in the "/usr/mary" directory.

Command Grep Syntax grep [options] regular expression [files]

Options ­i case­insensitive search

­n show the line# along with the matched line ­v invert match, e.g. find all lines that do NOT match

­w match entire words, rather than substrings

(77)

Description Think of the "grep" command as a "search" command (most people wish it was named

(78)

"search"). It is used to search for text strings within one or more files. Examples grep 'fred' /etc/passwd This command searches for all occurrences of the text string 'fred' within the "/etc/passwd" file. It will find and print (on the screen) all of the lines in this file that contain the text string 'fred', including lines that contain usernames like "fred" ­ and also "alfred".

grep '^fred' /etc/passwd

This command searches for all occurrences of the text string 'fred' within the "/etc/passwd" file, but also requires that the "f" in the name "fred" be in the first column of each record (that's what the caret

character tells grep). Using this more­ advanced search, a user named "alfred" would not be matched, because the letter "a" will be in the first column.

grep 'joe' *

This command searches for all occurrences of the text string 'joe' within all files of the current directory.

Command Mkdir Syntax mkdir [options] directory name

Description The "mkdir" command is used to create new directories (sub­directories). Examples mkdir tmp

This command creates a new directory named "tmp" in your current directory. (This example assumes                            that you have the proper permissions to create a new sub­directory in your current working directory.) mkdir memos letters e­mail

This command creates three new sub­directories (memos, letters, and e­mail) in the current directory.

mkdir /usr/fred/tmp

This command creates a new directory named "tmp" in the

(79)

directory "/usr/fred". "tmp" is now a sub­directory of "/usr/fred". (This example assumes that you have                           

(80)

the proper permissions to create a new directory in /usr/fred.) mkdir ­p /home/joe/customer/acme

This command creates a new directory named /home/joe/customer/acme, and creates any intermediate                      directories that are needed. If only /home/joe existed to begin with, then the directory "customer" is                              created, and the directory "acme" is created inside of customer.

Command Rmdir Syntax rmdir [options] directories Description The "rm" command is used to remove files and directories. (Warning ­ be very careful when removing files and directories!) Examples rm

Chapter1.bad

This command deletes the file named "Chapter1.bad" (assuming you have permission to delete this file).

rm Chapter1 Chapter2 Chapter3

This command deletes the files named "Chapter1", "Chapter2", and "Chapter3".

rm ­i Chapter1 Chapter2 Chapter3

This command prompts you before deleting any of the three files specified. The ­i option stands for inquire. You must answer y (for yes) for each file you really want to delete. This can be a safer way to delete files.

rm *.html

This command deletes all files in the current directory whose filename ends with the characters ".html".

rm index*

This command deletes all files in the current directory whose filename begins with the characters "index".

rm ­r new­novel

(81)

This command deletes the directory named "new­novel". This directory, and all of its' contents, are

(82)

erased from the disk, including any sub­directories and files.

Command cd, chdir Syntax cd [name of directory you want to move to]

Description "cd" stands for change directory. It is the primary

command for moving around the filesystem. Examples cd /usr

This command moves you to the "/usr" directory. "/usr" becomes your current working directory.

cd /usr/fred

Moves you to the "/usr/fred" directory.

cd /u*/f*

Moves you to the "/usr/fred" directory ­ if this is the only directory matching this wildcard pattern.

cd

Issuing the "cd" command without any arguments moves you to your home directory.

cd ­

Using the Korn shell, this command moves you back to your previous working directory. This is very useful when you're in the middle of a project, and keep moving back­and­forth between two

directories.

Command Kill Syntax kill [options] IDs Description

kill ends one or more process IDs. In order to do this you

(83)

must own the process or be designated a privileged user. To find the process ID of a certain job use ps.

Figure

Updating...

References

Related subjects :