HTTP/2 【Hypertext Transfer Protocol version 2】
概要
HTTP/2(Hypertext Transfer Protocol version 2)とは、Web(WWW)のデータ伝送に用いるプロトコル(通信規約)であるHTTP(Hypertext Transfer Protocol)の第2版。2015年にIETFによってRFC 7540として標準化された。WebサーバとWebクライアント(Webブラウザなど)の間で、データや処理の要求(リクエスト)や応答(レスポンス)を伝送する手順やデータ形式を定めている。Webが一般に普及する初期の1999年に策定されたHTTP/1.1が長年に渡って利用されてきたが、16年ぶりの仕様改訂となった。
米グーグル(Google)社が「SPDY」(スピーディ)の名称で提唱・実装してきたHTTPの改善策を取り入れたもので、基本的な仕様はHTTP/1.1と互換性を保ちつつ、データ伝送の高速化や効率化のための拡張が行われている。特に利用者やデータ伝送量の多い大規模サイト・サービスで効力を発揮する。
主な追加仕様としては、HTTPヘッダ圧縮および再読み込み時の差分伝送、リクエストで指定されていないファイルをサーバ側から送信するサーバプッシュ、一つのTCPコネクション上で複数のリクエストとレスポンスを非同期(順不同)に取り扱う「ストリーム」の導入、バイナリ化されたメッセージ形式(フレーム)の導入、資源の優先度の指定などがある。
接続時のネゴシエーション
HTTP/2はHTTP/1.1と同様、標準ではTCPポート80番、SSL/TLSを併用するHTTPSではTCPポート443番を使用するが、1.0から1.1への移行の場合と異なりメッセージの形式が異なるため、サーバ側が対応済みか分からない状況ではHTTP/2で通信を開始することができない問題がある。
このため、最初にHTTP/1.1で接続し、双方が対応済みならばHTTP/2接続へアップグレードする方式(非HTTPS接続の場合)と、TLS接続の確立時にALPN(Application-Layer Protocol Negotiation Extension)という手順でHTTP/2の利用を合意する方式(HTTPS接続の場合)が用意されている。再訪問など相手がHTTP/2対応と分かっている場合はいきなりHTTP/2で接続することもできる。
現在では主要なWebブラウザとWebサーバの最新版のほとんどがHTTP/2に対応しているが、ブラウザ側ではTLS接続時のみHTTP/2利用を可能とする実装が一般的となっているため、実用上はHTTP/1.1からの切り替えが行われることはほとんどない。