CS 725/825 Computer Networks, IT 725 Network Technology

Assignment 3

Due: Wednesday, October 24, 2018, 2:10 pm (start of the class)


  1. (20 points) Analyze a trace stored on CloudShark (https://www.cloudshark.org/captures/abaace108e6d) that captures a SMTP session and answer the following questions:
    1. What software (name and version) was used on client and server side of the conversation?
    2. What was the Subject of the message?
    3. Is the body of the message MIME encoded?
    4. What is the Content-Type of the message?
    5. What is the Content-Transfer-Encoding of the message?
    6. Does the message have an attachment?
    7. When was the message sent?
  2. (10 points) Send yourself a brief email that includes an attachment. Find a way to make your mail client to show the raw message source. Describe the lines in the message header and outline how the attachment was included in the message.
  3. (10 points) Using nc
    1. Connect to a web server and capture its response to a well-formed GET request that you send to it. Briefly describe each line in the HTTP response. No need to analyze the documents itself.
    2. Pretend to be a server and capture an HTTP request made by a browser. Briefly describe each line in the request.

    You are expected to look up the meaning of the header lines that were not discussed in the class.

  4. (30 points) File cs725-f18-a3-pings.txt contains output of over 7,000 pings to google.com (I was trying to troubleshoot a network problem and forgot to stop the probes). The goal is to use the result and make basic conclusions about the network (Comcast) performance over the two hour period captured by the experiment. It is also an exercise in dealing with raw data.
  5. Analyze the results and answer the following questions:

    1. What was the minimum, maximum, mean, and median latency of the pings that succeeded? Ignore pings that failed in the calculation. What was the standard deviation of latency?
    2. What was the packet loss rate?
    3. What was the average and maximum length of the period when packets were not delivered? Note that by default (used here), ping sends one probe per second.
    4. Come up with a graph that visualizes the distribution of ping latencies. There are several ways to do this, there is no specific one that I am looking for. The goal is to find a way to display the data in a way that is clear and easy to understand.
    5. Extra credit: At the first glance, there seem to be a periodical increase in latency. See if you can use some statistical methods (e.g., autocorrelation) to support or reject the hypothesis.

Programming assignment:

  1. (30 points) Study SMTP (the textbook has a good description, you can also look at RFC 5321 or Wikipedia article, which has a good example of a typical SMTP exchange). The goal of this part of the assignment is try to directly communicate with an MTA pretending to be another MTA sending a message.

    1. From a computer with a UNH IP address (this is important), connect to the mail server running at berlioz.cs.unh.edu on port 25 using nc (or a telnet client, note that telnet is not installed on agate to discourage people from using it for remote access) and pretend to be an MTA delivering a message addressed to your email address. Use subject "SMTP test" and make sure that you are identified in the body of the message. Capture the session and turn it in as a part of the assignment paper. Technically, you can use any mail server for the assignment, however, I would like to ask you to use the one specified above. While there is nothing technically wrong with connecting to any mail server, typos-filled hand-typed sessions tend to trigger various security alarms. I have learned this the hard way when the course was offered in the past and would like to avoid such problems this time around. Analyze its full header. Point out all the information that may indicate that the message did not originate from a legitimate source.
    2. Write as-short-as-possible script that delivers an email message by (partially) implementing SMTP conversation. You are not allowed to use any command or utility for direct sending of email (e.g., the mail command in Unix/Linux) or You are not allowed to use any library for sending email (e.g., javax.mail). Basic shell, nc and expect are probably good starting points in your search for the right tools. You are not expected to do extensive error checking.

    The source code for the programming part of the assignment must be committed to your course Git repostory.

Submission instructions:

Upload your submission as a single PDF file using Canvas (mycourses.unh.edu). More details can be found in the standard assignment submission instructions.