対象試験と出題頻度

3ウェイハンドシェイク(Three-Way Handshake)は、基本情報技術者・応用情報技術者で出題されるテーマです。

TCPUDPの比較問題や、コネクション確立手順の穴埋め問題として定番化しており、「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の詳細まで問われることはないので、参考程度で構いません。