システムパフォーマンス入門

パフォーマンスに詳しいインフラに憧れて

ユーザ用ツール

サイト用ツール


· 最終更新: 2020/03/19 by 36.2.121.234


TCP状態遷移(LISTENINGやESTABLISHEDやTIME_WAITなど)

概要

TCP状態遷移を覚えることは、パフォーマンスにとって重要です。
コネクション数のチューニングを行ったり、問題発見の手がかりになります。


TCP状態遷移の一覧

状態 説明 重要度
CLOSED 未使用状態のTCPポート。通常これが表示されることはない
LISTENING 待ち受け状態(リッスン状態)のポート。 ★★★
SYN_SENT サーバに対して、通信開始の要求(SYN:Synchronize)を送信したが、
まだそれに対する応答(ACK:Acknowledgement)を受け取っていない状態。
相手が無応答のときもこの状態になる。
ACKを受け取るとESTABLISHEDへ遷移する
SYN_RECEIVED クライアントからSYN要求を受け取った直後の状態。
SYNに対するACKを送信するとESTABLISHEDへ遷移する
ESTABLISHED TCPコネクションが確立して通信している状態。
netstatでは最もよく見る状態。
どちらかが終了処理を始めると、FIN_WAIT_1もしくはCLOSE_WAITへ遷移する
★★★
FIN_WAIT_1 自分の側から先にFINを送信した状態。
そのFINに対するACKを相手から受信すると、FIN_WAIT_2へ遷移するが、
先に相手からのFINを受けるとCLOSINGへ遷移する
FIN_WAIT_2 FINに対するACKを受信した状態。
相手からのFINを受信して、それに対するACKを返すと、TIME_WAITへ遷移する
CLOSE_WAIT 相手からのFINを受け取った状態。
アプリケーションが終了すると、FINを送信してからLAST_ACKへ遷移する
CLOSING FINに対する相手からのACKを受けるとTIME_WAITへ遷移する
LAST_ACK 送信したFINに対するACK待ち状態。
ACKを受け取るとCLOSEDへ遷移して終了する
TIME_WAIT コネクションの終了待ち状態。
しばらく待ったあと、CLOSEDへ遷移して終了する


TCP状態の確認方法

netstat -ant

$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        0      0 192.168.10.100:443      192.100.100.50:59462    ESTABLISHED
tcp        0      0 192.168.10.100:443      192.100.100.50:59465    ESTABLISHED
tcp        0      0 192.168.10.100:443      192.100.100.50:59464    ESTABLISHED
tcp        0      0 127.0.0.1:9000          127.0.0.1:49598         TIME_WAIT
tcp        0      0 192.168.10.100:443      192.100.100.50:59461    ESTABLISHED
tcp        0      0 192.168.10.100:888      11.3.155.1234:51018      TIME_WAIT
tcp        0      0 192.168.10.100:443      192.100.100.176:59476   ESTABLISHED
tcp        0      0 192.168.10.100:42428    192.168.10.100:443      TIME_WAIT
tcp        0      0 127.0.0.1:9000          127.0.0.1:49600         TIME_WAIT
tcp        0      0 192.168.10.100:443      216.244.66.195:46932    TIME_WAIT
tcp        0      0 127.0.0.1:9000          127.0.0.1:49602         TIME_WAIT
tcp        0      0 127.0.0.1:9000          127.0.0.1:49603         TIME_WAIT
(略)


ステータス別合計

# netstat -nt|awk "/^tcp/{print \$6}"|sort |uniq -c
      6 ESTABLISHED
     14 TIME_WAIT


参考


· 最終更新: 2020/03/19 by 36.2.121.234

ページ用ツール