Opening and Closing Virtual Circuits

Figure 7.38 shows a dataless TCP session between a Discard client and server. The Discard client on Arachnid connects to the Discard server on Greywolf, and then disconnects. No data is sent between the two systems whatsoever.

Discard is a simple application that takes characters from a client and then throws them away. Since Discard does so little, it is really only useful for testing basic TCP connectivity between two systems.

A Discard client exchanging data with a Discard server
Figure 7.38. A Discard client exchanging data with a Discard server

The order of events are as follows:

  1. The first segment sent in the exchange is the circuit-setup request, being sent from port 4854 on Arachnid to port 9 (the well-known port number for Discard servers) on Greywolf. This segment is being used to initialize the virtual circuit, and as such has the Synchronize flag set. Furthermore, this segment is advertising a beginning sequence number of 138,806. In addition, notice that the Acknowledgment flag is not set and that the Acknowledgment Identifier field is set to zero. Since this is the first segment to be sent, there is nothing to acknowledge, so these fields are cleared. For more information on these flags, refer to Control Flags.

    Also, since this is the first segment, the Maximum Segment Size option is being used to advertise Arachnid’s MRU (minus 40 bytes for the IP and TCP headers). For more information ...

Get Internet Core Protocols: The Definitive Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.