Due: Tuesday, April 20, 2021, 11:59 pm

Tasks

Problem Set:

  1. Finish the following questions in Chapter 3 of the textbook
    • Chapter 3, Homework Problems and Questions - R4
    • Chapter 3, Problems - P28

    You can also find the above questions here (Colby IP needed)

  2. When a client attempts to build a TCP connection to a server, a TCP three-way hand-shake is needed. Suppose Trudy is trying to attack the server. Is it possible to attack the server by generating denial-of-service attack? Justify your answer.
  3. Find the IPv4 and IPv6 addresses of a dwarf in the robotics lab. Ping each of the two addresses from another dwarf at three different times in a day (e.g, morning, noon, evening, etc.). Compare the round-trip times the two types of traffic, briefly describe and explain your observation.
  4. Consider this trace, and draw a sequence diagram of the connection and label it with the following information:
    1. Show the absolute starting sequence numbers in each of the two directions (from the client to the server and the other way around). It is fine to give a hex value.
    2. For every packet in the trace, give its main purpose (e.g., SYN-ACK, DATA, ACK, etc.) and relative sequence and acknowledgment numbers.
    3. For every ACK packet in the trace, indicate which packet it acknowledges.
    4. On both client and server sides, indicate the TCP states (label the time axis with the state names).
    5. Identify three pairs of packets that could be best used to estimate the round-trip time (RTT) from client to server and then back to the client. List the observed RTTs and discuss the finding. In your opinion, what was the round trip latency of the network. Explain your answer.

Programming assignment:

Ping is a commonly used network tool to check the status of a network. The standard ping programs use the Internet Control Message Protocol (ICMP). Try the following command on your terminal to see what you get.

ping google.com

To end the process of the standard ping, you can use ctrl-c. Then, you will get some statistics for that ping request. This screenshot shows the results of a ping request on my computer.

Ping Google

In this programming assignment, you will implement a UDP-based simple ping program using Python. As we discussed in class, ping programs use the client-server model. Your simple ping program will have a client and a server.

Your ping client is to send 30 packets to the target server over UDP. For each ping packet, your client program will determine and print its round trip time (RTT) once receiving the corresponding response. UDP is not a reliable protocol, so your ping client shouldn't wait indefinitely for a reply to a ping packet. Instead, your ping client should set a timeout for a response from a server. In this programming assignment, the timeout value is 55 milliseconds. If not response is received, the client should assume that the ping packet was lost and print a message accordingly. After sending 30 ping packets, your client should output the following information:

Download the complete server code for this UDP-based simple ping, study it carefully, and write your ping client code. Please note that you are not expected to modify the server code.

Here is a sample output of my ping program.

Simple Ping Result

Extensions

  1. Update your client code so that it can keep sending ping packets to the server until pressing ctrl-c, like the standard ping programs.
  2. Let your client code be able to read the target server and desired timeout value from the command line.
  3. Run your simple ping program under various scenarios (on the same computer, two computers in the same network, or two computers in the different networks), compare the statistics, and explain the variances.
  4. Play around the timeout value, and explain how it impacts the statistics.

Submission

Please follow the submission instructions to turn in your work.

© 2021 Ying Li. Page last modified: .