Assignment title: Information


Nova Southeastern University College of Engineering and Computing
Assignment 4
CISC650 Computer Networks
Fall 2016
Due Date: 11/27/2016 11:59 PM EST
Total Points: 100
Part 1. Text reading
Chapter 7, Chapter 8, Chapter 9 Part 2. Textbook questions Chapter 7 [30 points]
7.1 Generalize the basic approaches we used for making the best out of best effort service for real-time interactive multimedia applications.
7.2 Why RTSP is called an out of band control protocol? Find out another protocol that also uses out of band control and compare them.
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 500 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 20 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 three packets have arrived at the receiver with sample delays r3 - t3 , r2 - t2 , and r1 - t1 . Express the estimate of delay d in terms of u and the three samples.
7.5 This chapter describes several FEC schemes. Briefly summarize them . Both schemes increase the transmission rate of the stream by adding overhead. Does interleaving also increase the transmission rate?
7.6 Compare the procedure described in "Adaptive Playout Delay" for estimating average delay with the procedure in Chapter 3 ("Estimating the Round-Trip Time") for estimating round-trip time. What do the procedures have in common? How are they different?

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.
7.8 Compare and contrast RTSP and HTTP used for multimedia applications.
7.9 Summarize how the token buckets and WFQs can be used together to provide policing mechanisms.
Chapter 8 [30 points]
8.1 What is the most important difference between a symmetric key system and a public key system?
8.2 In what way does a hash function provide a better message integrity check than a checksum (such as Internet Checksum)?
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 01010111 and the keystream is 10110000. What is the resulting ciphertext?
8.6. Using the monoalphabetic cipher in the textbook, encode the message "Computer is powerful." 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.
Chapter 9 [15 points]
9.1 What are the five areas of network management defined by the ISO?
9.2 Define the following terms; managing entity, managed device, management agent, MIB, network management protocol.
9.3 What is SNMP and what are its major parts?
9.4 In this chapter we saw that it was preferable to transport SNMP messages in unreliable UDP datagrams. Why do you think the designers of SNMP chose UDP rather than TCP as the transport protocol of choice for SNMP?

Part 3. Practical assignment [25 points]
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.)
The ping protocol allows a client machine to send a packet of data to a remote machine, and have the remote machine return the data back to the client unchanged (an action referred to as echoing). Among other uses, the ping protocol allows hosts to determine round-trip times to other machines.
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 java.io.*; import java.net.*; 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-); return;
}
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.-); continue;
}
// 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); socket.send(reply);
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