コース一覧
ネットワーク基礎:TCP/IP・HTTP・DNS・CDN
WebSocket とリアルタイム通信

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

WebSocket とリアルタイム通信

3 秒ごとに「新着はありますか」と聞き続ける

チャットを作るとき、いちばん素直な作りは、一定間隔でサーバーに問い合わせることです。動きはしますが、無駄が目立ちます。

新着が無くても、ヘッダーだけで数百バイトのやりとりが発生します。100 人が 3 秒ごとに聞けば、毎秒 33 回のほぼ空振りが積み上がります。それでいて、届くのは最大 3 秒遅れです。間隔を詰めれば遅れは減りますが、無駄はそのぶん増えます。

問題は、クライアントから聞かないと始まらない、という前提のほうにあります。

1 回つないだら、切らずに使い回す

WebSocket は、最初だけ普通の HTTP でつなぎ、そこから通信の形を切り替えます。

プレーンテキスト

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade

サーバーが承諾すると 101 Switching Protocols を返し、以降この接続は HTTP をやめます。同じ 1 本のつながりの上で、どちらからでも好きなときにメッセージを送れる状態になります。

新着が出た瞬間にサーバーから押し出せるので、遅れが無くなります。1 通あたりに付く管理情報も数バイト程度で、聞き続けていたときの数百バイトとは比べものになりません。

なお、この切り替えを通してくれない経路があります。途中の装置が HTTP しか想定していないと、切り替えの依頼を落としたり、途中で接続を打ち切ったりします。暗号化して使う指定にしておくと、途中からは中身が見えないので余計な干渉を受けにくくなります。開発中は動いたのに社内ネットワークからだけつながらない、という報告が来たら、まずここを疑います。

何もしないでいると、いつの間にか切られている

つなぎっぱなしにすると、別の問題が出ます。途中の装置は、しばらく何も流れない接続を掃除します。数分沈黙していただけで切られることがあり、しかも切られたことにこちらは気づきません。

対策は 2 つ組み合わせます。1 つは、生存確認の小さなメッセージを定期的に往復させて、沈黙を作らないことです。もう 1 つは、切れる前提で再接続を書いておくことです。

再接続で気をつける点が 2 つあります。切れた瞬間に全員が一斉につなぎ直すとサーバーが落ちるので、待ち時間を 1 秒、2 秒、4 秒と伸ばしながら試します。そして、切れていた間のメッセージは届いていません。つなぎ直した後に、取りこぼした分を別途取り直す作りが要ります。

押し出すだけでよいなら、もっと軽い手がある

双方向が本当に必要かは、先に確認する価値があります。通知や進捗の表示のように、サーバーから送るだけでよい場面は多いからです。

その場合は Server-Sent Events という選択肢があります。普通の HTTP のレスポンスを閉じずに流し続けるだけの仕組みで、扱いは HTTP のままです。切れたときの再接続もブラウザ側が面倒を見ます。送る向きが片方だけなら、こちらのほうが持ち込みやすいです。

解説

現場の話

つなぎっぱなしということは、利用者の数だけ接続が居座るということです。何もしていない時間もメモリを占め続けるので、1 台あたり何本まで持てるかが上限になります。台数を増やす場合も、A さんが 1 台目、B さんが 2 台目につながっていると、そのままでは互いのメッセージが届きません。台の間でメッセージを配る仕組みを別に用意することになります。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • HTTPWeb の通信プロトコル、HTTPS は TLS で暗号化したもの
  • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
  • ブラウザユーザーから見たWebのクライアント
  • メモリプログラムとデータを一時保持する高速領域
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • gRPC と HTTP/2 利用

    Protocol Buffers と HTTP/2 を使う gRPC の特徴を学びます。

  • プロキシとリバースプロキシ

    フォワードプロキシとリバースプロキシの違い・役割を学びます。

  • ロードバランサ (L4 / L7)

    L4 と L7 ロードバランサの違いと使い分けを理解します。

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

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

復習ミニクイズ

WebSocket の接続開始時に使われる HTTP の仕組みはどれですか