TCP
ネットワーク
More than 3 years have passed since last update.


TCPの状態一覧

LISTEN(聴取)

TCPモジュールはリモートホストからのコネクション要求を待っている。パッシブオープンの後で入る状態と同じ。

SYN-SENT(SYN送信済み)

TCPモジュールは自分のコネクション要求の送信を終え、応答確認と対応するコネクション要求を待っている。

SYN-RECEIVED(SYN受信済み)

TCPモジュールは同期(SYN)セグメントを受信し、対応する同期(SYN/ACK)セグメントを送って、コネクション応答確認を待っている。

ESTABLISHED(確立済み)

コネクションが開かれ、データ転送が行える通常の状態になっている。受信されたデータは全てアプリケーションプロセスに渡せる。

FIN-WAIT-1(FIN待機1)

TCPモジュールはリモートホストからのコネクション終了要求か、すでに送った終了要求の応答確認を待っている。

FIN-WAIT-2(FIN待機2)

この状態に入るのは、TCPモジュールがリモートホストからの終了要求を待っているときである。

CLOSE-WAIT(閉鎖待機)

TCPモジュールはアプリケーションプロセスからのコネクション終了要求を待っている。

CLOSING(閉鎖処理中)

TCPモジュールはリモートホストからのコネクション終了要求を待っている。

LAST-ACK(最終ACK)

リモートホストに送ったコネクション終了要求について、TCPモジュールがその応答確認を待っている

TIME-WAIT(時間待機)

コネクション終了要求応答確認をリモートホストが確実に受取るのに必要な時間が経過するまで、TCPモジュールは待機している

CLOSED(閉鎖)

コネクションは全く存在せず、確立段階にも入っていない


TCPの状態遷移図

TCP状態遷移図.002.jpg


アクティブオープンの場合



  1. CLOSED : SYNを送信し、SYN-SENTへ遷移


  2. SYN-SENT : SYN-ACKを受信。応答確認のACKを送信し、ESTABLISHEDへ遷移


  3. ESTABLISHED : コネクション確立完了


パッシブオープンの場合



  1. CLOSED : LISTENへ遷移


  2. LISTEN : リモートホストから接続確立要求を受け取り、SYN-RECEIVEDへ遷移


  3. SYN-RECEIVED : 対応する同期(SYN/ACK)セグメントを送信、コネクション確立要求(ACK)を待つ。ACKを受信したらESTABLISHEDへ遷移


  4. ESTABLISHED : コネクション確立完了


アクティブクローズの場合

パターン1

1. ESTABLISHED : FINを送信し、FIN-WAIT1に遷移

2. FIN-WAIT1 : 送信したFINのACKを受信し、FIN-WAIT2へ遷移

3. FIN-WAIT2 : リモートホストからFINを受信し、ACKを送信。TIME-WAITに遷移

4. TIME_WAIT : コネクション終了要求応答確認(送信したACK)がリモートホストが確実に受取るのを待つ。待機時間が終了したらCLOSEDに遷移。

5. CLOSED : コネクション閉鎖完了

パターン2

1. ESTABLISHED : FINを送信し、FIN-WAIT1に遷移

2. FIN_WAIT1 : FINを送信したが、リモートホストからもFINを受信したので、これに応答確認をする。その後CLOSINGへ遷移

3. CLOSING : 送信したFINの応答確認を待つ。応答確認を受信し次第、TIME-WAITに遷移。

4. TIME_WAIT : コネクション終了要求応答確認(送信したACK)がリモートホストが確実に受取るのを待つ。待機時間が終了したらCLOSEDに遷移。

5. CLOSED : コネクション閉鎖完了


パッシブクローズの場合



  1. ESTABLISHED : FINを受信し、ACKを送信する。CLOSE-WAITに遷移


  2. CLOSE-WAIT : FINを送信する。LAST-ACKに遷移


  3. LAST-ACK : ACKを受信したらCLOSEDに遷移


  4. CLOSED : コネクション閉鎖完了