Help With Assignments

Got confusion or query ???

Looking for customized, unused and Plagiarism free solutions ???

Submit your assignment here



Assignment 4
Computer Networks
Due Date: 4/12/2013
Text: Computer Networking – A Top-Down Approach, Authors: Kurose & Ross
Chapter 7: Multimedia Networking
7.3 Assume an Internet phone application generates packets only during talk spurts. During a talk spurt the sender generates bytes at a rate of 1,000 bytes per second, and every 40 msecs the sender gathers bytes into chunks. Assume that RTP is used that will add a header to each chunk. In addition UDP and IP will be used. Suppose all headers (including RTP, UDP and IP) have a total length of h and an IP datagram is emitted every
40 msecs. Find the transmission rate in bits per second for the datagram generated by one side of the application.
7.4 Consider the procedure described in “Adaptive Playout Delay” for estimating average

delay di. Let r1 ? t1 be the most recent sample delay, let r2 ? t2

be the next most recent

sample delay, and so on. For a given audio application, suppose four packets have arrived

at the receiver with sample delays

r4 ? t4 ,

r3 ? t3 ,

r2 ? t2 , and

r1 ? t1 . Express the

estimate of delay d in terms of u and the four samples.

7.7 Is it possible for a CDN to provide worse performance to a host requesting a multimedia object than if the host has requested the object directly from the distant origin server? Please explain.
Chapter 8: Security in Computer Networks
8.3 Can you “decrypt” a hash of a message to get the original message? Explain.
8.4 Suppose that Bob receives a PGP message from Alice. How does Bob know for sure that Alice created the message?
8.5 Consider WEP for 802.11. Suppose that the data is 10101010 and the keystream is
11110111. What is the resulting ciphertext?
8.6. Using the monoalphabetic cipher in the textbook, encode the message “This is a hard problem.” Decode the message “rmij’u uamu xyj.”
8.7 Consider the RSA algorithm with p=5 and q=11. a. What are n and z?
b. Let e be 3. Why is this an acceptable choice for e?
c. Find d such that de=1 (mod z) and d 160.
Practical assignment
This assignment consists of programming a Pinger client. Please submit the following items in a ZIP file.
1) Java or Python source code;
2) Instructions on how to install and run your program;
3) A brief design document explaining your solution.
Note: I shall not provide remedial help concerning coding problems that you might have. Students are responsible for the setup of their own coding environment. Each student is also expected to debug their code.
Option 1: UDP Pinger Lab Using Java
In this assignment, you will study a simple Internet ping server written in the Java language, and implement a corresponding client. The functionality provided by these programs is similar to the standard ping programs available in modern operating systems, except that they use UDP rather than Internet Control Message Protocol (ICMP) to communicate with each other. (Java does not provide a straightforward means to interact with ICMP.)
You are given the complete code for the Ping server below. Your job is to write the Ping client.
Server Code
The following code fully implements a ping server. You need to compile and run this code. You should study this code carefully, as it will help you write your Ping client.
import*; import*; import java.util.*;
* Server to process ping requests over UDP.
public class PingServer
private static final double LOSS_RATE = 0.3;
private static final int AVERAGE_DELAY = 100; // milliseconds

public static void main(String[] args) throws Exception
// Get command line argument. if (args.length != 1) {
System.out.println("Required arguments: port");
int port = Integer.parseInt(args[0]);
// Create random number generator for use in simulating
// packet loss and network delay. Random random = new Random();
// Create a datagram socket for receiving and sending UDP packets
// through the port specified on the command line. DatagramSocket socket = new DatagramSocket(port);
// Processing loop. while (true) {
// Create a datagram packet to hold incomming UDP packet. DatagramPacket request = new DatagramPacket(new byte[1024], 1024);
// Block until the host receives a UDP packet. socket.receive(request);
// Print the recieved data. printData(request);
// Decide whether to reply, or simulate packet loss. if (random.nextDouble() LOSS_RATE) {
System.out.println(" Reply not sent.");
// Simulate network delay.
Thread.sleep((int) (random.nextDouble() * 2 * AVERAGE_DELAY));
// Send reply.
InetAddress clientHost = request.getAddress();
int clientPort = request.getPort();
byte[] buf = request.getData();
DatagramPacket reply = new DatagramPacket(buf, buf.length, clientHost, clientPort);
System.out.println(" Reply sent.");
* Print ping data to the standard output stream.
private static void printData(DatagramPacket request) throws Exception

// Obtain references to the packet`s array of bytes. byte[] buf = request.getData();
// Wrap the bytes in a byte array input stream,
// so that you can read the data as a stream of bytes. ByteArrayInputStream bais = new ByteArrayInputStream(buf);
// Wrap the byte array output stream in an input stream reader,
// so you can read the data as a stream of characters. InputStreamReader isr = new InputStreamReader(bais);
// Wrap the input stream reader in a bufferred reader,
// so you can read the character data a line at a time.
// (A line is a sequence of chars terminated by any combination of and .) BufferedReader br = new BufferedReader(isr);
// The message data is contained in a single line, so read this line. String line = br.readLine();
// Print host address and data received from it. System.out.println(
"Received from " + request.getAddress().getHostAddress() + ": " +
new String(line) );
Packet Loss
Because packet loss is rare or even non-existent in typical campus networks, the server in this lab injects artificial loss to simulate the effects of network packet loss. The server has a parameter LOSS_RATE that determines which percentage of packets should be lost.

Compiling and Running Server
To compile the server, do the following:
To run the server, do the following:
java PingServer port
where port is the port number the server listens on. Remember that you have to pick a port number greater than 1024, because only processes running with root (administrator) privilege can bind to ports less than 1024.
Note: if you get a class not found error when running the above command, then you may need to tell Java to look in the current directory in order to resolve class references. In this case, the commands will be as follows:
java -classpath . PingServer port
Your Job: The Client
Hint: Cut and paste PingServer, rename the code PingClient, and then modify the code. You should write the client so that it starts with the following command:
java PingClient host port
The client should send 10 pings to the server. Because UDP is an unreliable protocol, some of the packets sent to the server may be lost, or some of the packets sent from server to client may be lost. For this reason, the client can not wait indefinitely for a reply to a ping message. You should have the client wait up to one second for a reply; if no

When developing your code, you should run the ping server on your machine, and test your client by sending packets to localhost (or, After you have fully debugged your code, you should see how your application communicates across the network with a ping server run by another member of the class.
Message Format
The ping messages in this lab are formatted in a simple way. Each message contains a sequence of characters terminated by a carriage return character (r) and a line feed character (n). The message contains the following string:
PING sequence_number time CRLF
where sequence_number starts at 0 and progresses to 9 for each successive ping message sent by the client, time is the time when the client sent the message, and CRLF represent the carriage return and line feed characters that terminate the line.
Option 2: UDP Pinger Lab Using Python
You can implement your ping client using Python. You should write a simple Python program that follow a step-by-step process to establish a UDP connection with a server through sockets, and send out ping requests. The other requirements are very similar to those by choosing Java. One interesting point to mention is that, that you can use one programming to write your server program, and use a different language to write your client program.

Question Set #71

Views: 1069
File Format: .zip archive containing complete source code, working program, and a document
Editable: Yes
Attachment: Click here to download