HTTP/1.1・HTTP/2・HTTP/3の違い 完全ガイド

Webページを表示するたびに使われているHTTPというプロトコルは、これまでに大きく3段階の進化を遂げてきました。

HTTP/1.1は接続を使い回せるようになった

それ以前は1リクエストごとに新しいTCP接続を張っていましたが、HTTP/1.1では1つの接続で複数のリクエストを続けて送れる「持続的接続(Keep-Alive)」が標準になりました。

それでも1つの接続では順番待ちが発生する

1本の接続内ではリクエストが基本的に順番に処理されるため、ブラウザは1つのドメインに対して同時に複数の接続(一般的に6本程度)を開いて並列に読み込む工夫をしていました。

HTTP/2は1本の接続の中で多重化を実現

2015年に登場したHTTP/2では、リクエストとレスポンスをバイナリの「フレーム」に分割し、1本のTCP接続の中で複数のやり取りを同時に処理できるようになりました。

ヘッダー圧縮などの効率化機能も追加

HPACKと呼ばれるヘッダー圧縮技術により、リクエストのたびに繰り返し送られる冗長なヘッダー情報の通信量を削減しています。

HTTP/2にも残っていた弱点

土台となるTCP自体は1本のパケットの順番を守る性質があるため、途中でパケットが1つ失われるとその再送を待つ間、同じ接続内の他のやり取りまで止まってしまう問題が残っていました。

HTTP/3はQUICという新しい土台に切り替えた

2022年に標準化されたHTTP/3は、TCPの代わりにUDPをベースにしたQUICという新しいプロトコルを採用し、パケットが1つ失われても、影響がそのストリームだけにとどまるよう設計されています。

接続確立や暗号化の面でも有利

QUICは暗号化(TLS)を標準で組み込んでおり、再接続時により少ない往復回数で通信を始められる仕組みも備えているため、特にモバイル回線で効果を発揮しやすいとされています。

進化のタイミングにはそれぞれ理由がある

HTTP/1.1は接続の使い回しという当時の課題に対応し、HTTP/2はページを構成するリソースが数十個に増えた時代の接続オーバーヘッドに対応し、HTTP/3はモバイル回線でパケットロスが起きやすいという課題に対応する形で、それぞれ登場しています。

利用者が意識して切り替える必要はほとんどない

多くのブラウザとサーバーは、接続を確立する際に利用できる最新のバージョンを自動的にやり取りして決めるため、サイトによってHTTP/2とHTTP/3が混在していても、利用者側で特別な設定をする必要はほとんどありません。

よくある質問

HTTP/2やHTTP/3を使うために何か設定が必要ですか?

基本的に不要です。ブラウザとサーバーが接続時に自動的に対応バージョンをすり合わせ、対応していない場合は古いバージョンに自動的に切り替わります。

HTTP/3は常にHTTP/2より速いのですか?

特に不安定な回線やモバイル通信では効果が大きいとされていますが、安定した高速な有線接続ではHTTP/2のTCP起因の遅延が発生しにくいため、体感差が小さいこともあります。