TPC總共同擁有11個狀态,狀态轉換圖:

狀态轉換的要素
狀态:
tcp定義的11個狀态
事件:
觸發TCP狀态遷移。事件能夠是:本地應用層調用。收到TCP消息(incoming segment);逾時事件(timeout)
動作:
主要指針對遠端Peer産生的動作,如發送确認等。
轉換中的角色
本地應用層 Local App:産生事件。
本地tcp實作層 local TCP stack:處理事件。完畢狀态轉換;在遠端tcp上産生事件。
遠端tcp實作層 remote TCP stack(or peer):和本地TCP功能一緻。
TCP連接配接建立(三次握手)的表格表示:
socket建立後的預設狀态是CLOSED,從這個初始狀态開始,socket經曆一系列狀态變遷(state transition)。
<col>
目前狀态(current state)
等待事件(expected events)
下個狀态(next state)
運作動作(action)
CLOSED
本地應用調用CONNECT(active open)
SYN_SENT
向peer發送SYN消息。
本地應用調用LISTEN(passive open)
LISTEN
無
收到peer SYN ACK消息
ESTABLISHED
向peer發送SYN ACK消息
收到peerSYN消息
SYN_RECEIVED
向peer發送SYN ACK消息;向peer發送SYN消息。兩個消息在一個響應中發送。
當兩方都進入ESTABLISHED後。表示TCP連接配接已經建立。能夠開始資料通信。
資料通信過程中,TCP狀态一直是ESTABLISHED。
TCP連接配接終止(close,4次握手)的表格表示(非simultaneous close):
本地應用調用CLOSE(close initiator)
FIN_WAIT_1
向peer發送FIN消息
收到peer FIN消息(close responder)
CLOSE_WAIT
向peer發送FIN ACK消息
收到peer FIN ACK消息
FIN_WAIT_2
LAST_ACK
收到peer FIN消息
TIME_WAIT
逾時産生,timeout
close的發起方(initiator)能夠是随意一方(client or server),initiator最後會進入TIME_WAIT狀态。
關于TIME_WAIT狀态的作用,能夠參考:http://www.iteblog.com/archives/169
TCP連接配接終止(close。4次握手)的表格表示(simultaneous close):
simultaneous close表示通信兩方在收到peer FIN消息時,都已經進入了FIN_WAIT_1狀态。
本地應用調用CLOSE(close initiator, both sides)
CLOSING
這樣的情況下,兩方都進入到TIME_WAIT。