過去20年間で、ワールドワイドウェブは劇的に進化しました。改善されたすべてのWebテクノロジーには、技術的な限界に達しつつある現在のもの(HTTP)よりも、通信とファイル転送のためのより優れた高速のソリューションとプロトコルが必要です。
HTTP / 2とは何ですか?
HTTP / 2はハイパーテキストの最新バージョンです トランスポートプロトコル(HTTP)– World WideWebで使用される基盤となるプロトコル 。最初は2015年2月に承認されました。これは、元のHTTPからほぼ20年後のことです。 HTTP / 2は読み込み時間を短縮し、サーバーとブラウザー間の通信を大幅に改善します。ブラウザーの大部分はすでにHTTP / 2を追加しており、ユーザーの観点からは多くのことを変更していません。それが、私たちの多くがまだそれを読んだり聞いたりしていない主な理由です。
HTTP / 2は何をしますか?
HTTPの後継として、 HTTP / 2は、HTTPのすべての特性の改善に重点を置いています 。古いプロトコルとの下位互換性を維持するために、HTTPの機能のほとんどを保持しています。ただし、いくつかの大幅な改善が導入されています。
HTTPまたはHTTP / 2の両方で以下を定義します。
- さまざまなコマンドに応答してWebブラウザとサーバーが実行する必要のあるアクション。
- 情報のすべてのビットがWebを介してあるコンピューターから別のコンピューターに転送される方法。
- メッセージの作成、フォーマット、および送信の方法。
言い換えれば、HTTPとHTTP / 2は、Webコンテンツがコンピューターに配信される方法の標準を設定しますが、HTTP / 2はすべてのものを前のバージョンよりも高速にしているという違いがあります。ここでは、HTTP / 2が何をするのかを詳しく見ることができます。
多重化ストリーム
1つのサーバーとクライアント間でHTTP / 2プロトコルを介して送信される一連の双方向のテキスト形式フレームは、「ストリーム」と呼ばれます。 HTTPは、一度にこれらの「ストリーム」の1つだけを送信できます。ストリームが送信された後、次のストリーム送信の間に時間遅延があります。
HTTP / 2は、「ストリーム」を1つずつ送信する際の問題を直接解決する新しいバイナリフレーミングレイヤーを確立します。 これにより、クライアントとサーバーはHTTP / 2ペイロードを小さく、独立した、管理しやすいインターリーブフレームシーケンスに分解できます。このすべての情報は、もう一方の端で受信されると再構成されます。このプロトコルにより、連続するストリーム間の遅延なしに、複数の同時に開いた独立した双方向シーケンスの交換が可能になります。
利点:
- 並列多重化された要求と応答は、互いにブロックしません。
- 単一のTCP接続により、複数のデータストリームを送信する場合でも、効果的なネットワークリソースの使用率を確保できます。
- Webパフォーマンスの高速化、待ち時間の短縮、検索エンジンの結果の向上。
- 実行中のネットワークおよびITリソースの設備投資と運用コストを削減しました。
HTTP / 2サーバープッシュとキャッシュプッシュ
この サーバーが追加のキャッシュ可能な情報をクライアントに送信できるようにする機能です 。その情報は要求されていませんが、将来の要求のために予想されます。クライアントが1つのリソースAを要求し、別のリソースBが要求されたリソースで参照されていることがわかっている場合、サーバーは別のクライアント要求を待つ代わりに、AとともにBをプッシュできます。次に、クライアントはプッシュされたリソースBを将来の使用のためにキャッシュに保存します。この機能により、要求と応答のラウンドトリッププロセス全体が節約され、ネットワークの遅延が減少します。 Googleは当初、SPDYプロトコルでサーバープッシュを導入しました。
HTTP / 2のもう1つの改善点は、キャッシュプッシュです。これにより、クライアントのキャッシュが事前に更新または無効化されます。これにより、サーバーは、クライアントが実際に必要としない可能性のあるプッシュ可能なリソースを特定できます。
利点:
- クライアントは、キャッシュされたリソースの効率的なリポジトリを維持するために、プッシュされたリソースを拒否できます(または、サーバープッシュを完全に無効にすることもできます)。
- クライアントは、同時に多重化されるプッシュストリームの数を制限できます。
- サーバーは、プッシュされたリソースに優先順位を付けることができます。これは、HTTP / 2とHTTPのパフォーマンスの違いの鍵です。
- サーバーは、同じTCP接続内で、プッシュされたリソースとクライアントの要求された情報を多重化できます。
- クライアントは、キャッシュされたリソースをさまざまなページで使用できます。
- クライアントは、プッシュされたリソースをキャッシュメモリに保存します。
バイナリプロトコル
HTTP / 2は、テキストプロトコルをバイナリプロトコルに変換する際の機能を大幅に改善しました 。 HTTPはテキストコマンドを処理して要求/応答サイクルを実行するために使用されていましたが、HTTP / 2はバイナリコマンドに依存しています。これにより、同じタスクを実行する時間が(1秒と0秒に)短縮されます。
HTTP / 2をサポートするブラウザは、ネットワーク経由で送信する前に、テキストコマンドをバイナリコードに変換します。ただし、バイナリフレーミングレイヤーは、HTTPサーバーおよびクライアントとの下位互換性がありません。
利点:
- HTTPのテキストの性質に関連するセキュリティ上の懸念を防止します(例:応答分割攻撃)。
- 圧縮、優先順位付け、多重化、TLSの効果的な処理、フロー制御などのHTTP / 2機能を有効にします。
- コマンドのコンパクトな表現により、実装と処理が容易になります。
- クライアントとサーバー間の堅牢で効果的なデータ処理。
- スループットの向上とネットワーク遅延の削減。
- HTTPと比較すると、エラーが発生する可能性が低くなります。
- 非常に効率的なネットワークリソースの利用。
- データ解析のオーバーヘッドが少ない。
- より軽いネットワークフットプリント。
ストリームの優先順位付け
HTTP / 2を使用すると、クライアントは特定のデータストリームに設定を提供できます。サーバーはこれらのクライアントの指示に従う必要はありませんが、このメカニズムにより、サーバーはユーザーの要件に基づいてネットワークリソースの割り当てを最適化できます。 。
ストリームの優先順位付けは、各ストリームに割り当てられた重みと依存関係で機能します。すべてのストリームは本質的に相互に依存しているという事実にもかかわらず、それらには1から256の間に割り当てられた重みがあります。ストリームの優先順位付けメカニズムは依然として議論のトピックです。ただし、ストリームの優先順位付けを、単一のTCP接続で複数のデータストリームを処理するHTTP / 2機能と組み合わせると、優先順位の異なるサーバー要求が同時に到着する可能性があります。
利点:
- ネットワーク遅延の懸念による悪影響の軽減。
- ユーザーエクスペリエンスとページ読み込み速度の向上。
- サーバーとクライアント間のデータ通信の最適化。
- 非常に効果的なネットワークリソースの使用率。
- プライマリコンテンツリクエストの配信時間の短縮。
ステートフルヘッダー圧縮
ユーザーがHTTPを使用してメディアリッチコンテンツのWebサイトを閲覧すると、クライアントは複数のほぼ同一のヘッダーフレームをプッシュします。これが当てはまるのは、各クライアント要求には、サーバーが要求された操作を実行するために必要な情報を含める必要があるためです。このプロセスは、待ち時間と不要なリソースの消費につながります。
HTTP / 2には、多数の冗長ヘッダーフレームを圧縮する機能が含まれています。ヘッダー圧縮への安全でシンプルなアプローチとして、HPACK仕様に依存しています 。クライアントとサーバーは、以前のクライアントサーバー要求で使用されたヘッダーのリストを維持します。これは、冗長ヘッダーフレームに関する懸念に直接対処します。
利点:
- 一般的に使用されるヘッダーと大きなヘッダーをエンコードします。これにより、ヘッダーフレーム全体を送信する必要がなくなります。各ストリームの個々のサイズは大幅に縮小します。
- 圧縮されたヘッダーを持つデータストリームを探索するCRIMEなどのセキュリティ攻撃を防止します。
- 多重化メカニズムの効率的な利用。
- 効率的なストリームの優先順位付け。
- リソースのオーバーヘッドが削減されました。
HTTP / 2の実際の利点
HTTP / 2は、テクノロジーの可能性を最大化することに重点を置いています 、将来のニーズと期待に応えるために。 HTTP / 2を使用することの実際の利点は次のとおりです。
WebパフォーマンスとモバイルWebパフォーマンス – HTTP / 2には、1つのクライアント/サーバー通信サイクルでより多くのデータを送受信する機能があります。モバイルデータネットワークやユーザーあたりの帯域幅が制限されているネットワークでインターネットサービスにアクセスする際の遅延を減らすのに適しています。
より安い高速インターネット – HTTP / 2は、データ通信の効率を高めます。これにより、インターネットプロバイダーは、高速インターネットの標準を維持しながら、全体的な費用を削減できます。
セキュリティ – HTTP / 2は、テキストベースのアプリケーション層プロトコルを標的とする脅威に対して脆弱ではありません。さらに、「隠すことによるセキュリティ」アプローチを使用して、クライアントとサーバー間の機密データ送信を保護します。
広大なリーチ – HTTP / 2の利点は、プロバイダーのインターネットの成果を低下させます。それは世界レベルでより広いインターネットカバレッジにつながるでしょう。
メディアが豊富なWebエクスペリエンス – HTTP / 2がワールドワイドウェブにもたらすテクノロジー機能と利点は、メディアが豊富なコンテンツをより速いページ読み込み速度で配信できるインフラストラクチャを提供します。
要約
HTTP / 2は比較的新しいプロトコルですが、そのサポートは継続的に拡大しています。現在、ほとんどのインターネットブラウザはHTTP / 2(Microsoft Edge、Google Chrome、Safari、Firefox、Chrome for Android)をサポートしています。多くのWebサーバーには、HTTP / 2ネイティブサポート(Apache HTTPサーバー、Tomcat、NGINX)が含まれています。間違いなく、HTTP / 2は将来のWWWプロトコルです。
読んだ5分