0% found this document useful (0 votes)
22 views60 pages

CS8581 Networks Lab Manual Final

The document outlines a series of experiments for a Networks Laboratory course, focusing on various networking commands and programming tasks. Key experiments include using tools like tcpdump and netstat, developing HTTP web client programs, and creating applications using TCP sockets for tasks like echo servers and file transfers. The document also includes pre-lab discussions, algorithms, and sample code for implementing these tasks.

Uploaded by

anitha
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)
22 views60 pages

CS8581 Networks Lab Manual Final

The document outlines a series of experiments for a Networks Laboratory course, focusing on various networking commands and programming tasks. Key experiments include using tools like tcpdump and netstat, developing HTTP web client programs, and creating applications using TCP sockets for tasks like echo servers and file transfers. The document also includes pre-lab discussions, algorithms, and sample code for implementing these tasks.

Uploaded by

anitha
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/ 60

LTPC

CS8581 NETWORKS LABORATORY


0042

LIST OF EXPERIMENTS
1. Learn to use commands like tcpdump, netstat, ifconfig, nslookup and traceroute.
Capture ping and traceroute PDUs using a network protocol analyzer and examine.

2. Write a HTTP web client program to download a web page using TCP sockets.

3. Applications using TCP sockets like:

▪ Echo client and echo server


▪ Chat
▪ File Transfer
4. Simulation of DNS using UDP sockets.

5. Write a code simulating ARP /RARP protocols.

6. Study of Network simulator (NS) and Simulation of Congestion Control Algo-


rithms using NS.

7. Study of TCP/UDP performance using Simulation tool.

8. Simulation of Distance Vector/ Link State Routing algorithm.

9. Performance evaluation of Routing protocols using Simulation tool.

10. Simulation of error correction code (like CRC).

1
EX.NO : 1

Learn To Use Commands Like Tcpdump, Netstat, Ifconfig, Nslookup And Protocol Tracerout
DATE:

AIM: To learn to use commands like tcpdump, netstat, ifconfig, nslookup and protocol traceroute. Capture
ping and traceroute PDUs using a network analyzer and examine.

PRE LAB DISCUSSION:


Tcpdump:

The tcpdump utility allows you to capture packets that flow within your network to assist in network trouble-
shooting. The following are several examples of using tcpdump with different options. Traffic is captured based on a
specified filter.
Netstat:

Netstat is a common command line TCP/IP networking available in most versions of Windows, Linux, UNIX and
other operating systems.

Netstat provides information and statistics about protocols in use and current TCP/IP network connections.
ipconfig :

ipconfig is a console application designed to run from the Windows command prompt. This utility allows you to
get the IP address information of a Windows computer.

From the command prompt, type ipconfig to run the utility with default options. The output of the default command
contains the IP address, network mask, and gateway for all physical and virtual network adapter .
nslookup :
The nslookup (which stands for name server lookup) command is a network utility program used to obtain infor-
mation about internet servers. It finds name server information for domains by querying the Domain Name System .
Trace route:
Traceroute is a network diagnostic tool used to track the pathway taken by a packet on an IP network from source
to destination. Traceroute also records the time taken for each hop the packet makes during its route to the
destination

Commands:
Tcpdump:
Display traffic between 2 hosts:
To display all traffic between two hosts (represented by variables host1 and host2): # tcpdump host host1 and
host2
2
Display traffic from a source or destination host only:
To display traffic from only a source (src) or destination (dst) host: #
tcpdump src host
# tcpdump dst host
Display traffic for a specific protocol
Provide the protocol as an argument to display only traffic for a specific protocol, for example tcp, udp,
icmp, arp
# tcpdump protocol
For example to display traffic only for the tcp traffic :
# tcpdump tcp
Filtering based on source or destination port
To filter based on a source or destination port:
# tcpdump src port ftp
# tcpdump dst port http

