Notes on Virtual Circuit State Changes
Whenever a TCP-based application is loaded, the application has to register with TCP. Server applications do this whenever they issue a passive open, while clients do this whenever they issue an active open to a server.
Once registered, applications are linked with virtual circuits, with the virtual circuits going through a variety of different changes throughout the circuit’s lifetime. For example, when a server is first loaded it enters the “LISTEN” state, where it sits and waits for a connection request. When a connection request arrives, the virtual circuit goes into the “SYN-RECEIVED” state (signifying that a connection request has arrived). Once the handshake is finished—but before any data is exchanged across the virtual circuit—the virtual circuit changes to the “ESTABLISHED” state, and when the applications are finished, the virtual circuit enters one of many different “ENDING” states, depending upon who terminated the circuit and how.
Most operating systems provide tools for monitoring the connectivity state of the virtual circuits that are currently in use on that particular system. This information is useful for debugging TCP, and for also monitoring the network activity on the system. On most Unix and derivative systems, this information can be gleaned by issuing the netstat command. The output of this command will be similar to what is shown in Figure 7.36.