#004 TCPは「握手」を重んじる騎士だった
この記事は、Zennfess 2025「フリーテーマ」に応募しています。
TCP はエンジニアなら誰もが知っているプロトコルだろう。
しかし「なぜ TCP はここまで “握手” を大事にするのか?」まで考えたことはあるだろうか?
その儀式的なやり取りを丁寧に読み解くと、TCP がまるで「礼節を重んじる騎士」のように見えてくる。
🤝 3ウェイ・ハンドシェイクという名の儀式
TCP の通信は、必ず 3回のやり取りから始まる。
Client → SYN (こちらから接続したい)
Server → SYN + ACK (分かった、こちらも準備OK)
Client → ACK (ありがとう、では始めよう)
これで初めて「確かに届くし、確かに返ってくる」ことが保証される。
2回だけでは足りない。最後の「ACK」があってこそ、両者は騎士のごとく互いの存在を認め合えるのだ。
⚔️ 騎士の流儀:律儀すぎる制御たち
接続が確立した後も、TCP はさまざまな制御で相手を気遣う。
- 順序制御:送った順番で必ず届ける
- 再送制御:失われたら必ずもう一度届ける
- 流れ制御:相手の受け取り能力を尊重する
- 輻輳制御:ネットワーク全体の混雑も気にする
「速さ」よりも「誠実さ」を重んじる姿勢は、まさに騎士道的である。
🛡️ 別れもまた礼儀正しく
TCP の通信終了もまた儀式的だ。
多くの場合は 4回のやり取りで、お互いに「もう送らないよ」と伝え合う。
Client → FIN (こちらは送信終わり)
Server → ACK (受け取った)
Server → FIN (こちらも終わり)
Client → ACK (了解した)
すぐに断ち切ることもできるが、それは例外的な非常時(RST)だけ。
通常はきちんと別れの挨拶を交わしてから退場する。
📜 歴史の足跡
1981年 RFC 793 にて TCP が標準化
1990年代 SYN フラッド攻撃に対して SYN Cookies が提案される
2000年代以降 輻輳制御アルゴリズム(Reno, CUBIC, BBR)が進化
現在 QUIC/HTTP/3 など「0-RTT」系の新方式が登場するも、TCP は依然として基盤に居座る
💭 「礼儀」が生む信頼
人間社会でも、初対面の挨拶や別れの言葉は信頼の基礎となる。
TCP の握手も同じだ。「届く・返る・確認する」という当たり前の動作が、インターネット全体の安心感を支えている。
プロトコルの設計を「無駄に見えるやり取り」と片づけず、文化的な所作として眺めてみると、TCP がなぜここまで長く生き残っているのかが見えてくる。
まとめ
- TCP は通信開始に 3ウェイ・ハンドシェイクを行う
- 終了時も 4回のやり取りで別れを告げる
- 順序制御・再送制御・流れ制御・輻輳制御など、礼儀正しく相手を気遣う
- その姿は「礼節を重んじる騎士」と呼ぶにふさわしい
次に tcpdump で握手を眺めるとき、単なるパケットのやり取りではなく「騎士の礼節の儀式」として見てみてほしい。
📚 参考文献
- RFC 793 - Transmission Control Protocol
- RFC 9293 - TCP の最新版仕様
- RFC 4987 - TCP SYN Flooding Attacks and Mitigations
- W. Richard Stevens, TCP/IP Illustrated, Volume 1
Discussion