著者は、 Society of Women Engineers を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

ハイパーテキスト転送プロトコル(HTTP)は、1989年の発明以来、ワールドワイドウェブ上での通信の事実上の標準となっているアプリケーションプロトコルです。 1997年のHTTP/1.1のリリースから最近まで、プロトコルの改訂はほとんどありませんでした。 しかし、2015年に、HTTP / 2と呼ばれる再考されたバージョンが使用されました。これは、特にモバイルプラットフォームやサーバーを集中的に使用するグラフィックスやビデオを処理する場合に、遅延を減らすためのいくつかの方法を提供しました。 その後、HTTP / 2の人気はますます高まっており、世界のすべてのWebサイトの約3分の1がHTTP/2をサポートしているとの推定もあります。 この変化する状況において、Web開発者は、HTTP/1.1とHTTP/2の技術的な違いを理解することで利益を得ることができ、進化するベストプラクティスについて情報に基づいた効率的な決定を下すことができます。

この記事を読むと、HTTP/1.1とHTTP/2の主な違いを理解し、より効率的なWebプロトコルを実現するためにHTTP/2が採用した技術的な変更に集中できます。

バックグラウンド

HTTP/2がHTTP/1.1に加えた特定の変更をコンテキスト化するために、まず、それぞれの歴史的な発展と基本的な動作を高レベルで見てみましょう。

HTTP / 1.1

HTTPは、ワールドワイドウェブの通信標準として1989年にティモシーバーナーズリーによって開発された、クライアントコンピューターとローカルまたはリモートのウェブサーバーとの間で情報を交換するトップレベルのアプリケーションプロトコルです。 このプロセスでは、クライアントはGETPOSTなどのメソッドを呼び出して、テキストベースのリクエストをサーバーに送信します。 それに応じて、サーバーはHTMLページなどのリソースをクライアントに送り返します。

たとえば、ドメインwww.example.comのWebサイトにアクセスしているとします。 このURLに移動すると、コンピューターのWebブラウザーは、次のようなテキストベースのメッセージの形式でHTTP要求を送信します。

GET /index.html HTTP/1.1
Host: www.example.com

この要求は、GETメソッドを使用します。このメソッドは、Host:の後にリストされているホストサーバーからデータを要求します。 この要求に応答して、example.com Webサーバーは、HTMLで要求される画像、スタイルシート、またはその他のリソースに加えて、要求しているクライアントにHTMLページを返します。 データの最初の呼び出しですべてのリソースがクライアントに返されるわけではないことに注意してください。 Webブラウザーが、画面にHTMLページのコンテンツをレンダリングするために必要なすべてのリソースを受け取るまで、要求と応答はサーバーとクライアントの間を行き来します。

この要求と応答の交換は、転送層(通常は伝送制御プロトコル(TCP)を使用)の上にあるインターネットプロトコルスタックの単一のアプリケーション層と考えることができます。 )およびネットワーク層(インターネットプロトコルまたはIPを使用):

Internet Protocol Stack

このスタックの下位レベルについては多くのことを議論する必要がありますが、HTTP / 2の高レベルの理解を得るためには、この抽象化レイヤーモデルとHTTPがその中に含まれる場所を知る必要があるだけです。

このHTTP/1.1の基本的な概要がわからなくなったので、HTTP/2の初期の開発について詳しく説明します。

HTTP / 2

HTTP / 2はSPDYプロトコルとして始まり、圧縮、多重化、優先順位付けなどの手法を使用してWebページの読み込み待ち時間を短縮することを目的として主にGoogleで開発されました。 このプロトコルは、 IETF(インターネット技術特別調査委員会)のハイパーテキスト転送プロトコルワーキンググループhttpbisが標準をまとめたときに、HTTP / 2のテンプレートとして機能し、2015年5月にHTTP/2が公開されました。 当初から、Chrome、Opera、Internet Explorer、Safariなど、多くのブラウザがこの標準化の取り組みをサポートしていました。 このブラウザのサポートもあって、2015年以降、プロトコルの採用率はかなり高く、特に新しいサイトでは高い割合で採用されています。

技術的な観点から、HTTP/1.1とHTTP/2を区別する最も重要な機能の1つは、インターネットプロトコルスタックのアプリケーション層の一部と考えることができるバイナリフレーミング層です。 すべての要求と応答をプレーンテキスト形式で保持するHTTP/1.1とは対照的に、HTTP / 2は、動詞、メソッド、ヘッダーなどのHTTPセマンティクスを維持しながら、バイナリフレーミングレイヤーを使用してすべてのメッセージをバイナリ形式でカプセル化します。 アプリケーションレベルのAPIは、従来のHTTP形式でメッセージを作成しますが、基盤となるレイヤーはこれらのメッセージをバイナリに変換します。 これにより、HTTP / 2より前に作成されたWebアプリケーションが、新しいプロトコルと対話するときに通常どおり機能し続けることができます。

メッセージをバイナリに変換することで、HTTP / 2は、HTTP / 1.1では利用できないデータ配信への新しいアプローチを試すことができます。これは、2つのプロトコルの実際的な違いの根本にある対照です。 次のセクションでは、HTTP / 1.1の配信モデルを見てから、HTTP/2によってどのような新しいモデルが可能になるかを見ていきます。

配信モデル

前のセクションで説明したように、HTTP/1.1とHTTP/2はセマンティクスを共有し、両方のプロトコルでサーバーとクライアント間を移動する要求と応答が、[X288X ]