【えいちてぃーてぃーぴーつー・えいちてぃーてぃーぴーすりー】

HTTP/2 / HTTP/3 とは?

💡 Web通信の「高速道路」をアップグレード
📌 このページのポイント
HTTP/1.1 vs HTTP/2 vs HTTP/3 HTTP/1.1 1リクエスト1接続 リクエスト1 待機... リクエスト2 待機... リクエスト3 TCP HoLブロッキング 順番待ちで遅い HTTP/2 多重化(TCP) 1本のTCP接続 Req 1 Req 2 Req 3 Req 4 Req 5 同時並行で送受信 ヘッダ圧縮(HPACK) TCP + TLS TCP層のHoL残存 高速だがTCP制約あり HTTP/3 QUIC(UDP)ベース QUICプロトコル S1 S2 S3 独立ストリーム 1つが遅れても他は進む 0-RTTハンドシェイク UDP + QUIC HoLブロッキング解消 最速・モバイルに強い
HTTP/1.1, HTTP/2, HTTP/3 の比較イメージ
ひよこ ひよこ

HTTP/1.1の何が問題だったの?

ペンギン先生 ペンギン先生

HTTP/1.1は1つのTCP接続で1つのリクエストしか同時処理できない。画像を10枚読み込むなら10本の接続が必要。ブラウザは通常6本の同時接続しか張れないから、7枚目以降は待ちが発生する。これがHead-of-Line Blocking。HTTP/2は1本の接続で複数リクエストを多重化するから待ちが解消されるんだよ

ひよこ ひよこ

HTTP/2でWeb高速化するために何かする必要ある?

ペンギン先生 ペンギン先生

サーバー側でHTTP/2を有効にするだけで恩恵を受けられるよ。ただしHTTP/1.1時代の最適化テクニック(ドメインシャーディング、CSSスプライト、ファイル結合)はHTTP/2では不要どころか逆効果になることがある。多重化のおかげで小さいファイルを多数リクエストしても問題ないからね

ひよこ ひよこ

おもしろい!HTTP/3QUICって何がすごい?

ペンギン先生 ペンギン先生

TCPは接続確立に1.5 RTT(往復時間)、TLSハンドシェイクにさらに1〜2 RTT。合計3 RTT以上かかる。QUICUDPベースで接続確立と暗号化を同時に行い、0〜1 RTTで接続完了。モバイル環境でWi-Fi→4G切り替え時もコネクション移行でシームレスに通信継続できるのもQUICの強みだよ

ひよこ ひよこ

HTTP/3への移行は進んでる?

ペンギン先生 ペンギン先生

2024年時点でGoogleの全サービス、CloudflareCDN、Meta(Facebook/Instagram)がHTTP/3対応済み。全Webトラフィックの30%以上がHTTP/3という推計もある。自分のサイトで使うならCloudflare CDNを噛ませるのが最も簡単。NGINX やApacheも対応が進んでいるけど設定はやや複雑だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
HTTP/2HTTP/3」って出てきたら「Web通信を高速化するプロトコルの進化版」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hypertext Transfer Protocol version 2/3」 = ハイパーテキスト転送プロトコル バージョン2/3
💬 HTTP/2はGoogleのSPDYが元、HTTP/3はGoogleのQUICが元。どちらもGoogle発だよ
← 用語集にもどる