天天看點

TCP狀态轉換圖(state transition diagram)



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

TCP狀态轉換圖(state transition diagram)

狀态轉換的要素

狀态:

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。