CS 725/825 Computer Networks, IT 725 Network Technology

Assignment 1


Due: Wednesday, September 23, 2026, 2:10 pm (start of the class)

Problems:

  1. (10 points)
    1. What is the range of IP addresses covered by prefix 132.177.16.0/19?
    2. Give the prefix(es) to cover the IP addresses in the range 10.10.192.0 - 10.10.192.63.
    3. What is the netmask that corresponds to the /28 prefix length?
    4. What prefix length corresponds to netmask 255.192.0.0?

    For each, outline how you got the answer by showing the binary representation of the addresses or the netmask.

  2. (10 points) Find and test Linux command-line commands to:
    1. list all network interfaces of a host,
    2. for an active network interface, find its MAC address, IP addresses, subnet id, prefix, and subnet mask,
    3. for an active network interface, find its driver and firmware info and whether it supports hardware timestamping,
    4. list the contents of the routing table and the default gateway, and
    5. list the contents of the ARP table.

    For each, copy and paste the command that you used together with its output (no screenshots please). Highlight the command and the portion of the output that gives the answer. For example, for part (a), highlight the interface names.

  3. (15 points) Use the command traceroute (tracert on Windows, or any other equivalent tool) and explore the path packets take to reach IP address 142.251.163.99 (it is one of the IP addresses www.google.com resolves to).
    1. How many hops does it take to reach that address?
    2. Can you guess the physical location of each of the routers?
    3. As best as you can, list the names of the service providers whose networks are traversed.
    4. Does the number of hops change when you try at different times?
    5. How does the path change when you try traceroute from a different location? There are web tools that let you test traceroute from their servers. You can also compare the UNH network vs. your home network, the UNH network vs. a cell network, etc.
  4. (15 points) Equation 1.1 from the textbook:
  5. \[d_\text{end-to-end}=N\frac{L}{R}\]

    gives the end-to-end delay of sending a packet of length \(L\) bits over \(N\) links of transmission rate \(R\) bits per second, assuming negligible propagation delay. Generalize this formula for a network where link \(i\) has length \(d_i\) meters and transmission rate \(R_i\) bits per second. The propagation speed along the links is \(c\) meters per second. This is a modified version of Problem P2 from Chapter 1 of the textbook.

Programming assignment:

  1. (50 points) The goal of the programming part of the assignment is to come up with a tool to analyze simple network performance data and to use the tool to study the results of an experiment.
  2. Task

    Capture the output of the ping command to a target of your choice (not all hosts respond to pings; if you see a 100% failure rate, try a different target). Use the -c option to get exactly 100 measurements (more repetitions would make the experiment more interesting, but we are trying to avoid being flagged as suspicious). Save the output to a file. Come up with a method to analyze the observations and answer the following questions:

    1. What was the minimum, maximum, mean, and median latency of the pings that succeeded? Ignore pings that failed (if any) in the calculation. What was the standard deviation of the observed latencies?
    2. What was the packet loss rate? If the success rate was not 100%, report the average and maximum lengths of the periods when packets were not delivered. By default, ping probes the latency once a second.
    3. Generate a graph of the cumulative distribution function (CDF) of the ping latencies. Interpret what you see in the graph.

    You can use any tools, programming language, platform, or development environment. As with most assignments in this course, I strongly recommend that you look for a tool or programming/scripting language that is best suited for the task and learn just enough of it to get things done, rather than trying to solve it in the language that you are most comfortable with. My own solution is in Python (including graph generation, it is about half a page long), but there are many other tools that you can use.

    Deliverables

    1. Include a brief outline of the approach that you took and a sample run in your assignment submission. You must show representative runs of your programs together with appropriate explanations. Important: by showing an execution of your program, you are making a statement that your program, as submitted, works as shown. An attempt to "fake" a run, for example, by writing a program that ignores input and just prints answers regardless of input, will be considered cheating. You may be asked to give a demo of your program. If your program does not fully implement the required functionality or does not work, you must make that clear in the report.
    2. Commit the source code to your course Git repository (see instructions). Add brief instructions on how to compile/run the code to the assignment's README.md. Do not commit data, graphs, documents, etc. into the repository. Don't forget to tag the commit as a1.

Submission instructions:

Upload your submission as a single PDF file using myCourses (mycourses.unh.edu). Any source code used in the assignment must be committed to the course Git repository. More details can be found in the standard assignment submission instructions.