CS 725/825 Computer Networks, IT 725 Network Technology

Assignment 4


Due: Wednesday, November 18, 2026, 2:10 pm (start of the class)

Problems:

  1. (30 points) Take a second look at the packet trace cs725-f26-a3.pcapng examined in the previous assignment. Focus on the transport layer and answer the following questions:
    1. Describe the fundamental TCP protocol function performed by each packet in the trace.
    2. Draw a sequence diagram showing the exchanged packets and identify the function of each (e.g., SYN, SYN+ACK, etc.). Label the vertical axes with the TCP protocol states of both the client and server.
    3. What are the absolute values of the initial sequence numbers of the connection (client to server and server to client)? It is okay to give hexadecimal values.
    4. What was the total number of application payload bytes transmitted from the client to the server and from the server to the client?
    5. Estimate the round-trip time between the client and server. Give the packet pair(s) that you considered and outline why you chose them.
    6. Are there ACK packets that cumulatively acknowledge multiple data packets?
    7. Do the client and server agree on the SACK option? If so, how?
    8. What is the initial Window size for both the client and the server?
    9. Which side initiates closing the connection? Is it symmetric or asymmetric release?
  2. (10 points) Referring to the same trace, what would happen if frame 4 were lost? Describe what the server and client would do, and identify the next two packets likely to be exchanged. Describe the contents of those packets, including the payload and the SEQ and ACK numbers.
  3. (10 points) The UNH Cybersecurity Training Module (see the two screenshots below) makes the following dangerously wrong claims about sites served over HTTPS:
  4. Outline your answers to the following questions:

    1. What protection does HTTPS actually provide?
    2. Why is a site served over HTTPS not guaranteed to be "secure" or "legit"?
    3. What additional steps must you take to ascertain the legitimacy of a site served over HTTPS?
    4. How could one set up a malicious site that would be considered "secure" or "legit" based on the UNH Cybersecurity Training?

Programming assignment:

  1. (50 points) The goal of this assignment is to study the latency overhead introduced by various protocols. The assignment focuses on a simple request/response transaction implemented using various protocols and, specifically, on the question of how many network round-trip times (RTTs) it takes to complete such a transaction. While other components contribute to the overall transaction latency, RTT tends to dominate. This question can be answered by analyzing the protocols; however, in this assignment, you are expected to study it experimentally. You will implement a simple client-server system using different protocols. In every case, the client makes a simple request to a server, the server responds with a small amount of arbitrary data, and the client receives it and measures how long the entire transaction takes, including server processing time and, if applicable, the time required to establish and close the connection.
  2. Experiment with the following six protocols:

    1. ICMP
    2. UDP
    3. TCP
    4. TLS over TCP
    5. HTTP (which runs over TCP)
    6. HTTPS (HTTP over TLS over TCP)
    Both the request and response should be no more than a few dozen bytes long, not including protocol overhead. For all protocols except ICMP (use ping for that), you need to implement both a client and a server. It is fine to use libraries for TLS/HTTP/HTTPS. For the HTTP/HTTPS server, you may want to consider using node.js or Flask, but other libraries are also fine. TLS and HTTPS experiments require you to generate your own self-signed (not backed by a recognized CA) certificate (see Question 5 in the previous assignment). Most HTTPS client libraries require extra steps to confirm that it is okay to accept a self-signed certificate. Ignore internet posts that state that accepting self-signed certificates in your program is wrong. Those posts are correct with respect to production code; however, here we are dealing with experiments in a closed environment.

    To run your experiment, use rb1.cs.unh.edu and rb2.cs.unh.edu. In addition to their connectivity to the department network, the servers are connected by three links, each using an interface enp2s0fn and a subnet 10.2.n.0/24, where n = 0, 1, 2. These links carry no traffic other than that generated by the experiments. Each link is configured with a different delay. The extra delay added to the inherent delay of a directly connected link is as follows:

    Interface Subnet Added round-trip delay (ms)
    enp2s0f010.2.0.0/24 3
    enp2s0f110.2.1.0/2410
    enp2s0f210.2.2.0/2430

    The links are configured with private IP addresses, so make sure you send your test traffic over them and not over the public interfaces rb1.cs.unh.edu and rb2.cs.unh.edu. Standard development tools are installed there. Accounts are being set up for all students in the course using their UNH usernames and passwords (the same credentials they use on Agate). The servers do not mount your Agate filesystem. The best way to keep your code in sync across your development environment and both machines is to use git and create separate clones of your repository.

    IPv4 and IPv6 address assignments on rb1/rb2/rb3. This assignment uses only rb1 and rb2, along with the network interfaces enp2s0f0, enp2s0f1, and enp2s0f2. Instead of typing IP addresses, you can use hostnames of the form "pxyz", which resolve to IPv4 addresses of the form 10.x.y.z. For example, "p201" is the hostname for the rb1 interface with IP address 10.2.0.1.

    Exactly how you set up the experiments is up to you. You do not have to run the experiment on all links, but your choices should not be arbitrary. You can use one link to run your experiment and another to verify your answer. Your submission must explicitly state how many network round-trip times (RTTs) it takes to complete such a transaction. You should briefly justify your experiment design decisions.

Extra Credit: You will earn 20 extra assignment points if you implement the client-server system using HTTP/3 and test it just like the protocols listed above.

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.