TCP は「信頼性の高い通信」を実現するために、 パケットの中に 制御ビット(フラグ) を持っています。 これらは通信の開始・維持・終了を制御するための“信号”のようなものです。
現在の TCP では 8つの制御ビット が存在し、 それぞれが通信の状態を細かく表現しています。
TCP 制御ビット一覧(8bit)
| ビット | 名称 | 役割 |
|---|---|---|
| CWR | Congestion Window Reduced | 混雑通知への応答 |
| ECE | ECN-Echo | ネットワーク混雑を通知 |
| URG | Urgent | 緊急データあり |
| ACK | Acknowledgment | 受信確認(OK の返事) |
| PSH | Push | データを即時アプリへ渡す |
| RST | Reset | 接続を強制リセット |
| SYN | Synchronize | 接続開始(同期要求) |
| FIN | Finish | 接続終了要求 |
なぜ “6bit” と説明されることが多いのか?
昔の TCP には 6つの制御ビット(URG〜FIN)しかなかったため、 教科書や資格試験では今でも「6bit」と説明されることが多いです。
しかし現在は、
- ECE
- CWR
の 2bit が追加され、 合計 8bit が制御ビットとして使われています。
つまり、 「2bit 余っている」のではなく、 後から追加されて埋まったというのが正しい理解。
主要な制御ビットの動作をわかりやすく解説
SYN:接続開始の合図
TCP の 3ウェイハンドシェイクで使われる最初の信号。 「通信を始めたい」という意思表示。
ACK:受信確認
TCP の信頼性を支える最重要ビット。 「データ届いたよ」「次はこの番号から送って」と通知する。
FIN:接続終了
通信を丁寧に終了させるためのビット。 FIN → ACK → FIN → ACK の 4 ステップで切断する。
RST:強制切断
異常時に使われる。 ポートが閉じている、アプリが落ちた、不正パケットなどで即座に接続を破棄。
PSH:即時処理
データをバッファに溜めず、すぐアプリケーションへ渡す。 チャットやリアルタイム通信で利用される。
URG:緊急データ
緊急データがあることを示す。 現代ではほぼ使われないレガシー機能。
ECE / CWR:混雑制御(ECN)
ネットワークが混雑していることを通知し、 送信側がウィンドウサイズを調整するためのビット。
制御ビットの組み合わせで通信の状態が決まる
| 状態 | ビット |
|---|---|
| 接続開始 | SYN |
| 接続確立 | SYN + ACK |
| 通常データ | ACK |
| 即時処理 | PSH + ACK |
| 接続終了 | FIN + ACK |
| 強制終了 | RST |
| 混雑通知 | ECE / CWR |
TCP はこの組み合わせで、 通信の状態を細かく制御している。
まとめ:制御ビットを理解すると通信の全体像が見える

- TCP の制御ビットは 現在は 8bit
- 昔は 6bit → ECN の追加で 8bit に拡張
- SYN/ACK/FIN/RST が通信の骨格
- PSH/URG はデータ処理の優先度
- ECE/CWR は混雑制御のための新しい仕組み
制御ビットを理解すると、 Wireshark の解析や通信トラブルの原因特定が一気に楽になります。



人気ブログランキング ブログパーツ