コース一覧
ネットワーク基礎:TCP/IP・HTTP・DNS・CDN
3-way ハンドシェイク

ネットワーク基礎:TCP/IP・HTTP・DNS・CDN

ブラウザからサーバーまでデータが届く仕組みを、OSI・TCP/IP、IPとルーティング、TCP/UDP、HTTP/HTTPS、DNS、CDNから体系的に学びます。通信障害や構成選択をプロトコルから考えられるようになります。

1
ネットワークの全体像
0. ネットワークとは8分
1. OSI 7階層モデル10分
2. TCP/IP 4階層モデル9分
3. パケットとフレーム9分
4. ルーター・スイッチ・ハブ9分
2
IP とルーティング
0. IPアドレス (IPv4 / IPv6)10分
1. サブネットマスクと CIDR11分
2. NAT とプライベートIP9分
3. ルーティングと経路選択10分
4. ファイアウォール基礎9分
3
TCP / UDP
0. TCP と UDP の違い9分
1. 3-way ハンドシェイク9分
2. 輻輳制御と再送10分
3. UDP の用途 (DNS / 動画 / ゲーム)8分
4. ポート番号と well-known port9分
4
HTTP / HTTPS
0. HTTP の基本10分
1. HTTP メソッド9分
2. HTTPS と TLS ハンドシェイク10分
3. HTTP/2 と HTTP/3 (QUIC)10分
4. REST API の設計原則10分
5
DNS とドメイン
0. DNS とは8分
1. レコードタイプ10分
2. 名前解決の流れ10分
3. DNS キャッシュと TTL9分
4. CDN の仕組みと Anycast10分
6
応用
0. ロードバランサ (L4 / L7)10分
1. プロキシとリバースプロキシ9分
2. WebSocket とリアルタイム通信9分
3. gRPC と HTTP/2 利用10分

ネットワーク基礎:TCP/IP・HTTP・DNS・CDN

01ネットワークとは
02OSI 7階層モデル
03TCP/IP 4階層モデル
04パケットとフレーム
05ルーター・スイッチ・ハブ
06IPアドレス (IPv4 / IPv6)
07サブネットマスクと CIDR
08NAT とプライベートIP
09ルーティングと経路選択
10ファイアウォール基礎
11TCP と UDP の違い
123-way ハンドシェイク
13輻輳制御と再送
14UDP の用途 (DNS / 動画 / ゲーム)
15ポート番号と well-known port
16HTTP の基本
17HTTP メソッド
18HTTPS と TLS ハンドシェイク
19HTTP/2 と HTTP/3 (QUIC)
20REST API の設計原則
21DNS とは
22レコードタイプ
23名前解決の流れ
24DNS キャッシュと TTL
25CDN の仕組みと Anycast
26ロードバランサ (L4 / L7)
27プロキシとリバースプロキシ
28WebSocket とリアルタイム通信
29gRPC と HTTP/2 利用

ネットワーク基礎:TCP/IP・HTTP・DNS・CDN

3-way ハンドシェイク

なぜ 2 往復ではなく、3 回なのか

TCP は通信を始める前に挨拶を交わします。呼びかけて、応答が返ってきた。これで通じることは確認できたように見えます。ところが TCP は、そのあともう 1 回、3 回目を送ります。

無駄に見えるこの 3 回目に、仕組みの本質があります。

確かめたいのは、往復ではなく両方向

呼びかけと応答の 2 回で確認できるのは、呼びかけた側から見た往復だけです。「自分の声が届き、相手の声が返った」ことは分かります。

一方、応答した側は何も確認できていません。自分が返した応答が相手に届いたかどうかを知る手立てがないからです。届いていなければ、相手は待ち続けているかもしれません。そもそも最初の呼びかけ自体が、差出人を偽装した無関係な誰かのものだったかもしれません。

3 回目で、呼びかけた側が「あなたの応答を受け取りました」と伝えます。これで応答した側も、自分から相手への道が通じていることを確認できます。両方が、自分の送信が相手に届くと確認できて初めて、データを流し始められます。2 回では、片側にしか確証が生まれないのです。

ここで確かめているのは、相手が実在するかどうかでもあります。差出人の欄は簡単に偽装できますが、3 回目まで手順を踏めるのは、その番号に返事が実際に届く相手だけです。偽装した差出人を名乗った側には応答が返らないので、3 回目を返せません。

挨拶で交換しているもの

3 回のやりとりで伝えているのは、通じるかどうかだけではありません。もう 1 つ、これから使う通し番号の開始値を互いに教え合っています。

TCP は塊ごとに通し番号を振って順番を管理します。この番号は 0 から始まるわけではなく、接続ごとに違う値から始まります。同じ相手との古い接続の残りかすや、外から適当な番号を投げ込んでくる相手と混ざらないようにするためです。開始値がずれていると、並べ直しも送り直しも成り立ちません。だから 1 回目と 2 回目で、それぞれ自分の開始値を相手に渡します。3 回目は、その値を確かに受け取ったという返事も兼ねています。

番号は塊ごとに 1 ずつではなく、送ったバイト数だけ進みます。100 バイト送れば番号は 100 進みます。だから受け取り側は「何番まで受け取った」と返すだけで、どこまで届いたかを正確に伝えられます。途中で塊の切れ目が変わっても辻褄が合うのは、この数え方のおかげです。

挨拶にも代償がある

3 回のやりとりには、往復 1 回半ぶんの時間がかかります。国内でも数ミリ秒、海外なら 100 ミリ秒を超えることもあります。データを 1 バイトも送らないうちに、この時間が確定で乗ります。

だから短いやりとりを何度も繰り返すアプリは、挨拶の時間だけで遅くなります。逆に言えば、挨拶さえ終われば、同じ接続を使い続けるかぎり追加の代償はありません。接続を張りっぱなしにして使い回す、往復の回数そのものを減らす、といった工夫が Web の高速化で繰り返し出てくるのはこのためです。

もう 1 つの代償が、応答した側の待ち状態です。呼びかけを受けた側は、3 回目が来るまで「途中まで進んだ接続」を覚えておく必要があります。ここを突いて、呼びかけだけを大量に送りつけて 3 回目を返さず、相手の覚えておく領域を埋め尽くす攻撃が成立します。仕組みを理解していないと、なぜそれが効くのかも分かりません。

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • 輻輳制御と再送

    TCP が混雑時にスループットを調整する仕組みを理解します。

  • UDP の用途 (DNS / 動画 / ゲーム)

    TCP より UDP が選ばれる代表的な用途とその理由を学びます。

  • ポート番号と well-known port

    ポート番号の役割と、HTTP(80)/HTTPS(443) などの well-known port を整理します。

  • HTTP の基本

    HTTP リクエストとレスポンスの構造、ステータスコードを理解します。

分からないところは Tap (AI先生) に質問できます

24 時間いつでも、あなたのレベルに合わせて日本語で答えます。

復習ミニクイズ

TCP の 3-way ハンドシェイクで送信されるフラグの順序として正しいものはどれですか