下記がnetstatコマンドの状態の一覧です。
状態は、TCP/IPの通信プロトコルで定義されています。
netstatコマンドで表示される状態の一覧です。
LISTENING
接続を受け付ける準備ができている状態です。
通常、Webサーバやメールサーバなどのサービスがこの状態になります。
ESTABLISHED
アクティブな接続状態です。
クライアントとサーバがデータのやり取りをしている状態です。
SYN_SENT
接続要求を送信した状態です。
クライアントがサーバに接続要求を送信した後、まだサーバから応答が返ってきていない状態です。
SYN_RECEIVED
接続要求を受信した状態です。
サーバがクライアントから接続要求を受信した後、まだクライアントからデータの送信が開始されていない状態です。
FIN_WAIT_1
接続の終了を待機している状態です。
クライアントがサーバとの接続を終了することを通知した後、まだサーバから応答が返ってきていない状態です。
FIN_WAIT_2
接続の終了を待機している状態です。
サーバがクライアントとの接続を終了することを通知した後、まだクライアントから応答が返ってきていない状態です。
CLOSE_WAIT
接続の終了を待機している状態です。
クライアントがサーバとの接続を終了することを通知した後、まだサーバからデータの送信が終了していない状態です。
LAST_ACK
接続の終了を待機している状態です。
サーバがクライアントとの接続を終了することを通知した後、まだクライアントから終了要求の確認が返ってきていない状態です。
TIME_WAIT
接続の終了を待機している状態です。
サーバがクライアントとの接続を終了したことを通知した後、一定時間待機している状態です。
CLOSE
接続が終了した状態です。
クライアントとサーバの両方が接続を終了したことを通知した後、接続が終了した状態です。
CLOSING
接続が終了している状態です。
クライアントとサーバのどちらかが接続を終了したことを通知した後、接続が終了している状態です。
UNKNOWN
状態が不明な状態です。通常、接続が正常に確立されていない状態です。
状態が遷移する順番は、TCP/IPの通信プロトコルで定義されています。
通常の接続の流れは、以下のとおりです。
1.LISTENING 状態
サーバが接続を受け付ける準備ができている状態です。
2.SYN_SENT 状態
クライアントがサーバに接続要求を送信した状態です。
3.SYN_RECEIVED 状態
サーバがクライアントから接続要求を受信した状態です。
4.ESTABLISHED 状態
クライアントとサーバがデータのやり取りをしている状態です。
接続を終了するには、以下の手順が必要です。
5.FIN_WAIT_1 状態
クライアントがサーバとの接続を終了することを通知した状態です。
6.FIN_WAIT_2 状態
サーバがクライアントとの接続を終了することを通知した状態です。
7.CLOSE_WAIT 状態
クライアントがサーバからデータの送信が終了するのを待っている状態です。
8.LAST_ACK 状態
サーバがクライアントからデータの送信が終了したことを確認した状態です。
9.TIME_WAIT 状態
サーバがクライアントとの接続が完全に終了したことを確認するために一定時間待機している状態です。
10.CLOSE 状態
接続が終了した状態です。
接続を終了する際には、クライアントとサーバの両方が同じ手順を踏む必要があります。
なお、CLOSING 状態は、クライアントとサーバのどちらかが接続を終了したことを通知した後、接続が終了している状態です。この状態は、TIME_WAIT 状態に移行する前に、一時的に表示されることがあります。
また、UNKNOWN 状態は、接続が正常に確立されていない状態です。この状態が表示される場合は、接続の確立に失敗していることを意味します。
netstat -anoについて補足です。
netstatコマンドで表示される列の一覧です。
左から順に以下の情報を表しています。
プロトコル
使用されているプロトコルを表します。
Local Address
ローカルホストのIPアドレスとポート番号を表します。
Foreign Address
リモートホストのIPアドレスとポート番号を表します。
State
接続の状態を表します。
PID
接続を作成したプロセスのIDを表します。
これらの情報を組み合わせることで、ネットワークの状態を詳細に調査することができます。
本日は、netstatコマンドの状態の一覧について解説でした。