查看服務器連接狀態的一些信息的命令
- netstat -n | grep 7002 | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TCP 協議的操作可以使用一個具有 11 種狀態的有限狀態機( Finite State Machine )來表示,圖 1描述了 TCP 的有限狀態機,圖中的圓角矩形表示狀態,箭頭表示狀態之間的轉換,各狀態的描述如表3-2 所示。圖中用粗線表示客戶端主動和被動的服務器端建立連接的正常過程:客戶端的狀態變遷用粗實線,服務器端的狀態變遷用粗虛線。細線用於不常見的序列,如復位、同時打開、同時關閉等。圖中的每條狀態變換線上均標有“事件/動作”:事件是指用戶執行了系統調用( CONNECT 、 LISTEN 、SEND 或 CLOSE )、收到一個報文段( SYN 、 FIN 、 ACK 或 RST )、或者是出現了超過兩倍最大的分組生命期的情況;動作是指發送一個報文段( SYN 、 FIN 或 ACK )或什麼也沒有(用“-”表示)。
每個連接均開始於CLOSED 狀態。當一方執行了被動的連接原語( LISTEN )或主動的連接原語(CONNECT )時,它便會脫離 CLOSED 狀態。如果此時另一方執行了相對應的連接原語,連接便建立了,並且狀態變爲ESTABLISHED 。任何一方均可以首先請求釋放連接,當連接被釋放後,狀態又回到了CLOSED 。
表 1 TCP 狀態表
狀 態 |
描 述 |
CLOSED |
關閉狀態,沒有連接活動或正在進行 |
LISTEN |
監聽狀態,服務器正在等待連接進入 |
SYN RCVD |
收到一個連接請求,尚未確認 |
SYN SENT |
已經發出連接請求,等待確認 |
ESTABLISHED |
連接建立,正常數據傳輸狀態 |
FIN WAIT 1 |
(主動關閉)已經發送關閉請求,等待確認 |
FIN WAIT 2 |
(主動關閉)收到對方關閉確認,等待對方關閉請求 |
TIMED WAIT |
完成雙向關閉,等待所有分組死掉 |
CLOSING |
雙方同時嘗試關閉,等待對方確認 |
CLOSE WAIT |
(被動關閉)收到對方關閉請求,已經確認 |
LAST ACK |
(被動關閉)等待最後一個關閉確認,並等待所有分組死掉 |