Exercises

   


13.1 Is TCP a transport-, network-, or link-layer protocol?

13.2 How does IPv4 identify the next-higher-level protocol that should process an incoming message? How might this dispatching differ in other networking architectures?

13.3 How many hosts can exist in an IPv4 subnet with a mask of 255.255.255.0?

13.4 What is a broadcast message? How are broadcast messages identified in IPv4? How are IPv6 broadcast messages identified?

13.5 Why are TCP and UDP protocol control blocks kept on separate lists?

13.6 Why does the output routine, rather than the socket-layer send routine (sosend()), check the destination address of an outgoing packet to see whether the destination address is a broadcast address?

13.7 Why does FreeBSD not forward broadcast messages?

13.8 Why does the TCP header include a header-length field even though it is always encapsulated in an IP packet that contains the length of the TCP message?

13.9 What is the flow-control mechanism used by TCP to limit the rate at which data are transmitted?

13.10 How does TCP recognize messages from a host that are directed to a connection that existed previously but that has since been shut down (such as after a machine is rebooted)?

13.11 When is the size of the TCP receive window for a connection not equal to the amount of space available in the associated socket's receive buffer? Why are these values not equal at that time?

13.12 What are keepalive messages? For what does TCP use them? Why are keepalive messages implemented in the kernel rather than, say, in each application that wants this facility?

13.13 Why is calculating a smoothed round-trip time important, rather than, for example, just averaging calculated round-trip times?

13.14 Why does TCP delay acknowledgments for received data? What is the maximum time that TCP will delay an acknowledgment?

13.15 Explain what the silly-window syndrome is. Give an example in which its avoidance is important to good protocol performance. Explain how the FreeBSD TCP avoids this problem.

13.16 What is meant by small-packet avoidance? Why is small-packet avoidance bad for clients (e.g., the X Window System) that exhibit one-way data flow and that require low latency for good interactive performance?

13.17 Describe three ways in which IPv6 differs from IPv4.

13.18 In IPv6, what protocol replaces ARP for translating IP addresses to hardware addresses?

13.19 What does the networking code use the network mask, or prefix, of a link to determine?

13.20 Why are there separate protocols for authentication and encryption in IPSec?

13.21 Why is the cryptographic subsystem implemented using two queues and two kernel threads?

13.22 What limitation of ARP does neighbor discovery overcome? How does it overcome this limitation?

13.23 How is the protection offered to packets by IPSec different in tunnel mode and transport mode?

*13.24 Why is the initial sequence number for a TCP connection selected at random, rather than being, say, always set to zero?

*13.25 In the TCP protocol, why do the SYN and FIN flags occupy space in the sequence-number space?

*13.26 Describe a typical TCP packet exchange during connection setup. Assume that an active client initiated the connection to a passive server. How would this scenario change if the server tried simultaneously to initiate a connection to the client?

*13.27 Sketch the TCP state transitions that would take place if a server process accepted a connection and then immediately closed that connection before receiving any data. How would this scenario be altered if FreeBSD TCP supported a mechanism where a server could refuse a connection request before the system completed the connection?

*13.28 Why does UDP match the completely specified destination addresses of incoming messages to sockets with incomplete local and remote destination addresses?

*13.29 Why might a sender set the Don't Fragment flag in the header of an IP packet?

*13.30 The maximum segment lifetime (MSL) is the maximum time that a message may exist in a network that is, the maximum time that a message may be in transit on some hardware medium or queued in a gateway. What does TCP do to ensure that TCP messages have a limited MSL? What does IP do to enforce a limited MSL? See Fletcher & Watson [1978] for another approach to this issue.

*13.31 Why does TCP use the timestamp option in addition to the sequence number in detecting old duplicate packets? Under what circumstances is this detection most desirable?

**13.32 Describe a protocol for calculating a bound on the maximum segment lifetime of messages in an Internet environment. How might TCP use a bound on the MSL (see Exercise 13.30) for a message to minimize the overhead associated with shutting down a TCP connection?

**13.33 Describe path MTU discovery. Can FreeBSD take advantage of the fact that the MTU of a path has suddenly increased? Why or why not?

**13.34 What are the tradeoffs between frequent and infrequent transmission of router advertisements in IPv6?

**13.35 Since IPSec may call routines in the network stack recursively, what requirement does this place on the code?

**13.36 Describe three paths that a packet can take through the networking code. How and where is each path chosen?


   
 


The Design and Implementation of the FreeBSD Operating System
The Design and Implementation of the FreeBSD Operating System
ISBN: 0201702452
EAN: 2147483647
Year: 2003
Pages: 183

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net