2.Netstat
Netstat is a common command line TCP/IP networking available in most versions of
Windows, Linux, IX UNand other operating systems.
Netstat provides information and statistics about protocols in use and current TCP/IP network
connections. The Windows help screen (analogous to a Linux or UNIX for netstat reads as follows:
displays protocol statisticscurrent
and TCP/IP network connections.
#netstat

3. ipconfig
In Windows, ipconfigis a console application designed to run from the Windows command
prompt. This utility allows you to get the IP address information of a Windows computer.

3
From the command prompt, type ipconfig to run the utility with default options. The output of the
default command contains the IP address, network mask, and gateway for all physical and virtual net-
work adapter.

#ipconfig

4.nslookup
The nslookup (which stands for name server lookup) command is a network utility program used
to obtain information about internet servers. It finds name server information for domains by querying
the Domain Name System.

The nslookup command is a powerful tool for diagnosing DNS problems. You know you're expe-
riencing a DNS problem when you can access a resource by specifying its IP address but not its DNS
name.

#nslookup

5.Trace route:

Traceroute uses Internet Control Message Protocol (ICMP) echo packets with variable time to live
(TTL) values. The response time of each hop is calculated. To guarantee accuracy, each hop is queried
multiple times (usually three times) to better measure the response of that particular hop.
Traceroute is a network diagnostic tool used to track the pathway taken by a packet on an IP network
from source to destination. Traceroute also records the time taken for each hop the packet makes during
its route to the destination. Traceroute uses Internet Control Message Protocol (ICMP) echo packets
with variable time to live (TTL) values.

The response time of each hop is calculated. To guarantee accuracy, each hop is queried mul-
tiple times (usually three times) to better measure the response of that particular hop. Traceroute sends
packets with TTL values that gradually increase from packet to packet, starting with TTL value of one.
Routers decrement TTL values of packets by one when routing and discard packets whose TTL value
has reached zero, returning the ICMP error message ICMP Time Exceeded.

For the first set of packets, the first router receives the packet, decrements the TTL value and
drops the packet because it then has TTL value zero. The router sends an ICMP Time Exceeded mes-
sage back to the source. The next set of packets are given a TTL value of two, so the first router
forwards the packets, but the second router drops them and replies with ICMP Time Exceeded.

4
Proceeding in this way, traceroute uses the returned ICMP Time Exceeded messages to build a list of
routers that packets traverse, until the destination is reached and returns an ICMP Echo Reply message.
With the tracert command shown above, we're asking tracert to show us the path from the local com-
puter all the way to the network device with the hostname

www.google.com.

6.Ping:
The ping command sends an echo request to a host available on the network. Using this command,
you can check if your remote host is responding well or not. Tracking and isolating hardware and
software p roblems. Determining the status of the network and various foreign hosts. The ping
command is usually used as a simple way to verify that a computer can communicate over the network
with another computer or network device. The ping command operates by send ing Internet Control
Message Protocol (ICMP) Echo Request messages to the destination computer and waiting for a
response

# ping172.16.6.2
#tracert google.com

5
VIVA(Pre &Post Lab) QUESTIONS:

1. Define network
2. Define network topology
3. What is OSI Layers.
4. What is the use of netstat command?
5. What is nslookup command?
6. What is the purpose of traceroute command?
7. What is ping command.

RESULT:

Thus the various networks commands like tcpdump, netstat, ifconfig, nslookup and traceroute ping are
executed successfully.

6
EX.NO : 2
HTTP FOR WEB PAGE UPLOAD AND DOWNLOAD
DATE :

AIM:
To write a java program for socket for HTTP for web page upload and download .

PRE LAB DISCUSSION:


• HTTP means HyperText Transfer Protocol. HTTP is the underlying protocol used by the World Wide
Web and this protocol defines how messages are formatted and transmitted, and what actions Web
servers and browsers should take in response to various commands.
• For example, when you enter a URL in your browser, this actually sends an HTTP command to the
Web server directing it to fetch and transmit the requested Web page.
• The other main standard that controls how the World Wide Web works is HTML, which covers how
Web pages are formatted and displayed. HTTP functions as a request–response protocol in the client–
server computing model.
• A web browser, for example, may be the client and an application running on a computer hosting a
website may be the server.
• The client submits an HTTP request message to the server. The server, which provides resources such
as HTML files and other content, or performs other functions on behalf of the client, returns a re-
sponsemessage to the client.
• The response contains completion status information about the request and may also contain requested
content in its message body.

ALGORITHM:

Client:
1. Start.
2. Create socket and establish the connection with the server.
3. Read the image to be uploaded from the disk
4. Send the image read to the server 5. Terminate the connection 6. Stop.

Server:
1. Start
2. Create socket, bind IP address and port number with the created socket and make server a listening server.
3. Accept the connection request from the client
4. Receive the image sent by the client.
5. Display the image.
6. Close the connection.
7. Stop.
7

Downloaded from: annauniversityedu.blogspot.com


PROGRAM
Client

import javax.swing.*;
import java.net.*; import
java.awt.image.*; import
javax.imageio.*; import
java.io.*;
import java.awt.image.BufferedImage; import
java.io.ByteArrayOutputStream; import
java.io.File;
import java.io.IOException; import
javax.imageio.ImageIO;
public class Client

public static void main(String args[]) throws Exception


{
Socket soc;
BufferedImage img = null;
soc=new
Socket("localhost",4000);
System.out.println("Client is running.
");
try {
System.out.println("Reading image from disk. ");
img = ImageIO.read(new File("digital_image_processing.jpg"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
baos.flush();
byte[] bytes = baos.toByteArray(); baos.close();
System.out.println("Sending image to server.");
OutputStream out = soc.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.writeInt(bytes.length);
dos.write(bytes, 0, bytes.length);
System.out.println("Image sent to server. ");

Downloaded from: annauniversityedu.blogspot.com


dos.close();

out.close();
}
catch (Exception e)
{
System.out.println("Exception: " + e.getMessage());
soc.close();
}
soc.close();
}
}

Server

Downloaded from: annauniversityedu.blogspot.com


import java.net.*;
import java.io.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.swing.*;
class Server

public static void main(String args[]) throws Exception


{
ServerSocket server=null;
Socket socket;
server=new ServerSocket(4000);
System.out.println("Server Waiting for image");
socket=server.accept(); System.out.println(
"Client connected.");
InputStream in = socket.getInputStream();
DataInputStream dis = new DataInputStream(in);
int len = dis.readInt();
System.out.println("Image Size: " + len/1024 + "KB"); byte[] data = new byte[len];
dis.readFully(data);
dis.close();
in.close();
InputStream ian = new ByteArrayInputStream(data);
BufferedImage bImage = ImageIO.read(ian);
JFrame f = new JFrame("Server");
ImageIcon icon = new ImageIcon(bImage);
JLabel l = new JLabel();
l.setIcon(icon);
f.add(l);
{

10

Downloaded from: annauniversityedu.blogspot.com


f.pack();
f.setVisible(true);
}
}

OUTPUT:

VIVA(Pre &Post Lab) QUESTIONS:

1. What is URL.
2. Why is http required?
3. What id http client?
4. what is WWW?
5. Compare HTTP and FTP.
6. Define Socket.
7. What do you mean by active web page?
8. What are the four Main properties of HTTP?
.

RESULT:
Thus the socket program for HTTP for web page upload and download was developed and exe-
cuted successfully.

11

Downloaded from: annauniversityedu.blogspot.com


EX NO : 3
Applications using TCP sockets like : echo client and echo server ,chat

DATE: and File transfer

AIM:
To write a java program for application using TCP Socket

PRE LAB DISCUSSION:


• In the TCP Echo client a socket is created. Using the socket a connection is made to the
server using the connect() function. After a connection is established, we send messages
input from the user and display the data received from the server using send() and read()
functions.
• In the TCP Echo server, we create a socket and bind to a advertized port number. After
binding the process listens for incoming connections. Then an infinite loop is started to pro-
cess the client requests for connections. After a connection is requested, it accepts the con-
nection from the client machine and forks a new process.
• The new process receives data from the lient using recv() function and echoes the same data
using the send() function. Please note hat this server is capable of handling multiple clients
as it forks a new process for every client trying to connect to the server. TCP socket routines
enable reliable IP communication using the transmission control protocol (TCP).
• The implementation of the Transmission Control Protocol (TCP) in the Network Compo-
nent. TCP runs on top of the Internet Protocol (IP). TCP is a connectionoriented and reliable,
full duplex protocol supporting a pair of byte streams, one for each direction.
• A TCP connection must be established before exchanging data. TCP retransmits data that
do not reach the final destination due to errors or data corruption. Data is delivered in the
sequence of its transmission

a.Echo client and echo server

ALGORITHM

Client
1. Start
2. Create the TCP socket
3. Establish connection with the server
4. Get the message to be echoed from the user

12

Downloaded from: annauniversityedu.blogspot.com


5. Send the message to the server
6. Receive the message echoed by the server
7. Display the message received from the server
8. Terminate the connection
9. Stop

Server
1. Start
2. create TCP socket make it a listening Socket
3.Accept the connection request sent by the client for connection establishment
4. Receive the message sent by the client
5. Display the received message
6. Send the received message to the client from which it receives
7. Close the connection when client initiates termination and server becomes a listening server,
8. waiting for clients.

PROGRAM:
EchoServer.java
Create TCP socket, make it a listening socket
import java.net.*;
import java.io.*;
public class EServer
public static void main(String args[])

{
ServerSocket s=null;
String line;
DataInputStream is;
PrintStream ps;
Socket c=null;
try
{
s=new ServerSocket(9000);
}
catch(IOException e)
{

13

Downloaded from: annauniversityedu.blogspot.com


System.out.println(e);
}
try
{
c=s.accept();
is=new DataInputStream(c.getInputStream()); ps=new
PrintStream(c.getOutputStream());
while(true)
{
line=is.readLine();
ps.println(line);
}
}
catch(IOException e)

14

Downloaded from: annauniversityedu.blogspot.com


{
System.out.println(e);
}
}
{

EClient.java
import java.net.*;
import java.io.*;
public class ECl ient
public static void main(String arg[])
{
Socket c=null;
String line;
DataInputStream is,is1;
PrintStream os;
try
{
InetAddress ia = InetAddress.getLocalHost();
c=new Socket(ia,9000);
}
catch(IOException e)
{
System.out.println(e);
}
try
{
os=new PrintStream(c.getOutputStream());
is=new DataInputStream(System.in);
is1=new DataInputStream(c.getInputStream());
while(true)
{
System.out.println("Client:");
line=is.readLine(); os.println(line);
System.out.println("Server:" + is1.readLine());
}
}
catch(IOException e)
{
15

Downloaded from: annauniversityedu.blogspot.com


System.out.println("Socket Closed!");
}

}}
OUTPUT
Server
C:\Program Files\Java\jdk1.5.0\bin>javac EServer.java
C:\Program Files\Java\jdk1.5.0\bin>java EServer
C:\Program Files\Java\jdk1.5.0\bin>
Client
C:\Program Files\Java\jdk1.5.0\bin>javac EClient.java
C:\Program Files\Java\jdk1.5.0\bin>java EClient
Client: Hai Server
Server:Hai Server
Client: Hello
Server:Hello
Client:end
Server:end
Client:ds
Socket Closed!

B.Chat

ALGORITHM

Client
2. Create the UDP datagram socket
1. Start
3. Get the request message to be sent
from the user
4. Send the request message to the server
5. If the request message is “END” go to step 10
6. Wait for the reply message from the server
7. Receive the reply message sent by the server
8. Display the reply message received from the server
9. Repeat the steps from 3 to 8
10. Stop

Server
1. Start
2. Create UDP datagram socket, make it a listening socket
3. Receive the request message sent by the client
4. If the received message is “END” go to step 10
16

Downloaded from: annauniversityedu.blogspot.com


5. Retrieve the client’s IP address from the request message received
6. Display the received message
7. Get the reply message from the user
8. Send the reply message to the client
9. Repeat the steps from 3 to 8.
10. Stop.

PROGRAM
UDPserver.java
import java.io.*;
import java.net.*;
class UDPserver
{
public static DatagramSocket ds;
public static byte buffer[]=new byte[1024];
public static int clientport=789,serverport=790;
public static void main(String args[])throws Exception
{
ds=new DatagramSocket(clientport);
System.out.println("press ctrl+c to quit the program");
BufferedReader dis=new BufferedReader(new InputStreamReader(System.in));
InetAddress ia=InetAddress.geyLocalHost();
while(true)
{
DatagramPacket p=new DatagramPacket(buffer,buffer.length);
ds.receive(p);
String psx=new String(p.getData(),0,p.getLength());
System.out.println("Client:" + psx);
System.out.println("Server:");
String str=dis.readLine();
if(str.equals("end"))
break;
buffer=str.getBytes();
ds.send(new DatagramPacket(buffer,str.length(),ia,serverport));
}
}
}
UDPclient.java
import java .io.*;
import java.net.*;
class UDPclient
17

Downloaded from: annauniversityedu.blogspot.com


{
public static DatagramSocket ds; public static int cli-
entport=789,serverport=790;
public static void main(String args[])throws Exception
}

C:\Program Files\Java\jdk1.5.0\bin>javac UDPserver.java C:\Program


Files\Java\jdk1.5.0\bin>java UDPserver
press ctrl+c to quit the program
Client:Hai Server
Server:Hello Client
Client:How are You
Server:I am Fine

Client

PROGRAM
File Server : import java.io.BufferedInputStream;

18

Downloaded from: annauniversityedu.blogspot.com


import java.io.File; import
java.io.FileInputStream; im-
port java.io.OutputStream;
import java.net.InetAddress;

public class FileServer

public static void main(String[] args) throws Exception


{
//Initialize Sockets
ServerSocket ssock = new ServerSocket(5000); Socket
socket = ssock.accept();
//The InetAddress specification
InetAddress IA = InetAddress.getByName("localhost");

//Specify the file


File file = new File("e:\\Bookmarks.html");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis); //Get
socket's output stream
OutputStream os = socket.getOutputStream(); //Read
File Contents into contents array
byte[] contents;
long fileLength = file.length();
long current = 0;
long start = System.nanoTime();
while(current!=fileLength){
import java.net.ServerSocket;
import java.net.Socket

int size = 10000;


if(fileLength - current >= size)
current += size;

19

Downloaded from: annauniversityedu.blogspot.com


else{
size = (int)(fileLength - current); current = fileLength;

}
contents = new byte[size];
bis.read(contents, 0, size);
os.write(contents);
System.out.print("Sending file ... "+(current*100)/fileLength+"% complete!");

}
os.flush();
//File transfer done. Close the socket connection!
socket.close(); ssock.close();

System.out.println("File sent succesfully!");


}}

File Client:
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;

public class FileClient {


public static void main(String[] args) throws Exception{
//Initialize socket
Socket socket = new Socket(InetAddress.getByName("localhost"), 5000); byte[]
contents = new byte[10000];
//Initialize the FileOutputStream to the output file's full path. FileOutputStream fos = new
FileOutputStream("e:\\Bookmarks1.html");
BufferedOutputStream bos = new BufferedOutputStream(fos);
InputStream is = socket.getInputStream();
//No of bytes read in one read() call
int bytesRead = 0;
while((bytesRead=is.read(contents))!=-1)
bos.write(contents, 0, bytesRead);

20

Downloaded from: annauniversityedu.blogspot.com


bos.flush();

socket.close();
System.out.println("File saved successfully!");

}
}

Output

server

21

Downloaded from: annauniversityedu.blogspot.com


E:\nwlab>java FileServer
Sending file ... 9% complete!
Sending file ... 19% complete!
Sending file ... 28% complete!
Sending file ... 38% complete!
Sending file ... 47% complete!
Sending file ... 57% complete!
Sending file ... 66% complete!
Sending file ... 76% complete!
Sending file ... 86% complete!
Sending file ... 95% complete!
Sending file ... 100% complete!
File sent successfully!

E:\nwlab>client
E:\nwlab>java FileClient
File saved successfully!

E:\nwlab>

VIVA(Pre &Post Lab) QUESTIONS:

1. What is LAN.
2. Mention the roles of Transport layer.
3. State the differences between TCP and UDP
4. What are well-known ports?
5. What are MAC addresses?
6. What is TCP Echo Client Server?
7. Define the three states of TCP Connection establishment and termination.
8. List the types of sockets

RESULT:
Thus the java application program using TCP Sockets was developed and executed successfully.

22

Downloaded from: annauniversityedu.blogspot.com


EX.NO : 4
Simulation Of DNS Using UDP Sockets
DATE:

AIM:

To write a java program for Simulation of DNS using UDP Sockets

PRE LAB DISCUSSION:

• The Domain Name System (DNS) is a hierarchical decentralized naming system for computers,
services, or other resources connected to the Internet or a private network. It associates various
information with domain names assigned to each of the participating entities.
• The domain name space refers a hierarchy in the internet naming structure. This hierarchy has
multiple levels (from 0 to 127), with a root at the top. The following diagram shows the domain
name space hierarchy.
• Name server contains the DNS database. This database comprises of various names and their
corresponding IP addresses. Since it is not possible for a single server to maintain entire DNS
database, therefore, the information is distributed among many DNS servers.
• Types of Name Servers
• Root Server is the top level server which consists of the entire DNS tree. It does not contain the
information about domains but delegates the authority to the other server
• Primary Server stores a file about its zone. It has authority to create, maintain, and update the
zone file.
• Secondary Server transfers complete information about a zone from another server which may be
primary or secondary server. The secondary server does not have authority to create or update a
zone file.
• DNS is a TCP/IP protocol used on different platforms. The domain name space is divided into
three different sections: generic domains, country domains, and inverse domain.
• The main function of DNS is to translate domain names into IP Addresses, which computers can
understand. It also provides a list of mail servers which accept Emails for each domain name.
Each domain name in DNS will nominate a set of name servers to be authoritative for its DNS
records.

ALGORITHM Server
1. Start
2. Create UDP datagram socket
3. Create a table that maps host name and IP address
23

Downloaded from: annauniversityedu.blogspot.com


4. Receive the host name from the client
5. Retrieve the client’s IP address from the received datagram 6. Get the IP address mapped for the host name
from the table.
7. Display the host name and corresponding IP address
8. Send the IP address for the requested host name to the client 9. Stop.
Client
1. Start
2. Create UDP datagram socket.
3. Get the host name from the client
4. Send the host name to the server
6. Receive the reply datagram and read the IP address for the requested host name
7. Display the IP address.
8. Stop.

PROGRAM
DNS Server
java import java.io.*;
import java.net.*;
public class udpdnsserver
{
private static int indexOf(String[] array, String str)
{
str = str.trim();
for (int i=0; i < array.length; i++)
{
if (array[i].equals(str))
return i;
}
return -1;
}
public static void main(String arg[])throws IOException
{
String[] hosts = {"yahoo.com", "gmail.com","cricinfo.com", "facebook.com"};
String[] ip = {"68.180.206.184", "209.85.148.19","80.168.92.140", "69.63.189.16"};
System.out.println("Press Ctrl + C to Quit");
while (true)
5. Wait for the reply from the server
{
DatagramSocket serversocket=new DatagramSocket(1362);
byte[] senddata = new byte[1021];

24

Downloaded from: annauniversityedu.blogspot.com


byte[] receivedata = new byte[1021];
DatagramPacket recvpack = new DatagramPacket(receivedata, receivedata.length); serv-
ersocket.receive(recvpack);
String sen = new String(recvpack.getData());
InetAddress ipaddress = recvpack.getAddress();
int port = recvpack.getPort();
String capsent;
System.out.println("Request for host " + sen);
if(indexOf (hosts, sen) != -1) capsent = ip[in-
dexOf (hosts, sen)]; else
capsent = "Host Not Found";
senddata = capsent.getBytes();
DatagramPacket pack = new DatagramPacket (senddata, senddata.length,ipaddress,port);
serversocket.send(pack);
serversocket.close();
}}}
UDP DNS Client
java import java.io.*;
import java.net.*;
public class udpdnsclient
{
public static void main(String args[])throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientsocket = new DatagramSocket();
InetAddress ipaddress;
if (args.length == 0)
ipaddress = InetAddress.getLocalHost();
else
ipaddress = InetAddress.getByName(args[0]);
byte[] senddata = new byte[1024];
byte[] receivedata = new byte[1024];
int portaddr = 1362;
System.out.print("Enter the hostname : ");
String sentence = br.readLine();
Senddata = sentence.getBytes();
DatagramPacket pack = new DatagramPacket(senddata,senddata.length,
ipaddress,portaddr); clientsocket.send(pack);
DatagramPacket recvpack =new DatagramPacket(receivedata,receivedata.length); clien-
tsocket.receive(recvpack);

25

Downloaded from: annauniversityedu.blogspot.com


String modified = new String(recvpack.getData());
System.out.println("IP Address: " + modified); clientsocket.close()
}}

