【てぃーしーぴーはんどしぇいく】

TCPハンドシェイク とは?

💡 通信開始前の「3回の握手」
📌 このページのポイント
TCP 3ウェイハンドシェイク Client Server ① SYN (seq=x) 接続要求 ② SYN-ACK (seq=y, ack=x+1) 確認+応答 ③ ACK (ack=y+1) 確認応答 接続確立!通信開始
TCP 3ウェイハンドシェイクのイメージ
ひよこ ひよこ

なぜ3回もやり取りするの?

ペンギン先生 ペンギン先生

①クライアント「接続したい」(SYN)、②サーバー「OK、こちらからも接続したい」(SYN-ACK)、③クライアント「了解」(ACK)。2回だとクライアントは応答を確認できるけど、サーバーは自分の応答がクライアントに届いたか確認できない。3回で双方向の通信路が確立されたことを保証するんだよ

ひよこ ひよこ

パフォーマンスへの影響は?

ペンギン先生 ペンギン先生

東京↔サンフランシスコのRTTは約100ms。TCP接続に1.5 RTT(150ms)、TLSハンドシェイクにさらに1〜2 RTT。合計250〜350msが通信前にかかる。HTTP/1.1のKeep-Aliveや HTTP/2の接続多重化は、この接続コストを削減するための仕組み。HTTP/3QUICは0-RTTで接続できるから劇的に速いよ

ひよこ ひよこ

SYNフラッド攻撃って何?

ペンギン先生 ペンギン先生

攻撃者が大量のSYNパケットを送信して、SYN-ACKを返したサーバーはACKを待ち続ける。接続待ちテーブルが溢れて正常なリクエストを受け付けられなくなるDoS攻撃。対策はSYN Cookie(接続状態を保持せずにACKの正当性を検証する仕組み)で、現代のOSは標準で対応しているよ

ひよこ ひよこ

IPA試験での出題パターンは?

ペンギン先生 ペンギン先生

「3ウェイハンドシェイクのシーケンスを答えよ」→SYN→SYN+ACK→ACK。「切断時の手順は?」→FIN→ACK→FIN→ACK(4ウェイハンドシェイク)。TCPヘッダのフラグフィールド(SYN、ACK、FIN、RST等)の意味も頻出だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
TCPハンドシェイク」って出てきたら「TCP接続確立のための3段階の手順」と思えればだいたいOK!
📖 おまけ:英語の意味
「TCP Three-Way Handshake」 = TCP3方向ハンドシェイク
💬 Handshake(握手)。通信の前にお互いが「準備OK」を確認する握手だよ
← 用語集にもどる