CS 725/825 Computer Networks, IT 725 Network Technology

Assignment 5


Due: Monday, December 11, 2023, 2:10 pm (start of the class)

Problems:

  1. (10 points) This question focuses on the concept of Autonomous System (AS) and Autonomous System Number (ASN). Find a tool (an online one is fine, it does not have to be a command line utility) that allows you to retrieve AS information and answer the following questions:
    1. What is the ASN of the University of Rhode Island (URI)?
    2. List the IPv4 and IPv6 prefixes that are included in the URI's AS.
    3. Which ASs is the URI AS connected to?
    4. Does URI serve as a transit AS for some other AS?
  2. (10 points) Run traceroute from a computer on the UNH network (e.g., agate) to www.uri.edu. List the ASs and their ASNs encountered along the way.
  3. (30 points) Consider the trace https://www.cloudshark.org/captures/b214c448dc01 that captures an HTTPS session and answer the questions below. The trace captures encrypted traffic, so normally you would not be able to see the application layer payload. The HTTPS request captured in the trace was made by command line utility curl with the environment variable SSLKEYLOGFILE set to make curl output the session key to a file. As a side note, many browsers and networking libraries can be made to output session keys for network traffic debugging purposes. If you are curious, see this article for more details. The session key was then uploaded to CloudShark together with the trace to enable payload decryption. If you are curious how the same trace looks without access to the key, check https://www.cloudshark.org/captures/742945b83278.
    1. What is the version of TLS used in the HTTPS transaction captured in the trace?
    2. How many packets does it take to establish the TLS session (i.e., past 3-way handshake all the way to the packet that carries the HTTP HEAD request)?
    3. Draw and annotate a ladder diagram showing the packets used to establish the TLS session.
    4. Which packets contain the server certificate(s)?
    5. Who issued the certificate(s)?
    6. After the secure connection is established, the client starts communicating using HTTP/2. How does the client know that the server is capable of handling HTTP/2?
    7. How many HTTP/2 streams are used during the captured session? What is their purpose?
    8. Does the server support HTTP/3? How is that indicated?
    9. In which packet does the client notify the server that the TLS connection is being closed?

Programming assignment:

  1. (50 points) The goal of this assignment is to practice the basics of socket programming and to perform elementary performance testing. You are asked to develop a simple utility to measure the length and effective throughput of an HTTP transaction.
  2. Write a simple program that makes an HTTPS request to a website and downloads some content (e.g., a webpage). The program should repeatedly measure the amount of time the transaction took and calculate the effective throughput (the content size divided by the total time it took to get it). You are free to use any programming language or platform. It is fine to use libraries for the HTTPS request. Do not display or save the downloaded content, just the performance observations.

    An execution of your program may look like this:

    [rbartos@agate ~]$ ./a5 -c 10 https://www.cs.unh.edu/~cs725/notes/cs725-fall-2023-09.pdf
    1.44 Mbytes downloaded 10 times
    Average download time 116.0 ms (effective throughput 1.336 Mbits per second)
    Minimum download time 112.3 ms
    Maximum download time 124.3 ms
    

    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 as cheating. You may be asked to give a demo of your program. If your program does not implement fully the required functionality or does not work, you have to make it 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 a5.

    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.