OUTPUT
Server javac udpdnsserver.java
java udpdnsserver
Press Ctrl + C to Quit Request for host yahoo.com
Request for host youtube.com

Client
>javac udpdnsclient.java
>java udpdnsclient
Enter the hostname : yahoo.com
IP Address: 68.180.206.184
>java udpdnsclient
Enter the hostname : cricinfo.com
IP Address: 80.168.92.140
>java udpdnsclient
Enter the hostname : youtube.com
IP Address: Host Not Found

VIVA (Pre & Post Lab) QUESTIONS:

1. What layer is DNS?


2. What is pupose of network layer?
3. What is logical address
4. What type of transport protocol is used for DNS.
5. What is difference between IP address and DNS?
6. What is a DNS and how does it work?
7. Why do we need a Domain Name System?
8. What role does the DNS Resolver play in the DNS System.
9. What is DNS and its types?.
10. List the Two types of DNS message
Request for host cricinfo.com

RESULT:
Thus the java application program using UDP Sockets to implement DNS was developed and executed
successful

26

Downloaded from: annauniversityedu.blogspot.com


EX.NO : 5
Wireshark To Capture Packets And Examine The Packets

DATE :

AIM :
To use a tool like Wireshark to capture packets and examine the packets.

PROCEDURE:

1.Download and install Wireshark on your computer.

