CN Lab Record
CN Lab Record
AIM: To Learn to use commands like tcpdump, netstat, ifconfig, nslookup and traceroute ping.
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
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, UNIX and 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 statistics and current TCP/IP network connections.
#netstat
3. ipconfig
In Windows, 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. Using
ipconfig
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.
#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
experiencing 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
multiple 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
message 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.
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
computer all the way to the network device with the hostname
www.google.com.
#tracert 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 problems. 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 sending
Internet Control Message Protocol (ICMP) Echo Request messages to the destination computer and
waiting for a response
# ping172.16.6.2
RESULT:
Thus the various networks commands like tcpdump, netstat, ifconfig, nslookup and traceroute
ping are executed successfully.
Ex.No: 2 Write a HTTP web client program to download a web page using TCP sockets
DATE :
AIM:
To write a java program for socket for HTTP for web page upload and download .
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.
PROGRAM
Client
soc.close();
}
soc.close();
}
}
Server
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);
f.pack();
f.setVisible(true);
}
}
OUTPUT:
When you run the client code, following output screen would appear on client side.
RESULT:
Thus the socket program for HTTP for web page upload and download was developed
and executed successfully.
Ex.No: 3 Applications using TCP sockets like: Echo client and echo server,
DATE : Chat and File Transfer
AIM
To write a java program for application using TCP Sockets Links
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
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, waiting for clients.
8. Stop.
PROGRAM:
EchoServer.java
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)
{
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);
{
System.out.println(e);
}
}
}
EClient.java
import
java.net.*;
import
java.io.*; public
class EClient
{ 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)
{
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
1. Start
2. Create the UDP datagram socket
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
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("Serve
r:"); 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
{ public static DatagramSocket ds; public static int
clientport=789,serverport=790; public static void
main(String args[])throws Exception
{ byte buffer[]=new byte[1024]; ds=new
DatagramSocket(serverport);
BufferedReader dis=new BufferedReader(new InputStreamReader(System.in));
System.out.println("server waiting");
InetAddress
ia=InetAddress.getLocalHost(); while(true)
{
System.out.println("Clien
t:"); String
str=dis.readLine();
if(str.equals("end"))
break;
buffer=str.getBytes(); ds.send(new
DatagramPacket(buffer,str.length(),ia,clientport));
DatagramPacket p=new
DatagramPacket(buffer,buffer.length); ds.receive(p);
String psx=new String(p.getData(),0,p.getLength());
System.out.println("Server:" +
psx); }
}
}
OUTPUT:
Server
Client
C:\Program Files\Java\jdk1.5.0\bin>javac
UDPclient.java C:\Program
Files\Java\jdk1.5.0\bin>java UDPclient server waiting
Client:Hai Server
Server:Hello Clie
Client:How are You
Server:I am Fine
Client:end
C. File Transfer
AIM:
Algorithm
Server
Client
PROGRAM
File Server : import
java.io.BufferedInputStream;
import java.io.File; import
java.io.FileInputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket
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");
Output
server
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>
RESULT:
Thus the java application program using TCP Sockets was developed and executed
successfully.
Ex.No: 4 Simulation of DNS using UDP Sockets
DATE :
AIM
To write a java program for DNS application
ALGORITHM
Server
1. Start
2. Create UDP datagram socket
3. Create a table that maps host name and IP address
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
5. Wait for the reply from 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) {
DatagramSocket serversocket=new DatagramSocket(1362);
byte[] senddata = new byte[1021];
byte[] receivedata = new byte[1021];
DatagramPacket recvpack = new DatagramPacket(receivedata,
receivedata.length); serversocket.receive(recvpack);
String sen = new String(recvpack.getData());
}}
OUTPUT
Server javac
udpdnsserver.java
java udpdnsserver
Press Ctrl + C to Quit Request for host yahoo.com
Request for host cricinfo.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
RESULT:
Thus the java application program using UDP Sockets to implement DNS was developed and
executed successfully
\
Ex.No:5 a) Write a code simulating ARP /RARP protocols
DATE :
AIM: To write a java program for simulating ARP and RARP protocols using TCP.
ALGORITHM:
Client
Server
PROGRAM
Client: import
java.io.*;
import
java.net.*;
import
java.util.*;
class
Clientarp
{ public static void main(String args[])
{
t
r
y
{
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("T
he Physical Address
is: "+str); clsct.close();
}
catch (Exception e)
{
System.out.println(e);
}}
}
Server:
import
java.io.*;
import
java.net.*;
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();
{
System.out.println(e);
}
}
catch(Exception)
}
}
}
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
(b) Program for Reverse Address Resolution Protocol (RARP) using UDP
ALGORITHM:
Client
1. Start the program
2. Create datagram socket
3. Get the MAC address to be converted into IP address from the user.
4. Send this MAC address to server using UDP datagram.
5. Receive the datagram from the server and display the corresponding IP address.
6. Stop
Server
1. Start the program.
2. Server maintains the table in which IP and corresponding MAC addresses are stored.
3. Create the datagram socket
4. Receive the datagram sent by the client and read the MAC address sent.
5. Retrieve the IP address for the received MAC address from the table.
6. Display the corresponding IP address.
7. Stop
PROGRAM:
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=newDatagramPacket(sendbyte,sendbyte.length,addr,1309);
client.send(sender);
DatagramPacket receiver=new DatagramPacket(receivebyte,receivebyte.length);
client.receive(receiver);
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[])
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());
String s=str.trim();
InetAddress
addr=receiver.getAddress(); int
port=receiver.getPort();
37
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(s.equals(mac[i])) {
sendbyte=ip[i].getBytes();
DatagramPacket sender = new
DatagramPacket(sendbyte,sendbyte.length,addr,port);
server.send(sender);
break;
}}
break;
}}}catch(Exception e)
{
System.out.println(e);
}}}
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 and RARP protocols was
executed successfully and output is verified.
Ex.No: 6 Study of Network simulator (NS) and Simulation of Congestion Control
DATE : Algorithms using NS
AIM:
To Study Network simulator (NS).and Simulation of Congestion Control Algorithms
using NS
ALGORITHM:
Client
Server
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_);
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;
Result:
Thus we have Studied Network simulator (NS) and Simulation of Congestion Control
Algorithms using NS.
Ex.No: 7 Study of TCP/UDP performance using Simulation tool.
DATE :
NS2.
ALGORITHM:
Client
Server
PROGRAM:
UDP Performance
ALGORITHM :
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]
Output:
RESULT :
Thus the study of TCP/UDP performance is done successfully.
Ex.No: 8 Simulation of Distance Vector/ Link State Routing algorithm.
DATE :
AIM:
To simulate the Distance vector and link state routing protocols using NS2.
ALGORITHM:
PROGRAM
set ns [new Simulator] $ns
rtproto LS set nf [open
linkstate.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)
$ns at 4.5 "$cbr0 stop"
Output:
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 {}
{ global ns nf $ns flush-
trace #Close the
trace file close
$nf
#Execute nam on the trace file
exec nam -a out.nam &
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
\
RESULT:
Thus the simulation for Distance vector and link state routing protocols was done using
NS2.
Ex.No:9 Performance Evaluation of Routing protocols using Simulation tool.
DATE :
(a) UNICAST ROUTING PROTOCOL
AIM:
To write a ns2 program for implementing unicast routing protocol.
ALGORITHM:
exit 3
}
# Next line should be commented out to have the static routing
$ns rtproto DV
#Create six
nodes set n0
[$ns node] set
n1 [$ns node]
set n2 [$ns
node] set n4
[$ns node] set
n4 [$ns node]
set n5 [$ns
node]
#Create links between the nodes
$ns duplex-link $n0 $n1 0.3Mb 10ms DropTail
$ns duplex-link $n1 $n2 0.3Mb 10ms DropTail
$ns duplex-link $n2 $n3 0.3Mb 10ms DropTail
$ns duplex-link $n1 $n4 0.3Mb 10ms DropTail
$ns duplex-link $n3 $n5 0.5Mb 10ms DropTail
$ns duplex-link $n4 $n5 0.5Mb 10ms DropTail
#Give node position (for NAM)
$ns duplex-link-op $n0 $n1 orient right
$ns duplex-link-op $n1 $n2 orient right
$ns duplex-link-op $n2 $n3 orient up
$ns duplex-link-op $n1 $n4 orient up-left
$ns duplex-link-op $n3 $n5 orient left-up
$ns duplex-link-op $n4 $n5 orient right-up
AIM:
To write a ns2 program for implementing multicasting routing protocol.
ALGORITHM:
PROGRAM:
# Create scheduler
#Create an event scheduler wit multicast turned on
set ns [new Simulator -multicast on]
#$ns multicast
#Turn on Tracing
set tf [open output.tr
w]
$ns trace-all $tf
# Turn on nam Tracing
set fd [open mcast.nam
$ns namtrace-all
$fd # Create
nodes set n0
[$ns node] 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]
# Create links
$ns duplex-link $n0 $n2 1.5Mb 10ms DropTail
$ns duplex-link $n1 $n2 1.5Mb 10ms DropTail
$ns duplex-link $n2 $n3 1.5Mb 10ms DropTail
$ns duplex-link $n3 $n4 1.5Mb 10ms DropTail
$ns duplex-link $n3 $n7 1.5Mb 10ms DropTail
$ns duplex-link $n4 $n5 1.5Mb 10ms DropTail
$ns duplex-link $n4 $n6 1.5Mb 10ms DropTail
# Allocate group
addresses set group1
[Node allocaddr] set
group2 [Node allocaddr]
# Schedule events
$ns at 0.5 "$cbr1 start"
$ns at 9.5 "$cbr1 stop"
$ns at 0.5 "$cbr2 start"
$ns at 9.5 "$cbr2 stop"
#post-
processing $ns
at 10.0 "finish"
proc finish {}
{
global ns tf $ns
flush-trace close $tf
exec nam
mcast.nam & exit 0
}
# For nam
#Colors for packets from two mcast groups
$ns color 10 red
$ns color 11 green
$ns color 30 purple
$ns color 31 green
# Group 0 source
$udp0 set fid_ 10
$n0 color red $n0
label "Source 1"
# Group 1 source
$udp1 set fid_ 11
$n1 color green
$n1 label "Source 2"
$n5 label "Receiver 1"
# Animation rate
$ns set-animation-rate 3.0ms
$ns run
RESULT:
Thus the case study about the different routing algorithms to select the network path with its
optimum and economical during data transfer is done.
Ex.No:10 Simulation of ErrorDetection Code (like CRC)
DATE :
AIM:
To implement error checking code using java.
ALGORITHM:
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.readLin
e()); System.out.print("Data bits are :
"); for(int i=0; i< data_bits; i++)
System.out.print(data[i]);
System.out.println();
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++){ 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");
}
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