【図解】TCPの状態遷移 〜Listen、Establish、FIN Wait等〜

TCP の State とは

クライアントは TCP SYN を投げ、サーバはそれを受信すると TCP SYN/ACK を返します。そしてそれを受け取ったクライアントは TCP ACK を返します。

この動作を 3way Handshake と呼びますが、これが完了すると『TCP コネクション』が確立され、データ通信ができる状態になります。この状態 (State) を Established と呼びます。

TCP にはこの "Established" 以外にもホストがどのような状況であるかを示す"状態(State)" がいくつかあります。この記事ではこの State がどのように移り変わるかを説明します。

以下に TCP の状態遷移図を示します。

FIN を最初に送信するホストを Active Close ホスト、FIN を最初に受信するホストを Passive Close ホスト と呼びます。(FIN はクライアント、サーバのどちらからでも最初に送ってよいとされています。)

TCP状態の確認

TCP の状態を確認するには、Windows であればコマンドプロンプトで netstat -n コマンドを、Linuxであればシェルで ss コマンドを使います。以下は Windows の例です。

Linux の場合は ss コマンドを使います。以下を参照下さい。

linux【ss/netstat】コマンドの見方/オプション~Recv-Q/Send-Qやポート確認(Listen/Estab/Unconn),プロセス表示等~
linux【ss/netstat】コマンドの見方/オプション~Recv-Q/Send-Qやポート確認(Listen/Estab/Unconn),プロセス表示等~
ss コマンド (旧 netstat コマンド) とは ss は socket...