コース一覧
ネットワーク基礎:TCP/IP・HTTP・DNS・CDN
輻輳制御と再送

ネットワーク基礎: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

輻輳制御と再送

全員が全力で送ると、全員が損をする

回線には運べる量の上限があります。上限を超えた分は中継機が捨てます。捨てられた分は送り直されます。送り直しでさらに量が増え、もっと捨てられる。この悪循環に入ると、回線は埋まっているのに誰のデータも進まない状態になります。

インターネットは無数の通信が同じ道を共有しています。全員が自分の都合だけで全力を出せば、全員が損をする。この結末を避けるために、TCP は誰に言われるでもなく、自分から送る量を絞ります。

混雑は、届かなかったことでしか分からない

厄介なのは、混雑を知らせてくれる人がいないことです。中継機は「いま混んでいます」と教えてくれません。黙って捨てるだけです。

そこで TCP は逆から推測します。有線の回線でデータが勝手に壊れて消えることは、めったにありません。だから「返事が来ない」のは、混雑した中継機に捨てられたサインだ、とみなします。消えた気配を感じたら送る量を減らし、しばらく何も起きなければ少しずつ増やす。この上げ下げを延々と繰り返しています。

無線ではこの前提が崩れます。電波の乱れで消えただけなのに、TCP は混雑だと誤解して速度を落とします。Wi-Fi が不安定な場所で、回線が空いているのに遅い、という現象が起きるのはこのためです。

探りながら上げて、ぶつかったら下げる

送ってよい量は、返事を待たずに送り出せるバイト数として管理されます。動きは次のようになります。

  1. 最初はごく小さい量から始める。返事が返ってくるたびに増やすので、1 往復ごとにおよそ倍のペースで増えていく
  2. ある程度まで来たら、増やし方を倍から少しずつに切り替える。上限が近いので、ここから先は慎重に探る
  3. 消えた気配を検知したら、量を大きく減らして 2 の探り方に戻る

最初が慎重なのは、上限を知らないまま全力を出すと確実にぶつかるからです。それでいて倍々で増やすのは、慎重すぎると回線が空いているのに使いきれないからです。「知らない道をだんだん加速しながら走り、壁にぶつかったら下がってまた寄っていく」という動きだと思ってください。

この上げ下げを、同じ回線を使う全員が同時にやっています。誰かが増やせば誰かが押し出され、押し出された側が減らすとまた空きができる。中央で誰かが割り当てているわけではないのに、結果として全員がおおむね公平な取り分に落ち着きます。取り決めを守る実装しかいない、という前提の上に成り立っている均衡です。

時間切れを待たずに気づく方法がある

消えたことを知る一番素朴な方法は、返事が一定時間来ないのを待つことです。ただしこれは遅く、しかも量を大きく落としてしまいます。

そこで、もっと早く気づく手段が使われます。1 つだけ抜けた場合、受け取り側は後続が届くたびに「まだそこまでしか受け取れていません」と同じ返事を繰り返します。送り主はこの繰り返しを 3 回受け取った時点で、時間切れを待たずに送り直します。復帰が速く、量を落とす幅も小さくて済みます。1 つ落ちただけで速度が半分になる、という事態を避けるための工夫です。

この慎重な立ち上がりは、体感としても現れます。大きなファイルの転送が最初だけ遅く、途中から伸びるのはこのためです。逆に短い通信は、本気を出す前に終わってしまいます。小さなファイルを大量に送るより、まとめて 1 本で送るほうが速いことがあるのは、この立ち上がりの分を 1 回で済ませられるからです。

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

関連レッスン

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

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

  • ポート番号と well-known port

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

  • HTTP の基本

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

  • DNS とは

    人間が読める名前と IP を結びつける DNS の役割を理解します。

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

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

復習ミニクイズ

TCP の輻輳制御で、最初に送信ウィンドウが指数関数的に増えるフェーズはどれですか