T/TCP State Transitions

rcv SYN [TAO OK] / snd SYN,ACK(SYN)timeout=2MSL / delete TCBrcv SYN [TAO OK] / snd SYN,FIN,ACK(SYN) rcv SYN [TAO OK] / snd SYN,ACK(SYN)rcv SYN [no TAO]/ snd SYN,ACK(SYN)passive OPEN / create TCBCLOSE / delete TCBrcv ACK(FIN) / delete TCBrcv ACK(FIN) / rcv ACK(FIN) / rcv FIN / snd SYN,FIN,ACK(FIN)rcv FIN / snd FIN,ACK(FIN)rcv FIN / snd SYN,ACK(FIN)rcv FIN / snd ACK(FIN)rcv FIN / snd ACK(FIN)rcv SYN [no TAO] / snd SYN,FIN,ACK(SYN)rcv SYN [no TAO] / snd SYN,FIN,ACK(SYN)rcv ACK(SYN)CLOSE / snd SYN,FINCLOSE / snd FINCLOSE / snd FINCLOSE / snd FINrcv ACK(SYN) / snd FINrcv ACK(SYN) / snd FINrcv ACK(SYN) / snd FINrcv ACK(SYN) / snd FIN,ACK(SYN)rcv ACK(SYN)rcv ACK(SYN)rcv SYN [no TAO] / snd SYN,FIN,ACK(SYN)rcv SYN [no TAO] / snd SYN,ACK(SYN)Active OPEN / snd SYNActive OPEN / create TCB, snd SYNrcv ACK(FIN) / ACK(SYN)rcv ACK(FIN) / rcv ACK(FIN) / delete TCBrcv FIN / snd ACK(FIN)timeout=2MSL / delete TCB

Definitions of State Transitions

*You can see definitions below directly by placing your cursor on corresponding tags on the picture.

Label

Event / Action

Label

Event / Action

a

Active OPEN / create TCB, snd SYN

e'

rcv FIN / snd SYN,ACK(FIN)

a'

Active OPEN / snd SYN

e''

rcv FIN / snd FIN,ACK(FIN)

b

rcv SYN [no TAO] / snd ACK(SYN)

e'''

rcv FIN / snd SYN,FIN,ACK(FIN)

b'

rcv SYN [no TAO] / snd SYN,ACK(SYN)

f

rcv ACK(FIN) /

b''

rcv SYN [no TAO] / snd SYN,FIN,ACK(SYN)

f '

rcv ACK(FIN) / delete TCB

c

rcv ACK(SYN)

f''

rcv ACK(FIN) / ACK(SYN)

c'

rcv ACK(SYN) / snd FIN

g

CLOSE / delete TCB

c''

rcv ACK(SYN) / snd FIN,ACK(SYN)

h

passive OPEN / create TCB

d

CLOSE / snd FIN

i (=b')

rcv SYN [no TAO] / snd SYN,ACK(SYN)

d'

CLOSE / snd SYN,FIN,ACK(FIN)

j

rcv SYN [TAO OK] / snd SYN,ACK(SYN)

d''

CLOSE / snd SYN,FIN,ACK(SYN)

k

rcv SYN [TAO OK] / snd SYN,FIN,ACK(SYN)

e

rcv FIN / snd ACK(FIN)

T

timeout=2MSL / delete TCB

 

T/TCP State transition notes

1. Connection States

T/TCP requires new connection states and state transitions. Each of the new states in the figure above bears a starred name, created by suffixing a star onto a standard TCP state. Each "starred" state bears a simple relationship to the corresponding "unstarred" state:

This simple correspondence leads to an alternative state model, which makes it easy to incorporate the new states in an existing implementation. Each state in the extended FSM (Finite State Machine) is defined by the triplet:

(old_state, SENDSYN, SENDFIN)

where 'old_state' is a standard TCP state and SENDFIN and SENDSYN are Boolean flags. The SENDFIN flag is turned on (on the client side) by a SEND(... EOF=YES) call, to indicate that a FIN should be sent in a state which would not otherwise send a FIN. The SENDSYN flag is turned on when the TAO test succeeds to indicate that the connection is only half synchronized; as a result, a SYN will be sent in a state which would not otherwise send a SYN.

Here is a more complete description of these boolean variables:

2. Simultaneous Open and Close

3. Multi-Packet Request/Response Sequence