対象試験と出題頻度
3ウェイハンドシェイク(Three-Way Handshake)は、基本情報技術者・応用情報技術者で出題されるテーマです。
TCPとUDPの比較問題や、コネクション確立手順の穴埋め問題として定番化しており、「SYN → SYN/ACK → ACK」の順序を正確に覚えているかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
情報処理試験を勉強していると、「3ウェイハンドシェイクって何?なぜ3回もやり取りが必要なの?」と疑問に感じる場面があります。
3ウェイハンドシェイク(Three-Way Handshake)とは、一言で言うと
「TCPが通信開始前にSYN → SYN/ACK → ACKの3回のパケット交換でコネクションを確立する手順」
のことです。
イメージとしては、
「電話をかけるときの『もしもし』
→『はい、こちら○○です』
→『○○の件でお電話しました』」
というやり取りです。
いきなり本題を話し始めるのではなく、お互いに「聞こえていますか?」「聞こえています」と確認し合ってから会話を始めるのが3ウェイハンドシェイクの考え方です。
📊 3ウェイハンドシェイクの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Three-Way Handshake |
| 使用プロトコル | TCP(Transmission Control Protocol) |
| 手順の流れ | SYN → SYN/ACK → ACK(3回のパケット交換) |
| OSI参照モデル | トランスポート層(第4層) |
解説
TCP/IPネットワークには、データの送受信に使うプロトコルとしてTCPとUDPの2つがあります。
UDPは相手に一方的にデータを送りつけるコネクションレス型で、速度を重視する代わりに到達保証がありません。一方TCPは、通信を始める前に相手と「準備OK」を確認し合うコネクション型のプロトコルです。
この「準備OK」の確認こそが3ウェイハンドシェイクであり、TCPが信頼性の高い通信を実現するための出発点になっています。
▶ 3ステップの詳細(クリックで展開)
ステップ1:SYN(接続要求)
クライアントがサーバに「接続したい」という意思表示としてSYN(Synchronize)パケットを送信します。このパケットには、クライアント側のシーケンス番号(通信データの順序管理に使う番号)が含まれます。
ステップ2:SYN/ACK(接続許可+確認応答)
SYNパケットを受け取ったサーバは、「接続を受け入れる」ことを示すSYN/ACKパケットを返送します。ここにはサーバ側のシーケンス番号と、クライアントのシーケンス番号に1を加えた確認応答番号が含まれます。
ステップ3:ACK(確認応答)
クライアントはSYN/ACKを受信し、「確認しました」を意味するACKパケットをサーバに送信します。サーバがこれを受理した時点で、双方向の通信路(コネクション)が確立し、データの送受信が始まります。
▶ なぜ「3回」必要なのか(クリックで展開)
2回のやり取り(SYN → SYN/ACK)だけでは、クライアントは「自分の送信が相手に届いた」と確認できますが、サーバ側は「自分の返答が相手に届いたかどうか」を確認できません。
3回目のACKがあることで、サーバも「相手は自分の応答を正しく受け取った」と判断でき、双方が安心してデータ転送に入れます。
ここだけは確実に押さえてください。3回のやり取りは「双方向の到達確認を最小回数で完了させる」ために設計されたものです。
▶ TCPとUDPの比較(クリックで展開)
| 項目 | TCP | UDP |
|---|---|---|
| 接続方式 | コネクション型(通信前に接続確立) | コネクションレス型(確認なしで送信) |
| 信頼性 | 高い(再送制御・順序制御あり) | 低い(到達保証なし) |
| 速度 | UDPより遅い(確認処理のオーバーヘッドあり) | 高速(確認処理が不要) |
| 用途例 | HTTP/HTTPS、メール(SMTP)、ファイル転送(FTP) | DNS、NTP、動画・音声ストリーミング |
TCPが「正確に届けること」を最優先にしているのに対し、UDPは「素早く送ること」を最優先にしています。
試験では「コネクション型=TCP」「コネクションレス型=UDP」の対比が頻出です。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 3ウェイハンドシェイクの核心を3行で
・TCPがコネクションを確立するための3回のパケット交換手順
・順序は SYN → SYN/ACK → ACK。双方向の到達確認を最小回数で実現する
・コネクション確立が不要なUDPとの対比を押さえることが重要
試験ではこう出る!
3ウェイハンドシェイクは、TCP/UDPの比較問題やコネクション確立手順の穴埋め問題として、FE・APの両試験で繰り返し問われています。
出題パターンは大きく3つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R4秋 午前 問34 |
コネクションレスのデータグラム通信を実現するプロトコルを選ぶ問題。TCPの解説中に3ウェイハンドシェイクが登場。 | ・TCP=コネクション型(3ウェイハンドシェイクあり) ・UDP=コネクションレス型 |
| AP R1秋 午後 問5 |
HTTP/2のネットワーク問題。TCPコネクション確立手順としてSYN→SYN/ACK→ACKの穴埋めが出題。 | ・3つのパケット(SYN・SYN/ACK・ACK)の順序 ・FINはコネクション切断用(ひっかけ) |
| FE H23秋 午前 問38 |
TCP/IP階層モデルにおいてTCPが属する層を選ぶ問題。解説で3ウェイハンドシェイクに言及。 | ・TCP=トランスポート層 ・SYNとACKによるコネクション確立 |
📝 IPA試験での出題パターン
パターン1:「TCPとUDPの違いを選べ」
TCPの特徴として「コネクション確立(3ウェイハンドシェイク)を行う」「再送制御・順序制御がある」が正解要素。UDPの「コネクションレス」「確認応答なし」との対比がひっかけに使われる。
パターン2:「SYN → ? → ACKの穴埋め」
AP午後問題でよく登場する形式。コネクション確立の3ステップを順番に埋めさせる。FIN/ACKはコネクション切断時のパケットであり、ここに入れるのは誤り。
パターン3:「3ウェイハンドシェイクを表す図を選べ」
4つのシーケンス図から正しい手順の図を選ぶ形式。SC(情報処理安全確保支援士)H22秋 午前2 問20、H28秋 午前2 問19で出題。FE/APでも類題が出る可能性がある。
試験ではここまででOKです。シーケンス番号の計算やウィンドウサイズの詳細までFE/APで問われることはないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. TCPのコネクション確立方式である3ウェイハンドシェイクの手順として、最も適切なものはどれでしょうか?
- A. クライアントがFINパケットを送信し、サーバがFIN/ACKパケットを返送し、クライアントがACKパケットを送信してコネクションを確立する。
- B. クライアントがSYNパケットを送信し、サーバがSYN/ACKパケットを返送し、クライアントがACKパケットを送信してコネクションを確立する。
- C. クライアントがデータパケットを送信し、サーバが受信確認のACKパケットを返送し、データ転送が完了した時点でコネクションが確立する。
正解と解説を見る
正解:B
解説:
3ウェイハンドシェイクは、SYN → SYN/ACK → ACKの順でパケットを3回交換し、TCPコネクションを確立する手順です。
選択肢AのFIN・FIN/ACKはコネクション切断時に使われるパケットであり、確立の手順には登場しません。選択肢Cはデータ転送の流れの説明であり、コネクション確立はデータ送信の前段階で行われるため、手順として誤りです。
よくある質問(FAQ)
Q. 3ウェイハンドシェイクを悪用した攻撃はありますか?
あります。代表的なのがSYNフラッド攻撃です。攻撃者が大量のSYNパケットを送りつけた後、3ステップ目のACKをわざと返さないことで、サーバ側に「接続待ち」の状態を大量に抱えさせます。サーバのリソース(ソケット)が枯渇し、正規のユーザーが接続できなくなるDoS攻撃の一種です。対策としてはSYN Cookieの導入やファイアウォールでのレート制限が一般的です。
Q. コネクションの切断にも同じような手順がありますか?
あります。切断時はFIN → ACK → FIN → ACKの4回のやり取りで行われ、「4ウェイハンドシェイク」と呼ばれます。送信側・受信側がそれぞれ個別にFINパケットで終了を宣言し、相手がACKで承認する形です。FE/APではコネクション確立の出題が圧倒的に多く、切断手順が直接問われることは稀です。
Q. HTTPSの通信でも3ウェイハンドシェイクは行われますか?
行われます。HTTPS通信では、まずTCPの3ウェイハンドシェイクでコネクションを確立し、その上でTLSハンドシェイク(暗号化通信の準備)を実行するという二段構えになっています。AP R1秋 午後問5でもこの流れが題材にされており、TCPコネクション確立→TLSハンドシェイク→HTTPリクエストの順序を理解しておくと午後問題で役立ちます。
Q. HTTP/2やHTTP/3では3ウェイハンドシェイクは不要になりましたか?
HTTP/2はTCP上で動作するため、従来どおり3ウェイハンドシェイクが必要です。一方、HTTP/3はTCPの代わりにQUIC(UDP上に構築されたプロトコル)を使用しており、TCPの3ウェイハンドシェイクとTLSハンドシェイクを統合して接続時間を短縮しています。IPA試験の範囲ではHTTP/3の詳細まで問われることはないので、参考程度で構いません。