Homework 5 - Chapter 6

Due: Wednesday February 27 Friday February 29, 2008 at 5:00pm
Each question is worth 2 points.

  1. Why is it important that the port number used by the client in connect() be the same port number used by the server in listen()?
  2. Why is it important that the maximum packet lifetime exceed both the lifetime of a packet and its acknowledgements?
  3. Why is a three-way handshake required to properly establish the channel? Give a reason why less than a three-way handshake would not be sufficient.
  4. UDP provides connectionless communication over the IP subnet. Why would raw IP packets be insufficient for this purpose?
  5. Why were port numbers invented for transport layer addressing? Why wasn't a pre-existing identifier like process IDs or file descriptors used?
  6. Describe a condition under which TCP packets could arrive out of order.
  7. Can more than one connection exist between a given pair of ports?
  8. A common issue in certain systems is that a connection gets stuck in the FIN_WAIT2 stage of the TCP finite state machine (Figure 6.33 on page 543). How is this state entered and why is it not exited?
  9. Under what network conditions would Nagle's algorithm perform poorly? Consider a user's tolerance for lag when on a character-oriented connection.
  10. When would it be more advantageous to use UDP instead of TCP?