HTTP / 2プロトコル

HTTP / 2プロトコルがどのように機能するかの詳細な説明

私は読むことをお勧めしますHTTPチュートリアル最初

HTTP / 2は、HTTPプロトコルの現在のバージョンです。 2015年にIETF(Internet Engineering Task Force)委員会によってリリースされましたが、その独自の機能により、現在広く採用されています。

HTTP / 2は、当時利用可能だったHTTPの最後のバージョンであるHTTP /1.1よりもはるかにパフォーマンスが高くなっています。

HTTP / 2によって提供されるスピードバンプは非常に魅力的だったため、すぐに採用されました-Webサーバーを簡単に変更するだけで(HTTP / 2はHTTP / 1.1と100%下位互換性があるため)、WebサイトとWebアプリが機能するようになりました自動的にはるかに高速になります。これは、ユーザーにとってもSEOの目的にも役立ちます(速度はランキングの重要な要素であるため)。

HTTP / 2はどのようにしてHTTP / 1.1よりもはるかに高速になりますか?その理由はたくさんありますが、すべて以前のバージョンの非効率性を減らし、ブラウザーがリソースをより迅速に提供できるようにする機能を導入することを目的としています。

新しいバージョンのプロトコルの主な機能は次のとおりです。

  • 要求と応答の多重化
  • HTTPヘッダーの効率的な圧縮
  • サーバープッシュ
  • バイナリ通信

多重化

HTTP / 2以前は、TCP接続ごとに一度に1つの応答しか提供できませんでした。

TCPは、その上にHTTPが構築される基盤となるプロトコルです。 TCPはトランスポート層にとどまり、HTTPはアプリケーションレベルにとどまります。

HTTP / 2は、単一のTCP接続上で要求/応答の多重化を有効にし、サーバーが同じ接続で複数の要求を処理できるようにして、通信を大幅に高速化します。

これは、アプリケーションにとって大きなメリットとなる単一の変更であり、画像スプライト(複数の画像を1つの画像に結合するために使用され、特別なCSS手法を使用して「逆多重化」される)など、いくつかの最適化手法が廃止されます。 )およびドメインシャーディング、同じドメインへの同時接続数のブラウザ制限を防ぐために使用される別のハック。

ヘッダーの圧縮

Cookieやその他のヘッダー値の通常の使用を考慮すると、ページおよびリソースのHTTPヘッダーは非常に大きくなる可能性があります。圧縮により、HTTPのフットプリントが軽くなり、クライアントとサーバー間で交換されるデータの量が削減されます。

サーバープッシュ

サーバープッシュは、単一のリクエストに対して複数の応答を送信できるようにする機能です。サーバーは、リソースを要求するときにクライアントが他の補完的なリソース(CSS、JS、ページにリンクされた画像など)を要求することを知っているため、サーバーはそれらをすぐに送信することを決定できます。

HTMLを送信し、ブラウザーがHTMLを解析し、他のリクエストを実行してアセットを取得するのを待つ代わりに、サーバーはそれらを完全にプッシュできます。

サーバーは、将来のリクエストで必要になる可能性のあるリソースを送信することを決定し、次のページの読み込みを事前に最適化して、クライアントキャッシュに配置することもできます。

サーバープッシュにも独自の欠点があることに注意してください。たとえば、クライアントに送信する必要のないデータが多すぎる(キャッシュとしてクライアントですでに利用可能になっている可能性がある)リスクがあるため、注意して使用してください。

バイナリ通信

HTTP /1.1はテキストベースの通信を使用しました。 HTTP / 2はバイナリ通信を使用します。これには、解析の効率が高く、エラーが発生しにくく、コンパクトであるなど、いくつかの利点があります。

将来の進化は何ですか?

HTTP/3開発中であり、から適応されますHTTP-over-QUIC、実験プロジェクト。

QUICは、トランスポート層で(TCPではなく)UDPに基づくプロトコルです。つまり、HTTP / 3は、HTTP / 2やHTTP / 1.xとはまったく異なる技術スタックに基づいています。


その他のネットワークチュートリアル: