ネットワーキング
 Computer >> コンピューター >  >> ネットワーキング >> ネットワーキング

HTTP/2とは何か?仕組みと主な機能・メリットを徹底解説

この20年間で、ワールドワイドウェブ(WWW)は目覚ましい進化を遂げてきました。改良され続けるWeb技術には、既存の通信・ファイル転送技術であるHTTPよりも、より高速で優れたソリューションやプロトコルが求められています。従来のHTTPは、すでに技術的な限界に近づきつつあるのです。

HTTP/2とは何か?

HTTP/2とは、ワールドワイドウェブで使われる基盤プロトコル「HTTP(Hypertext Transfer Protocol)」の最新バージョンです。2015年2月に正式承認されました。これは、元祖HTTPの登場から実に約20年後のことです。

HTTP/2はページの読み込み時間を短縮し、サーバーとブラウザ間の通信に大幅な改善をもたらします。主要なブラウザの多くはすでにHTTP/2に対応しており、ユーザーの視点では大きな変化は感じられません。それが、多くの方がHTTP/2について聞いたことがない、または読んだことがない主な理由といえるでしょう。

HTTP/2は何をするのか?

HTTPの後継として、HTTP/2はHTTPのあらゆる特性の改善に焦点を当てています。旧プロトコルとの後方互換性を維持するため、HTTPの機能の大部分を引き継いでいますが、その一方で劇的な改良も数多く導入されています。

HTTPおよびHTTP/2は、以下の事項を定義しています。

  • さまざまなコマンドに対して、Webブラウザとサーバーがどのような動作を行うべきか
  • 情報の1ビット1ビットが、Webを介してコンピュータ間でどのように転送されるか
  • メッセージがどのように作成・フォーマット・送信されるか

言い換えれば、HTTPとHTTP/2は「Webコンテンツがあなたのコンピュータへどのように届けられるか」の標準を定めるものであり、HTTP/2はそのすべてを前世代より高速に実現するものです。以下、HTTP/2が具体的に何をするのかを詳しく見ていきましょう。

多重化ストリーム(Multiplexed Streams)

HTTP/2プロトコルを通じて、1台のサーバーとクライアントの間で双方向に送受信されるテキスト形式フレームの連なりを「ストリーム」と呼びます。従来のHTTPでは、これらのストリームを一度に1つしか送信できず、次のストリームを送るまでにタイムラグが発生していました。

HTTP/2は新しいバイナリフレーミング層を確立し、ストリームを1つずつ順番に送信するという問題を直接的に解決しました。これにより、クライアントとサーバーはHTTP/2のペイロードを、小さく独立した扱いやすいインターリーブ(交互配置)型のフレーム列に分解できます。受信側では、すべての情報が再構築されます。このプロトコルにより、複数の同時に開かれた独立した双方向シーケンスを、 successiveなストリーム間の遅延なしに交換できるようになりました。

主なメリット:

  • 並列に多重化されたリクエストとレスポンスが互いにブロックし合わない
  • 単一のTCP接続でも、複数のデータストリームを効率的に伝送でき、ネットワークリソースを有効活用できる
  • Webパフォーマンスの向上、レイテンシの低減、検索エンジン結果の改善
  • ネットワークおよびITリソース運用におけるCapEx(設備投資)とOpEx(運用費)の削減

HTTP/2サーバープッシュとキャッシュプッシュ

サーバープッシュとは、サーバーがクライアントに対して追加のキャッシュ可能な情報を送信できる機能です。この情報は明示的に要求されたものではなく、将来のリクエストを見越して送られるものです。例えば、クライアントがリソースAをリクエストし、そのAが別のリソースBを参照していることが分かっている場合、サーバーはBをAと一緒にプッシュできます。クライアントはプッシュされたリソースBをキャッシュに保存し、将来の利用に備えます。この機能により、リクエスト・レスポンスの一往復プロセスが丸ごと省略され、ネットワークレイテンシが削減されます。なお、サーバープッシュはもともとGoogleがSPDYプロトコルで導入した仕組みです。

HTTP/2のもう一つの改良点がキャッシュプッシュです。これはクライアントのキャッシュを能動的に更新または無効化するもので、サーバーがクライアントが実際には望んでいないプッシュ候補リソースを特定できるようにします。

主なメリット:

  • クライアントはプッシュされたリソースを拒否でき、効率的なキャッシュリポジトリを維持できる(サーバープッシュ自体を無効化することも可能)
  • クライアントは同時に多重化されるプッシュストリームの数を制限できる
  • サーバーはプッシュリソースに優先順位を付けられる。これはHTTP/2とHTTPのパフォーマンス差を生む鍵となる
  • サーバーは同じTCP接続内で、プッシュリソースをクライアントの要求情報と共に多重化できる
  • クライアントはキャッシュ済みリソースを異なるページ間で再利用できる
  • クライアントはプッシュされたリソースをキャッシュメモリに保存できる

バイナリプロトコル

HTTP/2は、テキストプロトコルをバイナリプロトコルへ変換する能力において大幅に強化されています。従来のHTTPはテキストコマンドを処理してリクエスト・レスポンスサイクルを実行していましたが、HTTP/2はバイナリコマンドに依存します。これにより、同じタスクの実行時間が(0と1の処理として)大幅に短縮されます。

HTTP/2対応ブラウザは、ネットワーク上に送信する前にテキストコマンドをバイナリコードへ変換します。ただし、このバイナリフレーミング層は、HTTPのサーバーやクライアントとの後方互換性はありません。

主なメリット:

  • HTTPのテキストベースの性質に起因するセキュリティ懸念(レスポンス分割攻撃など)の防止
  • 圧縮、優先順位付け、多重化、TLSの効果的な取り扱い、フロー制御といったHTTP/2の機能の実現
  • コマンドのコンパクトな表現による、容易な実装と処理
  • クライアントとサーバー間の堅牢で効率的なデータ処理
  • スループットの向上とネットワークレイテンシの低減
  • HTTPと比較してエラー発生の可能性が低い
  • 高度に効率的なネットワークリソースの利用
  • データ解析時のオーバーヘッドの低減
  • 軽量なネットワークフットプリント

ストリーム優先順位付け(Stream Prioritization)

HTTP/2では、クライアントが特定のデータストリームに対して優先度の設定を指定できます。サーバーがこれらの指示に必ず従う義務はないものの、この仕組みにより、サーバーはユーザーの要件に基づいてネットワークリソースの割り当てを最適化できます。

ストリーム優先順位付けは、各ストリームに割り当てられた「重み(Weight)」と「依存関係(Dependencies)」によって機能します。すべてのストリームは本質的に相互に依存関係を持ちますが、1〜256の範囲で重みが割り当てられます。ストリーム優先順位付けのメカニズムは依然として議論の対象ですが、単一のTCP接続で複数のデータストリームを処理するHTTP/2の能力と組み合わせると、異なる優先度を持つサーバーリクエストがほぼ同時に到着する可能性があります。

主なメリット:

  • ネットワークレイテンシによる悪影響の低減
  • ユーザー体験とページ読み込み速度の向上
  • サーバーとクライアント間のデータ通信の最適化
  • 非常に効率的なネットワークリソースの利用
  • 主要コンテンツへのリクエストの配信時間短縮

ステートフルヘッダー圧縮(HPACK)

ユーザーがHTTPでメディアが豊富なサイトを閲覧する際、クライアントはほぼ同一のヘッダーフレームを多数送信します。これは、各クライアントリクエストに、サーバーが要求された操作を実行するために必要な情報をできるだけ多く含めなければならないためです。このプロセスはレイテンシと不要なリソース消費につながります。

HTTP/2には、大量の冗長なヘッダーフレームを圧縮する機能が備わっています。安全かつシンプルなヘッダー圧縮手法として、HPACK仕様に依拠しています。クライアントとサーバーは、過去のクライアント・サーバー間リクエストで使用されたヘッダーのリストを保持します。これにより、冗長なヘッダーフレームの問題に直接対処できます。

主なメリット:

  • よく使われるヘッダーや大きなヘッダーをエンコードし、ヘッダーフレーム全体を送信する必要性を排除。各ストリームの個別サイズが大幅に縮小される
  • 圧縮されたヘッダーを持つデータストリームを狙うCRIME攻撃などのセキュリティ攻撃の防止
  • 多重化メカニズムの効率的な活用
  • 効率的なストリーム優先順位付け
  • リソースオーバーヘッドの削減

HTTP/2の実際のメリット

HTTP/2は技術の潜在能力を最大限に引き出すことに焦点を当てており、将来のニーズと期待に応えることを目指しています。ここでは、HTTP/2を使用することの実際的なメリットを紹介します。

WebパフォーマンスとモバイルWebパフォーマンス — HTTP/2は、1回のクライアント・サーバー通信サイクルでより多くのデータを送受信できます。モバイルデータネットワークや、ユーザーあたりの帯域幅が限られたネットワークでのインターネットサービスアクセス時のレイテンシ低減に効果的です。

より安価な高速インターネット — HTTP/2はデータ通信の効率を高めます。これにより、インターネットプロバイダーは高速インターネットの水準を維持しながら、総コストを削減できます。

セキュリティ — HTTP/2は、テキストベースのアプリケーション層プロトコルを標的とする脅威に対して脆弱ではありません。さらに、「Security by Obscurity」のアプローチを用いて、クライアントとサーバー間の機密データ伝送を保護します。

広範なリーチ — HTTP/2の利点により、プロバイダーのインターネット関連コストが削減されます。それは世界的な規模で、より広範なインターネットカバレッジにつながるでしょう。

メディアリッチなWeb体験 — HTTP/2がWWWにもたらす技術的特徴と利点は、より高速なページ読み込み速度でメディアリッチなコンテンツを配信できるインフラを提供します。

まとめ

HTTP/2は比較的新しいプロトコルですが、対応状況は継続的に拡大しています。現在では、Microsoft Edge、Google Chrome、Safari、Firefox、Android版Chromeなど、ほとんどのインターネットブラウザがHTTP/2をサポートしています。また、Apache HTTP Server、Tomcat、NGINXなど、多くのWebサーバーもHTTP/2ネイティブサポートを搭載しています。疑いなく、HTTP/2は未来のWWWプロトコルだと言えるでしょう。

  1. NVIDIA仮想オーディオ(Virtual Audio)とは?その役割とアンインストールしてよいか徹底解説

    最近、Windows環境におけるNVIDIA Virtual Audio(NVIDIA仮想オーディオ)とは何なのか、何のために存在するのかという質問が数多く寄せられています。このNVIDIAのコンポーネントは、NVIDIA製グラフィックカードのドライバーだけでなく、ユーザーがインストールする他のNVIDIA製品やソフトウェアにも同梱されています。この再生デバイスはデバイスマネージャーにも登録されており、「サウンド、ビデオ、およびゲームコントローラー」関連のカテゴリ内にドライバーとして表示されます。本記事では、このモジュールが何者で、どのような役割を担っているのかを詳しく解説し、最後にPCからア

  2. runtimebroker.exeとは?Windowsでの役割とCPU・メモリ使用量が高くなる問題の対処法

    Windowsを長年使用していて、タスクマネージャーを開くことがある方なら、「runtimebroker.exe」というプロセスを目にしたことがあるかもしれません。このサービスはCPUサイクルやメモリを使用しますが、ユーザーの操作を必要とせずバックグラウンドで静かに動作しているため、少し謎めいた存在に感じられるでしょう。 では、runtimebroker.exeとは正確には何であり、Windows OSの中でどのような役割を果たしているのでしょうか?心配する必要はあるのでしょうか?詳しく見ていきましょう! runtimebroker.exeとは何か? runtimebroker.exeは、W