TIME-WAIT is used for two reasons:
- full-duplex connection close
- protection against old duplicate segments
Overview of Truncation
T/TCP introduces a 32-bit incarnation number, called a "connection count" (CC), that is carried in a TCP option in each segment. A distinct CC value is assigned to each direction of an open connection. A T/TCP implementation assigns monotonically increasing CC values to successive connections that it opens actively or passively.
Besides TAO, the CC value carried in non-SYN segments is also used to protect against old duplicate segments from earlier incarnations of the same connection (we call such segments 'antique duplicates' for short). In the case of short connections (e.g., transactions) that last shorter than MSL, these CC values allow TIME-WAIT state delay to be safely truncated.
For short connections (e.g., transactions), the CC values assigned to each direction of the connection can be used to protect against antique duplicate non-SYN segments. Here we define "short" as a duration less than MSL.
Suppose that there is a connection that uses the CC values TCB.CCsend = x and TCB.CCrecv = y and is opened at time point "time_start". By the requirement [R1], neither x nor y can be reused for a new connection from the same remote host for a time at least 2*MSL; i.e., x or y can be reused for a new connection from the same remote host only after time point "time_start + 2MSL" .
If the connection has been in existence for a time (say, "time_length") less than MSL, then, all non-SYN segments with x or y will vanish before time point "time_start + time_length + MSL" .
Since "time_length" < MSL , all antique duplicates with that CC value must vanish before it is reused. Thus, for "short" connections we can guard against antique non-SYN segments by simply checking the CC value in the segment againsts TCB.CCrecv. Note that this check does not use the monotonic property of the CC values, only that they not cycle in less than 2*MSL. Again, the quiet time at system restart protects against errors due to crash with loss of state.