2.Open Wireshark and select the network interface you want to capture packets on.

3.Click on the "Start" button to start capturing packets.

4.Perform the actions you want to capture, such as browsing a website or sending an email.

5.Click on the "Stop" button to stop capturing packets.

Once you have captured packets, you can examine them in Wireshark by following these steps:

1.Select a packet in the list of captured packets.

2.Expand the sections of the packet to view its details, such as the source and destination ad-

dresses, protocol used, and payload.

3.Use Wireshark's filters and search functions to locate specific packets or information within

packets.

4.Analyze the packet information to understand the network traffic and identify any issues or

anomalies.

RESULT:

Thus using wireshark the packets are captured and examined successfully.

27

Downloaded from: annauniversityedu.blogspot.com


EX.NO : 6
Simulating ARP / RARP protocols
DATE :

Aim:

To write a java program for simulating arp/rarp protocols.

ALGORITHM:

SERVER

1. Create a server socket and bind it to port.

2. Listen for new connection and when a connection arrives, accept it.

3. Send server‟s date and time to the client.

4. Read client‟s IP address sent by the client.

5. Display the client details.

6. Repeat steps 2-5 until the server is terminated.

7. Close all streams.

8. Close the server socket.

9. Stop.

CLIENT

1. Create a client socket and connect it to the server‟s port number.

2. Retrieve its own IP address using built-in function.

3. Send its address to the server.

4. Display the date & time sent by the server.

5. Close the input and output streams.

6. Close the client socket.

7. Stop.

28

Downloaded from: annauniversityedu.blogspot.com


Program :

Program for Address Resolutuion Protocol (ARP) using TCP Client:

import java.io.*;

import java.net.*;

import java.util.*;
class Clientarp

{
public static void main(String args[])
{
try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
Socket clsct=new Socket("127.0.0.1",139);
DataInputStream din=new DataInputStream(clsct.getInputStream());
DataOutputStream dout=new DataOutputStream(clsct.getOutputStream());
System.out.println("Enter the Logical address(IP):");
String str1=in.readLine(); dout.writeBytes(str1+'\n');
String str=din.readLine();
System.out.println("The Physical Address is: "+str);
clsct.close();
}
catch (Exception e)
{
System.out.println(e);
}
}
}
Server:
import java.io.*;

import java.net.*;

29

Downloaded from: annauniversityedu.blogspot.com


import java.util.*;

class Serverarp

public static void main(String args[])

try

ServerSocket obj=new ServerSocket(139);

Socket obj1=obj.accept();

while(true)

DataInputStream din=new DataInputStream(obj1.getInputStream());

DataOutputStream dout=new DataOutputStream(obj1.getOutputStream());

String str=din.readLine();

String ip[]={"165.165.80.80","165.165.79.1"};

String mac[]={"6A:08:AA:C2","8A:BC:E3:FA"};

for(int i=0;i<ip.length;i++)

if(str.equals(ip[i]))

dout.writeBytes(mac[i]+'\n');

break;

obj.close();

catch(Exception e)

System.out.println(e);

30

Downloaded from: annauniversityedu.blogspot.com


}

Output:

E:\networks>java Serverarp

E:\networks>java Clientarp

Enter the Logical address(IP): 165.165.80.80

The Physical Address is: 6A:08:AA:C2

Program for Reverse Address Resolutuion Protocol (RARP) using UDP


