HTTP 2.0

HTTP 2.0

HTTP 2.0 とも呼ばれる HTTP/2 は Hypertext Transfer Protocol Version 2 の略で、2015 年に IETF によって正式に発表された HTTP/1.1(既存標準)の次期バージョンである。

IETF: Internet Engineering Task Force は国際インターネット標準化機構を意味し、インターネットの運用、管理、開発について協議し、プロトコルや構造的な事項を分析する標準化作業機関である。

HTTP/2 はサーバーとクライアント間の TCP コネクション上で動作する。この TCP コネクションを初期化するのはクライアントである。HTTP/2 のリクエストとレスポンスは、長さが定義された 1 つ以上のフレームに格納される。フレーム内のリクエストとレスポンスはストリームを通じて送られ、1 つのストリームが 1 組のリクエストとレスポンスを処理する。1 つのコネクション上に複数のストリームを同時に作成できるため、複数のリクエストとレスポンスを同時に処理できる。

SPDY(スピーディー)

SPDY は Google が開発した非標準ネットワークプロトコルである。Web 環境が変化し続ける中で、パケット圧縮と Multiplexing を基盤にインターネット上の転送遅延(latency)問題を解決し、HTTP を高速化するために考案された。

HTTP/2 はこの SPDY に基づき、HTTP プロトコル Layer の下位の TCP 通信レイヤーに新しい Binary 階層を導入して、HTTP の基盤である TCP 接続の効率性を追求した。

SPDY

SPDY の特徴は次のとおりである。

  • 常に TLS 上で動作
  • HTTP ヘッダー圧縮
  • テキストではなくバイナリプロトコル
  • Multiplexing
  • Full-duplex interleaving & Prioritization
  • Server Push

SPDY は HTTP/2 の参考規格となったため、多くの構造が似ており、上記の特徴の多くは HTTP/2 にも存在する。

主な特徴

主な特徴は性能向上を目的としている。

Packet Capsulation - パケットカプセル化

HTTP/2 のパケットはより小さな単位にカプセル化され、Frame、Message、Stream という概念が導入される。

Request multiplexing

  • Frame
    • HTTP/2 の通信最小単位で、すべてのパケットには 1 つの Frame Header が含まれる。
  • Message
    • 論理的なリクエストまたはレスポンスメッセージに対応するフレーム全体のシーケンスデータである。
  • Stream
    • 接続の流れを意味し、構成された接続内で伝達されるバイトの双方向フローである。

Request multiplexing

Request Multiplexing - 並列リクエスト

HTTP/2 は 1 つの TCP 接続を通じて複数のデータリクエストを並列に送受信できる。

従来の HTTP/1.x では、1 つの TCP コネクションでリクエストを送ると、そのレスポンスが到着するまで同じ TCP コネクションで次のリクエストを送れなかった。しかし HTTP/2 では 1 つのコネクションに複数のストリームを同時に開けるため、複数のリクエストを同時に送れる。

Request multiplexing

Header Compression - ヘッダー圧縮

HTTP/1.1 までの HTTP ヘッダーは圧縮なしでそのまま送信されていた。HTTP/2 では HTTP メッセージのヘッダーを圧縮し、重複するフィールドを再送信しないように変更された。

HTTP Header Data Compression

Binary Protocol - バイナリプロトコル

HTTP/2 はテキストプロトコルからバイナリプロトコルへ変更された。HTTP/1.x はリクエストレスポンスサイクルを完了するためにテキスト命令を処理したが、HTTP/2 はバイナリ命令を使用して同じ作業を実行する。

Binary protocol

Server Push - サーバープッシュ

HTTP/2 は、サーバーが 1 つのリクエストに対して、クライアントが明示的に要求していない JavaScript、CSS、Font、画像ファイルなど必要になる特定ファイルをレスポンス時に一緒に送信できる。

Server Push

Stream Prioritization - ストリーム優先順位

ストリームは優先順位を持つことができる。クライアントは好ましいレスポンス受信方式を指定してレスポンスを受け取ることができる。

参照