「HTTP/2」の版間の差分

提供: セキュリティ
移動: 案内検索
 
行41: 行41:
 
TLS 1.3では、禁止事項は対象外になる
 
TLS 1.3では、禁止事項は対象外になる
 
== 関連項目 ==
 
== 関連項目 ==
* [[nghttp2]]
+
* nghttp2
 
* [[SPDY]]
 
* [[SPDY]]
 
* [[TLS]]
 
* [[TLS]]
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
-->
 
-->

2016年1月11日 (月) 21:40時点における最新版

HTTP/2(HTTP2, 旧HTTP/2.0) とは、ウェブサーバとブラウザの間で使われるプロトコルで、Hypertext Transfer Protocolの次期バージョンです。

読み方

HTTP/2
えいち てぃーてぃーぴー つー
HTTP2
えいち てぃーてぃーぴー つー

概要

SPDYの要素を取り入れて、 HTTP/2として標準化が薦められています。

  • ヘッダーの圧縮
  • テキストプロトコルからバイナリプロトコルへ変更
  • マルチセッション、ストリームによる多重化

HTTP/1.x

HTTP/1.1の課題

  • 1つのTCPのコネクションでは、同時に複数のリクエストができません。1つのリクエストが完了するまで、次のリクエストが送信できません。
    • 単一サーバに対する同時接続数は、数接続となっていました。IE8では単一サーバへの最大同時接続数は6でした。IE7以前は、2接続でした。
  • 並列にリクエストをするためには、複数のTCPのコネクションが必要です。
  • Pipeliningは、1コネクションで複数リクエストが送信できたが、一番長い処理にレスポンスが引きずられました。

HTTP/1.x時代のヘッダの仕様

  • ヘッダは、テキストフォーマット
  • ヘッダとボディの区切りは、空改行

HTTP2

特徴

  • メッセージは、バイナリフレームで表現されます。
  • ヘッダを HPACK で圧縮します。
  • サーバからプッシュするサーバプッシュ
  • ストリームの優先順位付け
  • マルチセッション
  • TLS 1.2 以上

マルチセッション

  • 1つのTCPのコネクションを複数の論理的なストリームとして利用でき、1つのコネクションで並列にリクエストが送信可能です。1ユーザあたりの接続数が減ります。
  • レスポンスは、リクエストの順番には依存しません。

HTTPSの通信の開始

  • TLSのネゴシーエションを行う時、アプリケーションレイヤーで利用するプロトコルを選択します。ALPN ( Application Layer Protocol Negotiation) を使用します。

セキュリティ

  • 圧縮機能の利用禁止(CRIME攻撃対策)
  • 再ネゴシエーションの利用禁止
  • 暗号スイートが必須
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

TLS 1.3では、禁止事項は対象外になる

関連項目