Client:
import java.io.*;
import java.net.*;
import java.util.*;
class Clientrarp12
{
public static void main(String args[])
{
try
{
DatagramSocket client=new DatagramSocket();
InetAddress addr=InetAddress.getByName("127.0.0.1");
byte[] sendbyte=new byte[1024];
byte[] receivebyte=new byte[1024];
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the Physical address (MAC):");
String str=in.readLine();
sendbyte=str.getBytes();
DatagramPacket sender=new DatagramPacket(sendbyte,sendbyte.length,addr,1309);
client.send(sender);
DatagramPacket receiver=new DatagramPacket(receivebyte,receivebyte.length);
client.receive(receiver);

31

Downloaded from: annauniversityedu.blogspot.com


String s=new String(receiver.getData());
System.out.println("The Logical Address is(IP): "+s.trim());
client.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
}

Server:
import java.io.*;
import java.net.*;
import java.util.*;
class Serverrarp12
{
public static void main(String args[])
{
try
{
DatagramSocket server=new DatagramSocket(1309);
while(true)
{
byte[] sendbyte=new byte[1024];
byte[] receivebyte=new byte[1024];
DatagramPacket receiver=new
DatagramPacket(receivebyte,receivebyte.length);
server.receive(receiver);
String str=new String(receiver.getData());

32

Downloaded from: annauniversityedu.blogspot.com


String s=str.trim();
//System.out.println(s);
InetAddress addr=receiver.getAddress();
int port=receiver.getPort();
Stringip[]={"165.165.80.80","165.165.79.1"};
String mac[]={"6A:08:AA:C2","8A:BC:E3:FA"};
for(int i=0;i<ip.length;i++)
{
if(s.equals(mac[i]))
{
sendbyte=ip[i].getBytes();
DatagramPacketsender=new
DatagramPacket(sendbyte,sendbyte.length,addr,port);
server.send(sender);
break;
}
}
break;

}
}
catch(Exception e)
{
System.out.println(e);
}
}
}

33

Downloaded from: annauniversityedu.blogspot.com


Output:
I:\ex>java Serverrarp12
I:\ex>java Clientrarp12
Enter the Physical address (MAC): 6A:08:AA:C2
The Logical Address is(IP): 165.165.80.80

Result :
Thus the program for implementing to display simulating ARP /RARP protocols.

34

Downloaded from: annauniversityedu.blogspot.com


EX.NO : 7

Network Simulator (Ns).And Simulation Of Congestion Control Algorithms Using Ns

DATE:

AIM:
To Study Network simulator (NS).and Simulation of Congestion Control Algorithms using
NS

PRE LAB DISCUSSION:

NET WORK SIMULATOR (NS2) Ns Overview


• Ns Status
• Periodical release (ns-2.26, Feb 2003)
• Platform support
• FreeBSD, Linux, Solaris, Windows and Mac
Ns functionalities
Routing, Transportation, Traffic sources,Queuing disciplines, QoS
Congestion Control Algorithms
• Slow start
• Additive increase/multiplicative decrease
• Fast retransmit and Fast recovery Case Study: A simple Wireless
network. Ad hoc routing, mobile IP, sensor-MAC
Tracing, visualization and various utilitie
NS(Network Simulators)
Most of the commercial simulators are GUI driven, while some network simulators are
CLI driven. The network model / configuration describes the state of the network (nodes,routers,
switches, links) and the events (data transmissions, packet error etc.). An important output of sim-
ulations are the trace files. Trace files log every packet, every event that occurred in the simulation
and are used for analysis. Network simulators can also provide other tools to facilitate visual anal-
ysis of trends and potential trouble spots.
Most network simulators use discrete event simulation, in which a list of pending "events"
is stored, and those events are processed in order, with some events triggering future events—such
as the event of the arrival of a packet at one node triggering the event of the arrival of that packet
at a downstream node.
Simulation of networks is a very complex task. For example, if congestion is high, then
estimation of the average occupancy is challenging because of high variance. To estimate the like-
lihood of a buffer overflow in a network, the time required for an accurate answer can be extremely
large. Specialized techniques such as "control variates" and "importance sampling" have been de-
veloped to speed simulation.

35

Downloaded from: annauniversityedu.blogspot.com


Examples of network simulators
There are many both free/open-source and proprietary network simulators. Examples of
notable network simulation software are, ordered after how often they are mentioned in research
papers:
1. ns (open source)
2. OPNET (proprietary software)
3. NetSim (proprietary software)
Uses of network simulators
Network simulators serve a variety of needs. Compared to the cost and time involved in
setting up an entire test bed containing multiple networked computers, routers and data links, net-
work simulators are relatively fast and inexpensive. They allow engineers, researchers to test sce-
narios that might be particularly difficult or expensive to emulate using real hardware - for in-
stance, simulating a scenario with several nodes or experimenting with a new protocol in the net-
work. Network simulators are particularly useful in allowing researchers to test new networking
protocols or changes to existing protocols in a controlled and reproducible environment. A typical
network simulator encompasses a wide range of networking technologies and can help the users
to build complex networks from basic building blocks such as a variety of nodes and links. With
the help of simulators, one can design hierarchical networks using various types of nodes like
computers, hubs, bridges, routers, switches, links, mobile units etc.
Various types of Wide Area Network (WAN) technologies like TCP, ATM, IP etc. and
Local Area Network (LAN) technologies like Ethernet, token rings etc., can all be simulated with
a typical simulator and the user can test, analyze various standard results apart from devising some
novel protocol or strategy for routing etc. Network simulators are also widely used to simulate
battlefield networks in Network-centric warfare.
There are a wide variety of network simulators, ranging from the very simple to the very
complex. Minimally, a network simulator must enable a user to represent a network topology,
specifying the nodes on the network, the links between those nodes and the traffic between the
nodes. More complicated systems may allow the user to specify everything about the protocols
used to handle traffic in a network. Graphical applications allow users to easily visualize the work-
ings of their simulated environment. Text-based applications may provide a less intuitive interface,
but may permit more advanced forms of customization.

Packet loss
Packet loss occurs when one or more packets of data travelling across a computer network
fail to reach their destination. Packet loss is distinguished as one of the three main error types
encountered in digital communications; the other two being bit error and spurious packets caused
due to noise.
Packets can be lost in a network because they may be dropped when a queue in the network
node overflows. The amount of packet loss during the steady state is another important property
of a congestion control scheme. The larger the value of packet loss, the more difficult it is for
transportlayer protocols to maintain high bandwidths, the sensitivity to loss of individual packets,
36

Downloaded from: annauniversityedu.blogspot.com


as well as to frequency and patterns of loss among longer packet sequences is strongly dependent
on the application itself.

Throughput
Throughput is the main performance measure characteristic, and most widely used. In com-
munication networks, such as Ethernet or packet radio, throughput or network throughput is the
average rate of successful message delivery over a communication channel. Throughput is usually
measured inbitsper second (bit/s orbps), and sometimes in data packets per second or data packets
per time slot. This measures how soon the receiver is able to get a certain amount of data send by
the sender. It is determined as the ratio of the total data received to the end to end delay. Through-
put is an important factor which directly impacts the network performance.

Delay
Delay is the time elapsed while a packet travels from one point e.g., source premise or
network ingress to destination premise or network degrees. The larger the value of delay, the more
difficult it is for transport layer protocols to maintain highbandwidths. We will calculate end to
end delay

Queue Length
A queuing system in networks can be described as packets arriving for service, waiting for
service if it is not immediate, and if having waited for service, leaving the system after being
served. Thus queue length is very important characteristic to determine that how well the active
queue management of the congestion control algorithm has been working.

Congestion control Algorithms


Slow-start is used in conjunction with other algorithms to avoid sending more data than the
network is capable of transmitting, that is, to avoid causing network congestion. The additive in-
crease/multiplicative decrease (AIMD) algorithm is a feedback control algorithm. AIMD com-
bines linear growth of the congestion window with an exponential reduction when a congestion
takes place. Multiple flows using AIMD congestion control will eventually converge to use equal
amounts of a contended link. Fast Retransmit is an enhancement to TCP that reduces the time a
sender waits before retransmitting a lost segment.

Program:
include <wifi_lte/wifi_lte_rtable.h>
struct r_hist_entry *elm, *elm2; int
num_later = 1;
elm = STAILQ_FIRST(&r_hist_);
while (elm != NULL && num_later <= num_dup_acks_){
num_later;
elm = STAILQ_NEXT(elm, linfo_)
37

Downloaded from: annauniversityedu.blogspot.com


}

if (elm != NULL){
elm = findDataPacketInRecvHistory(STAILQ_NEXT(elm,linfo_));

if (elm != NULL){ elm2 = STAILQ_NEXT(elm, linfo_);


while(elm2 != NULL){
if (elm2->seq_num_ < seq_num && elm2->t_recv_ <
time){

STAILQ_REMOVE(&r_hist_,elm2,r_hist_entry,linfo_);
delete elm2;
} else
elm = elm2;
elm2 = STAILQ_NEXT(elm, linfo_);
}
}
}
}
void DCCPTFRCAgent::removeAcksRecvHistory(){
struct r_hist_entry *elm1 = STAILQ_FIRST(&r_hist_);
struct r_hist_entry *elm2;

int num_later = 1;
while (elm1 != NULL && num_later <= num_dup_acks_){
num_later;
elm1 = STAILQ_NEXT(elm1, linfo_);
}

if(elm1 == NULL)
return;

elm2 = STAILQ_NEXT(elm1, linfo_);


while(elm2 != NULL){
if (elm2->type_ == DCCP_ACK){
STAILQ_REMOVE(&r_hist_,elm2,r_hist_en-
try,linfo_); delete elm2; } else { elm1 =
elm2;
}

38

Downloaded from: annauniversityedu.blogspot.com


elm2 = STAILQ_NEXT(elm1, linfo_);
}}
inline r_hist_entry
*DCCPTFRCAgent::findDataPacketInRecvHistory(r_hist_entry *start){
while(start != NULL && start->type_ == DCCP_ACK) start =
STAILQ_NEXT(start,linfo_);
return start;
}

VIVA (Pre and Post Lab) QUESTIONS:

1. Why congestion control is required?


2. How do we increase the throughput?
3. What is a node?
4. What is point to point link?
5. Which language is used in ns2?
6. Define the terms : Unicast, multicast and Broadcast
7. What are the four files on the NS2 simulator?
8. What is meant by ns2?

Result:
Thus we have Studied Network simulator (NS) and Simulation of Congestion Control Al-
gorithms using NS.

39
Ex.No: 8
Study Of TCP/UDP Performance Using Simulation Tool.

DATE:

AIM:

To simulate the performance of TCP/UDP using NS2.

PRE LAB DISCUSSION:

• TCP is reliable protocol. That is, the receiver always sends either positive or negative
acknowledgement about the data packet to the sender, so that the sender always has bright
clue about whether the data packet is reached the destination or it needs to resend it.
• TCP ensures that the data reaches intended destination in the same order it was sent.
• TCP is connection oriented. TCP requires that connection between two remote points be
established before sending actual data.
• TCP provides error-checking and recovery mechanism.
• TCP provides end-to-end communication.
• TCP provides flow control and quality of service.
• TCP operates in Client/Server point-to-point mode.
• TCP provides full duplex server, i.e. it can perform roles of both receiver and sender.
• The User Datagram Protocol (UDP) is simplest Transport Layer communication protocol
available of the TCP/IP protocol suite. It involves minimum amount of communication
mechanism. UDP is said to be an unreliable transport protocol but it uses IP services which
provides best effort delivery mechanism.UDP is used when acknowledgement of data does
not hold any significance.
• UDP is good protocol for data flowing in one direction.
• UDP is simple and suitable for query based communications.
• UDP is not connection oriented.
• UDP does not provide congestion control mechanism.
• UDP does not guarantee ordered delivery of data.
• UDP is stateless.
• UDP is suitable protocol for streaming applications such as VoIP, multimedia streaming.
TCP Performance
Algorithm
1. Create a Simulator object.
2. Set routing as dynamic.
3. Open the trace and nam trace files.
4. Define the finish procedure.
5. Create nodes and the links between them.
6. Create the agents and attach them to the nodes.

40
7. Create the applications and attach them to the tcp agent.
8. Connect tcp and tcp sink.
9. Run the simulation.

PROGRAM:

set ns [new Simulator]


$ns color 0 Blue
$ns color 1 Red
$ns color 2 Yellow
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set f [open tcpout.tr w]
$ns trace-all $f
set nf [open tcpout.nam w]
$ns namtrace-all $nf
$ns duplex-link $n0 $n2 5Mb 2ms DropTail
$ns duplex-link $n1 $n2 5Mb 2ms DropTail
$ns duplex-link $n2 $n3 1.5Mb 10ms DropTail
$ns duplex-link- op $n0 $n2 orient right- up
$ns duplex-link- op $n1 $n2 orient right- down
$ns duplex-link- op $n2 $n3 orient right
$ns duplex-link- op $n2 $n3 queuePos 0.5
set tcp [new Agent/TCP]
$tcp set class_ 1
set sink [new Agent/TCPSink]
$ns attach-agent $n1 $tcp
$ns attach-agent $n3 $sink

$ns connect $tcp $sink set ftp


[new Application/FTP]
$ftp attach-agent $tcp

41
$ns at 1.2 "$ftp start"
$ns at 1.35 "$ns detach-agent $n1 $tcp ; $ns detach-agent $n3 $sink"
$ns at 3.0 "finish" proc
finish {} {
global ns f nf
$ns flush-trace close $f close $nf
puts "Running nam.." exec xgraph tcpout.tr -
geometry 600x800 & exec nam tcpout.nam &
exit 0
}
$ns run

Output

42
UDP Performance

ALGORITHM :

1. Create a Simulator object.


2. Set routing as dynamic.
3. Open the trace and nam trace files.
4 Define the finish procedure.
5. Create nodes and the links between them.
6. Create the agents and attach them to the nodes.
7. Create the applications and attach them to the UDP agent.
8. Connect udp and null agents.
9. Run the simulation.

PROGRAM:
set ns [new Simulator]
$ns color 0 Blue
$ns color 1 Red
$ns color 2 Yellow
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set f [open udpout.tr w]
$ns trace -all $f
set nf [open udpout.nam w]
$ns namtrace -all $nf
$ns duplex -link $n0 $n2 5Mb 2ms DropTail
$ns duplex -link $n1 $n2 5Mb 2ms DropTail
$ns duplex -link $n2 $n3 1.5Mb 10ms DropTail
$ns duplex -link- op $n0 $n2 orient right - up
$ns duplex -link- op $n1 $n2 orient r ight- down
$ns duplex -link- op $n2 $n3 orient right
$ns duplex -link- op $n2 $n3 queuePos 0.5
set udp0 [new Agent/UDP]
$ns attach -agent $n0 $udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach -agent $udp0
set udp1 [new Agent/UDP]
$ns attach -agent $n3 $udp 1

43
$udp1 set class_ 0 set cbr1 [new Appli-
cation/Traffic/CBR] $cbr1 attach-agent
$udp1 set null0 [new Agent/Null] $ns
attach-agent $n1 $null0

set null1 [new Agent/Null]


$ns attach-agent $n1 $null1
$ns connect $udp0 $null0
$ns connect $udp1 $null1
$ns at 1.0 "$cbr0 start"
$ns at 1.1 "$cbr1 start"
puts [$cbr0 set packetSize_]
puts [$cbr0 set interval_]
$ns at 3.0 "finish"
proc finish {} {
global ns f nf
$ns flush-trace
close $f
close $nf
puts "Running nam.."
exec nam udpout.nam &
exit 0
}
$ns run

44
Output:

VIVA (Pre & Post)Lab Questions


1. How is a TCP connection closed?
2. What is Flow control in TCP?
3. What protocol is TCP?
4. How is TCP Reliable?
5. What is TCP?
6. Explain the three way Handshake process?
7. What are the 6 TCP flags?
8. Explain how TCP avoids a network meltdown?

RESULT :

Thus the study of TCP/UDP performance is done successfully.

45
EX.NO: 9
Simulate The Distance Vector/Link State Routing Protocols Using NS2
DATE:

AIM:

To simulate the Distance vector and link state routing protocols using NS2.

PRE LAB DISCUSSION:

LINK STATE ROUTING


Routing is the process of selecting best paths in a network. In the past, the term routing was
also used to mean forwarding network traffic among networks. However this latter function is
much better described as simply forwarding. Routing is performed for many kinds of networks,
including the telephone network (circuit switching), electronic data networks (such as the Internet),
and transportation networks. This article is concerned primarily with routing in electronic data
networks using packet switching technology.
In packet switching networks, routing directs packet forwarding (the transit of logically
addressed network packets from their source toward their ultimate destination) through intermedi-
ate nodes. Intermediate nodes are typically network hardware devices such as routers, bridges,
gateways, firewalls, or switches. General-purpose computers can also forward packets and perform
routing, though they are not specialized hardware and may suffer from limited performance. The
routing process usually directs forwarding on the basis of routing tables which maintain a record
of the routes to various network destinations. Thus, constructing routing tables, which are held in
the router's memory, is very important for efficient routing. Most routing algorithms use only one
network path at a time. Multipath routing techniques enable the use of multiple alternative paths.
In case of overlapping/equal routes, the following elements are considered in order to de-
cide which routes get installed into the routing table (sorted by priority):
1. Prefix-Length: where longer subnet masks are preferred (independent of whether it is
within a routing protocol or over different routing protocol)
2. Metric: where a lower metric/cost is preferred (only valid within one and the same routing
protocol)
3. Administrative distance: where a lower distance is preferred (only valid between different
routing protocols)
Routing, in a more narrow sense of the term, is often contrasted with bridging in its as-
sumption that network addresses are structured and that similar addresses imply proximity within
the network. Structured addresses allow a single routing table entry to represent the route to a group
of devices. In large networks, structured addressing (routing, in the narrow sense) outperforms
unstructured addressing (bridging). Routing has become the dominant form of addressing on the
Internet. Bridging is still widely used within localized environments.

46
b. Flooding
Flooding is a simple routing algorithm in which every incoming packet is sent through
every outgoing link except the one it arrived on. Flooding is used in bridging and in systems such
as Usenet and peer-to-peer file sharing and as part of some routing protocols, including OSPF,
DVMRP, and those used in ad-hoc wireless networks.There are generally two types of flooding
available, Uncontrolled Flooding and Controlled Flooding. Uncontrolled Flooding is the fatal law
of flooding. All nodes have neighbours and route packets indefinitely. More than two neighbours
creates a broadcast storm.
Controlled Flooding has its own two algorithms to make it reliable, SNCF (Sequence Num-
ber Controlled Flooding) and RPF (Reverse Path Flooding). In SNCF, the node attaches its own
address and sequence number to the packet, since every node has a memory of addresses and se-
quence numbers. If it receives a packet in memory, it drops it immediately while in RPF, the node
will only send the packet forward. If it is received from the next node, it sends it back to the sender.

Distance vector Routing:


In computer communication theory relating to packet-switched networks, a distancevector
routing protocol is one of the two major classes of routing protocols, the other major class being
the link-state protocol. Distance-vector routing protocols use the Bellman–Ford algorithm, Ford–
Fulkerson algorithm, or DUAL FSM (in the case of Cisco Systems's protocols) to calculate paths.
A distance-vector routing protocol requires that a router informs its neighbors of topology
changes periodically. Compared to link-state protocols, which require a router to inform all the
nodes in a network of topology changes, distance-vector routing protocols have less computational
complexity and message overhead.
The term distance vector refers to the fact that the protocol manipulates vectors (arrays) of
distances to other nodes in the network. The vector distance algorithm was the original ARPANET
routing algorithm and was also used in the internet under the name of RIP (Routing Information
Protocol).Examples of distance-vector routing protocols include RIPv1 and RIPv2 and IGRP.

Method
Routers using distance-vector protocol do not have knowledge of the entire path to a destina-
tion. Instead they use two methods:
1. Direction in which router or exit interface a packet should be forwarded.
2. Distance from its destination
Distance-vector protocols are based on calculating the direction and distance to any link in
a network. "Direction" usually means the next hop address and the exit interface. "Distance" is a
measure of the cost to reach a certain node. The least cost route between any two nodes is the route
with minimum distance. Each node maintains a vector (table) of minimum distance to every node.
The cost of reaching a destination is calculated using various route metrics. RIP uses the hop count

47
of the destination whereas IGRP takes into account other information such as node delay and avail-
able bandwidth.
Updates are performed periodically in a distance-vector protocol where all or part of a rout-
er's routing table is sent to all its neighbors that are configured to use the same distancevector
routing protocol. RIP supports cross-platform distance vector routing whereas IGRP is a Cisco
Systems proprietary distance vector routing protocol. Once a router has this information it is able
to amend its own routing table to reflect the changes and then inform its neighbors of the changes.
This process has been described as ‗routing by rumor‘ because routers are relying on the infor-
mation they receive from other routers and cannot determine if the information is actually valid
and true. There are a number of features which can be used to help with instability and inaccurate
routing information.
EGP and BGP are not pure distance-vector routing protocols because a distance-vector
protocol calculates routes based only on link costs whereas in BGP, for example, the local route
preference value takes priority over the link cost.

Count-to-infinity problem
The Bellman–Ford algorithm does not prevent routing loops from happening and suffers
from the count-to-infinity problem. The core of the count-to-infinity problem is that if A tells B
that it has a path somewhere, there is no way for B to know if the path has B as a part of it. To see
the problem clearly, imagine a subnet connected like A–B–C–D–E–F, and let the metric between
the routers be "number of jumps". Now suppose that A is taken offline. In the vectorupdate-process
B notices that the route to A, which was distance 1, is down – B does not receive the vector update
from A. The problem is, B also gets an update from C, and C is still not aware of the fact that A is
down – so it tells B that A is only two jumps from C (C to B to A), which is false. This slowly
propagates through the network until it reaches infinity (in which case the algorithm corrects itself,
due to the relaxation property of Bellman–Ford).

ALGORITHM:

1. Create a Simulator object.


2. Set routing as dynamic.
3. Open the trace and nam trace files.
4. Define the finish procedure.
5. Create nodes and the links between them.
6. Create the agents and attach them to the nodes.
7. Create the applications and attach them to the udp agent.
8. Connect udp and null..
9. At 1 sec the link between node 1 and 2 is broken.
10. At 2 sec the link is up again.
11. Run the simulation.

48
LINK STATE ROUTING PROTOCOL
PROGRAM
set ns [new Simulator] $ns
rtproto LS set nf [open link-
state.nam w]
$ns namtrace-all $nf
set f0 [open linkstate.tr w]
$ns trace-all $f0
proc finish {} {
global ns f0 nf
$ns flush-trace
close $f0
close $nf
exec nam linkstate.nam &
exit 0
}
for {set i 0} {$i <7} {incr i} {
set n($i) [$ns node]
}
for {set i 0} {$i <7} {incr i} {
$ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail
}
set udp0 [new Agent/UDP]
$ns attach-agent $n(0) $udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0 set
null0 [new Agent/Null] $ns
attach-agent $n(3) $null0
$ns connect $udp0 $null0
$ns at 0.5 "$cbr0 start"
$ns rtmodel-at 1.0 down $n(1) $n(2)
$ns rtmodel-at 2.0 up $n(1) $n(2)

49
$ns at 4.5 "$cbr0 stop"
$ns at 5.0 "finish"
$ns run

Output:

50
DISTANCE VECTOR ROUTING ALGORITHM

ALGORITHM:
1. Create a simulator object
2. Set routing protocol to Distance Vector routing
3. Trace packets on all links onto NAM trace and text trace file
4. Define finish procedure to close files, flush tracing and run NAM
5. Create eight nodes
6. Specify the link characteristics between nodes
7. Describe their layout topology as a octagon
8. Add UDP agent for node n1
9. Create CBR traffic on top of UDP and set traffic parameters.
10. Add a sink agent to node n4
11. Connect source and the sink 12. Schedule events as follows:
a. Start traffic flow at 0.5
b. Down the link n3-n4 at 1.0
c. Up the link n3-n4 at 2.0
d. Stop traffic at 3.0
e. Call finish procedure at 5.0
13. Start the scheduler
14. Observe the traffic route when link is up and down
15. View the simulated events and trace file analyze it
16. Stop
PROGRAM
#Distance vector routing protocol – distvect.tcl
#Create a simulator object
set ns [new Simulator] #Use
distance vector routing
$ns rtproto DV #Open
the nam trace file set nf
[open out.nam w]
$ns namtrace-all $nf #
Open tracefile set nt
[open trace.tr w] $ns
trace-all $nt
#Define 'finish' procedure
proc finish {}

51
{ global ns nf $ns flush-trace #Close the trace file close $nf #Execute nam on the trace file
exit 0
}
# Create 8 nodes
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]
set n7 [$ns node]
set n8 [$ns node]
# Specify link characterestics
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n2 $n3 1Mb 10ms DropTail
$ns duplex-link $n3 $n4 1Mb 10ms DropTail
$ns duplex-link $n4 $n5 1Mb 10ms DropTail
$ns duplex-link $n5 $n6 1Mb 10ms DropTail
$ns duplex-link $n6 $n7 1Mb 10ms DropTail
$ns duplex-link $n7 $n8 1Mb 10ms DropTail
$ns duplex-link $n8 $n1 1Mb 10ms DropTail
# specify layout as a octagon
$ns duplex-link-op $n1 $n2 orient left-up
$ns duplex-link-op $n2 $n3 orient up
$ns duplex-link-op $n3 $n4 orient right-up
$ns duplex-link-op $n4 $n5 orient right
$ns duplex-link-op $n5 $n6 orient right-down
$ns duplex-link-op $n6 $n7 orient down
$ns duplex-link-op $n7 $n8 orient left-down
$ns duplex-link-op $n8 $n1 orient left
#Create a UDP agent and attach it to node n1
set udp0 [new Agent/UDP]
$ns attach-agent $n1 $udp0
#Create a CBR traffic source and attach it to udp0
exec nam -a out.nam &

52
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
#Create a Null agent (a traffic sink) and attach it to node n4
set null0 [new Agent/Null] $ns attach-agent $n4 $null0
#Connect the traffic source with the traffic sink
$ns connect $udp0 $null0
#Schedule events for the CBR agent and the network dynamics
$ns at 0.0 "$n1 label Source"
$ns at 0.0 "$n4 label Destination"
$ns at 0.5 "$cbr0 start"
$ns rtmodel-at 1.0 down $n3 $n4
$ns rtmodel-at 2.0 up $n3 $n4
$ns at 4.5 "$cbr0 stop"
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"
#Run the simulation
$ns run

OUTPUT
$ ns distvect.tcl

53
54
VIVA (Pre &Post Lab) Questions:

1. W hat do you mean by the term “no. of hops”?


2. List the basic functions of routers.
3. Explain mult icast routing.
4. What os OSPF
5. What are the advantages of distance vector routing?
6. Describe the process of routing packets.
7. What are some of the merits used by routing protocols?
8. Distinguish between bridges and routers

RESULT:

Thus the simulation for Distance vector and link state routing protocols was done using
NS2.

55
EX.NO : 10
Simulation Of Errordetection Code (Like CRC)
DATE:

AIM:
To implement error checking code using java.

PRE LAB DISSCUSSION:

The cyclic redundancy check, or CRC, is a technique for detecting errors in digital data, but
not for making corrections when errors are detected. It is used primarily in data transmission.
In the CRC method, a certain number of check bits, often called a checksum, are appended to
the message being transmitted. The receiver can determine whether or not the check bits agree with the
data, to ascertain with a certain degree of probability whether or not an error occurred in transmission.
CRC involves binary division of the data bits being sent by a predetermined divisor agreed
upon by the communicating system. The divisor is generated using polynomials. So, CRC is also called
polynomial code checksum.
CRC uses Generator Polynomial which is available on both sender and receiver side. An ex-
ample generator polynomial is of the form like x3 + x + 1. This generator polynomial represents key
1011. Another example is x2 + 1 that represents key 101.
Sender Side (Generation of Encoded Data from Data and Generator Polynomial (or Key)):
• The binary data is first augmented by adding k-1 zeros in the end of the data
• Use modulo-2 binary division to divide binary data by the key and store remainder of division.
• Append the remainder at the end of the data to form the encoded data and send the same

Receiver Side (Check if there are errors introduced in transmission)

Perform modulo-2 division again and if remainder is 0, then there are no errors.

Modulo 2 Division:

• The process of modulo-2 binary division is the same as the familiar division process we use
for decimal numbers. Just that instead of subtraction, we use XOR here.
• In each step, a copy of the divisor (or data) is XORed with the k bits of the dividend (or key).
• The result of the XOR operation (remainder) is (n-1) bits, which is used for the next step after
1 extra bit is pulled down to make it n bits long.
• When there are no bits left to pull down, we have a result. The (n-1)-bit remainder which is
appended at the sender side.

56
ALGORITHM:

1. Start the Program


2. Given a bit string, append 0S to the end of it (the number of 0s is the same as the degree of
the generator polynomial) let B(x) be the polynomial corresponding to B.
3. Divide B(x) by some agreed on polynomial G(x) (generator polynomial) and determine the
remainder R(x). This division is to be done using Modulo 2 Division.
4. Define T(x) = B(x) –R(x)
5. (T(x)/G(x) => remainder 0)
6. Transmit T, the bit string corresponding to T(x).
7. Let T’ represent the bit stream the receiver gets and T’(x) the associated polynomial. The
receiver divides T1(x) by G(x). If there is a 0 remainder, the receiver concludes T = T’ and
no error occurred otherwise, the receiver concludes an error occurred and requires a re-
transmission
8. Stop the Program

PROGRAM:

import java.io.*; class


crc_gen
{
public static void main(String args[]) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int[] data; int[] div; int[] divisor; int[] rem; int[] crc;
int data_bits, divisor_bits, tot_length;
System.out.println("Enter number of data bits : "); data_bits=Integer.parseInt(br.readLine());
data=new int[data_bits];
System.out.println("Enter data bits : "); for(int
i=0; i<data_bits; i++)
data[i]=Integer.parseInt(br.readLine());
System.out.println("Enter number of bits in divisor : ");
divisor_bits=Integer.parseInt(br.readLine()); divisor=new int[divisor_bits];
System.out.println("Enter Divisor bits : "); for(int
i=0; i<divisor_bits; i++)
divisor[i]=Integer.parseInt(br.readLine());
System.out.print("Data bits are : "); for(int
i=0; i< data_bits; i++)
System.out.print(data[i]);
System.out.println();

57
System.out.print("divisor bits are : "); for(int
i=0; i< divisor_bits; i++) Sys-
tem.out.print(divisor[i]);
System.out.println();
*/ tot_length=data_bits+divisor_bits-1; div=new int[tot_length]; rem=new int[tot_length];
/*------------------ CRC GENERATION----------------------- */
for(int i=0;i<data.length;i++)
div[i]=data[i];
System.out.print("Dividend (after appending 0's) are : "); for(int i=0; i< div.length; i++)
System.out.print(div[i]);
System.out.println();
for(int j=0; j<div.length; j++){
rem[j] = div[j];
}
rem=divide(div, divisor, rem);
for(int i=0;i<div.length;i++)
{

//append dividend and remainder

crc[i]=(div[i]^rem[i]);
}
System.out.println();
System.out.println("CRC code : ");
for(int i=0;i<crc.length;i++)
System.out.print(crc[i]);

/*-------------------ERROR DETECTION--------------------- */
System.out.println();
System.out.println("Enter CRC code of "+tot_length+" bits : "); for(int i=0; i<crc.length; i++)
crc[i]=Integer.parseInt(br.readLine());
System.out.print("crc bits are : ");
for(int i=0; i< crc.length; i++)
System.out.print(crc[i]);
System.out.println();
for(int j=0; j<crc.length; j++){
crc=new int[tot_length]; rem[j] = crc[j]; } rem=divide(crc, divisor, rem); for(int i=0; i<
rem.length; i++)
{ if(rem[i]!=0)
{
System.out.println("Error");
break; } if(i==rem.length-1)
System.out.println("No Error");
}

58
System.out.println("THANK YOU.... :)");
}
static int[] divide(int div[],int divisor[], int rem[])
{
int cur=0;
while(true)
{
for(int i=0;i<divisor.length;i++)
rem[cur+i]=(rem[cur+i]^divisor[i]);
while(rem[cur]==0 && cur!=rem.length-1)
cur++;
if((rem.length-cur)<divisor.length)
break;
}
return rem;
}
}
OUTPUT :
Enter number of data bits :
7
Enter data bits :
1
0
1
1
0
0
1
Enter number of bits in divisor :
3
Enter Divisor bits :
1
0
1
Dividend (after appending 0's) are : 101100100
CRC code : 101100111
Enter CRC code of 9 bits :
1
0
1
1
0
0
1

59
01
crc bits are : 101100101
Error
THANK YOU.... :)
BUILD SUCCESSFUL (total time: 1 minute 34 seconds)

VIVA (Pre & Post) Lab QUESTIONS:

1. How do you calculate checksum?


2. What are the types of error detection?
3. What are the error correction techniques?
4. What are the responsibilities of data link layer?
5. What is meant by error control?
6. Which is operated in the Data Link and the Network layer?
7. State the purpose of layering.

RESULT:
Thus the above program for error checking code using was executed successfully.

60

You might also like