learning center banner

HTTP/2とは何ですか?

HTTP/2が解決する問題とその利点、HTTP/3とHTTP/2の違い

HTTP/2(元々はHTTP 2.0と呼ばれていました)は、World Wide Webで使用されるハイパーテキスト転送プロトコルの第二版です。これは主にSPDYプロトコルに基づいており、HTTPヘッダーのデータ圧縮、データ送信の多重化、サーバープッシュなどの手段を実装して、ネットワークの遅延を減らし、クライアントのページ読み込み速度を向上させます。HTTP/2はHTTPのアプリケーションセマンティクスを変更せず、HTTPリクエストメソッド、ステータスコード、およびヘッダーフィールドを引き続き利用します。主にHTTPのメッセージ送信フォーマットを変更し、バイナリフレーミングの導入を通じて性能を向上させます。

HTTP/2はどのような問題を解決しますか?

HTTPは最も広く使用されているインターネットアプリケーションプロトコルです。HTTPプロトコルの初期バージョンはシンプルでした:HTTP/0.9は、1行のプロトコルのみでWorld Wide Webを開始しました;HTTP/1.0は、人気のあるHTTP/0.9を拡張した公式仕様でした;HTTP/1.1では、IETFが最初の公式標準を発表しました。初期の段階では、シンプルさはアプリケーションのパフォーマンスのコストとなりました:HTTP/1.1は、同時性を達成し遅延を減らすために複数の接続を使用する必要がありました;HTTP/1.1はリクエストおよびレスポンスのヘッダーを圧縮せず、無駄なネットワークトラフィックを引き起こしました;HTTP/1.1は効果的なリソースの優先順位付けをサポートせず、基盤となるTCP接続の低い利用率を招きました。

ネットワークアプリケーションが人々の日常生活に不可欠になってきたため、その範囲、複雑さ、および重要性は拡大し続けています。HTTPプロトコルの問題に対処するために、HTTP/2が導入されました。HTTP/2はHTTPのアプリケーションセマンティクスを変更せず、HTTPのリクエストメソッド、ステータスコード、およびヘッダーフィールドを引き続き使用します。主にHTTPのメッセージ送信フォーマットを変更し、サーバープッシュの導入などを通じてネットワークの遅延を削減し、クライアントのページ読み込み速度を向上させます。

HTTP/2とHTTP/1.1の違い

HTTP/2とHTTP/1.1は、ウェブページや他のリソースをネットワーク経由で送信するために使用されるHTTP(ハイパーテキスト転送プロトコル)の異なるバージョンです。両者にはいくつかの重要な違いがあります:

  1. バイナリプロトコル:HTTP/2はバイナリプロトコルを使用し、HTTP/1.1はテキストベースのプロトコルを使用しています。バイナリプロトコルは解析が容易で、より効率的で、エラーが発生しにくいです。
  2. 多重化:HTTP/2は多重化をサポートしており、これにより複数のリクエストとレスポンスを単一のTCP接続で同時に送受信できます。これにより、遅延が減少し、リソースの利用効率が向上します。一方、HTTP/1.1は、同様の機能を実現するために複数のTCP接続を使用しますが、効率は劣ります。
  3. ヘッダー圧縮:HTTP/2はHPACK圧縮アルゴリズムを用いてHTTPヘッダー情報を圧縮し、送信データのサイズを減少させます。これにより、特に低帯域幅環境でのパフォーマンスが向上します。HTTP/1.1はヘッダー圧縮をサポートしていません。
  4. サーバープッシュ:HTTP/2はサーバープッシュをサポートしており、サーバーがクライアントからリクエストされる前にリソースを積極的に送信できます。これにより、往復時間が短縮され、パフォーマンスが向上します。HTTP/1.1はこの機能をサポートしていません。
  5. ストリームの優先順位付け:HTTP/2は異なるリクエストの優先順位を設定でき、より重要なリソースを迅速に送信できます。HTTP/1.1にはこの能力がありません。

HTTP/2はHTTP/1.1に比べてパフォーマンス、効率、および機能性において大幅な改善を提供し、現代のWebアプリケーションにとってより良い選択肢となっています。ただし、一部の古いクライアントやサーバーはまだHTTP/1.1のみをサポートしている場合があります。実際には、最大のパフォーマンス利益と将来の互換性を確保するために、サーバーが両方のプロトコルをサポートしていることを確認するのが最善です。

HTTP/2とHTTP/3の違い

HTTP/3、またQUIC(Quick UDP Internet Connections)とも呼ばれる、はHTTPの最新バージョンであり、HTTP/2に比べて多くの利点を提供します:

  1. 遅延の削減:HTTP/3はQUICを使用し、UDP経由で動作するため、接続確立時間と全体的な遅延が減少します。
  2. 改良された混雑制御:QUICは改良された混雑制御メカニズムを含んでおり、パケット損失や高遅延の状況下でのパフォーマンスが向上します。
  3. 多重化:HTTP/3は、ヘッドオブラインブロッキングの問題なしに、単一の接続で複数のストリームを効率的に送信できます。
  4. セキュリティ:QUICは組み込みの暗号化を含んでおり、HTTP/2のTLSのオプション使用よりも優れたトランスポート層でのセキュリティを提供します。
  5. より良いエラー訂正:QUICは改良されたエラー訂正メカニズムを含んでおり、パケット損失や再送信の影響を軽減するのに役立ちます。

これらの利点により、HTTP/3はその前任者であるHTTP/2に比べてウェブのパフォーマンスとセキュリティを向上させる魅力的なオプションとなります。

curlでのHTTP/2

curlコマンドを使用してHTTP/2リクエストを行うことができます。これを行うには、curlのバージョンがHTTP/2をサポートしていることを確認する必要があります。これを確認するには、次のコマンドを実行します:

curl --version

そして、機能リストにHTTP2が含まれているか確認します。もしバージョンがHTTP/2をサポートしている場合、次のように 

-http2

 フラグを使用してHTTP/2を有効にできます:

curl -v --http2 https://example.com

結論

テンセントクラウドのEdgeOne サービスは、HTTP/2やHTTP/3などの最新のプロトコルに対する広範なサポートを提供しています。以下は、それぞれのサポート内容の概要です:

  1. EdgeOneはHTTP/2プロトコルをサポートしており、これにより以前のHTTP/1.xプロトコルに比べて大幅なパフォーマンス向上を実現します。前述のように、これにはバイナリフレーミング、多重化、サーバープッシュ、ヘッダー圧縮、ストリームの優先順位付けによる利点が含まれます。その結果、特に複雑でリソース集約型のウェブサイトにおいて、サイトの速度と信頼性が向上します。
  2. EdgeOneはHTTP/3(QUICリクエストをサポートしており、サイトリクエストをさらに加速し、データ転送の効率とセキュリティを向上させます。HTTP/3はTCPの代わりにQUICをトランスポートプロトコルとして使用し、往復時間を減少させ、ウェブコンテンツの配信を迅速化します。