HTTP/1.1・HTTP/2・HTTP/3
Web通信プロトコルHTTPの世代ごとの違いを整理します。順次処理から多重化、そしてUDPベースのQUICへと、速度と効率を高めてきた進化の歴史です。
- 1.HTTP/1.1 は 1接続で順番に処理し、先頭が詰まると後続も待つ(HoL ブロッキング)。
- 2.HTTP/2 は 1接続で複数リクエストを多重化し、ヘッダも圧縮して効率化。
- 3.HTTP/3 は QUIC(UDPベース)を採用し、TCPの行列詰まりを解消して接続確立も速い。
なぜ世代が分かれるのか
HTTPは「ブラウザ↔サーバの会話ルール」ですが、Webページが画像・CSS・JSなど大量の小さなファイルで構成されるようになり、いかに速く・効率よく運ぶかが課題になりました。各世代はこの「同時に・無駄なく運ぶ」をどう実現するかで進化しています。
HTTP/1.1:順番に処理
長く標準だった版です。1本のTCP接続でリクエストを1つずつ順番に処理します。
- 応答が返るまで次を送れない(または送っても順番に返す必要がある)
- 先頭のリクエストが重いと、後続が全部待たされる=HoL(Head-of-Line)ブロッキング
- ブラウザは苦肉の策として接続を6本ほど並列に張って凌いでいた
HTTP/2:多重化で並行処理
1本のTCP接続の中に複数のストリームを流し、リクエストを多重化できるようにしました。
- 複数リクエストを並行して送受信(接続を何本も張らなくてよい)
- ヘッダ圧縮(HPACK) で繰り返しの多いヘッダを軽量化
- サーバから先回りで送るサーバプッシュ(※現在は使われない方向)
HTTP/2はアプリ層の行列は解消しましたが、土台がTCPのため、パケットが1つ欠けるとTCPレベルで全ストリームが再送待ちになります。これがHTTP/3を生む動機になりました。
HTTP/3:QUIC(UDPベース)
土台のTCPをやめ、UDP上に作られた新しいトランスポート QUIC を採用しました。
- TCPのHoLブロッキングを根本解決: ストリームが独立し、1つの欠落が他を止めない
- 接続確立が速い: TCPのハンドシェイクとTLSのやり取りを束ね、往復回数を削減
- 回線の切替に強い: 接続をIPアドレスではなく識別子で追うため、Wi-Fi↔モバイルの切替でも継続しやすい
世代の比較
| 観点 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 土台 | TCP | TCP | QUIC(UDP) |
| 多重化 | なし(順次) | あり(1接続で並行) | あり(ストリーム独立) |
| HoL ブロッキング | アプリ層で発生 | TCP層で残る | 実質解消 |
| ヘッダ | そのまま(冗長) | HPACK で圧縮 | QPACK で圧縮 |
| 接続確立 | TCP + TLS で複数往復 | TCP + TLS で複数往復 | QUIC で往復を短縮 |
| 強み | 枯れて互換性が高い | TCP上での高速化 | 不安定回線・モバイルに強い |
実務での向き合い方
新しいほど無条件に速いわけではなく、通信の特性で効き方が変わります。多数の小ファイルを高遅延回線で取りに行く場面ほどHTTP/2・3の恩恵が大きく、安定した高速回線では差が小さいこともあります。多くのCDNやサーバは複数世代に対応し、クライアントと自動でネゴシエーションして最適な版を選ぶため、まずは有効化して実測するのが近道です。
# どのHTTPバージョンで応答したか確認
curl -sI --http3 https://example.com/ | head -n 1
curl -sI --http2 https://example.com/ | head -n 1
ネットワーク Article
HTTP/1.1・HTTP/2・HTTP/3を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
HTTP
比較で見る軸
難易度: intermediate / カテゴリ: ネットワーク / タグ数: 4
導入後に効く点
HTTP/2 は 1接続で複数リクエストを多重化し、ヘッダも圧縮して効率化。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- intermediate
- カテゴリ
- ネットワーク
- タグ数
- 4
判断チェックリスト
- 自社の用途が「HTTP / HTTP/2」に近いか確認する。
- 強みである「HTTP/1.1 は 1接続で順番に処理し、先頭が詰まると後続も待つ(HoL ブロッキング)。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。