Homework 6 - Chapter 6

Due: Friday November 14, 2014 at 11:55pm

  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 for the sequence number selection algorithm 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. Consider the nature of the IP subnet when answering.
  7. Can more than one connection exist between a given src IP, src port, dest IP, dest port tuple? Explain why or why not.
  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? Describe a scenario where UDP would be preferred.