「HTTP/2」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「HTTP/2 とは、ウェブサーバとブラウザの間で使われるプロトコルで、Hypertext Transfer Protocolの次期バージョンです。 '''読み...」)
 
 
(同じ利用者による、間の1版が非表示)
行1: 行1:
[[HTTP/2]] とは、ウェブサーバとブラウザの間で使われるプロトコルで、[[Hypertext Transfer Protocol]]の次期バージョンです。
+
[[HTTP/2]](HTTP2, 旧HTTP/2.0) とは、ウェブサーバとブラウザの間で使われるプロトコルで、[[Hypertext Transfer Protocol]]の次期バージョンです。
  
 
'''読み方'''
 
'''読み方'''
 
;[[HTTP/2]]:えいち てぃーてぃーぴー つー
 
;[[HTTP/2]]:えいち てぃーてぃーぴー つー
 +
;HTTP2:えいち てぃーてぃーぴー つー
 
__TOC__
 
__TOC__
  
行10: 行11:
 
* テキストプロトコルからバイナリプロトコルへ変更
 
* テキストプロトコルからバイナリプロトコルへ変更
 
* マルチセッション、ストリームによる多重化
 
* マルチセッション、ストリームによる多重化
 
+
== HTTP/1.x ==
== HTTP/1.1の課題 ==
+
=== HTTP/1.1の課題 ===
 
* 1つのTCPのコネクションでは、同時に複数のリクエストができません。1つのリクエストが完了するまで、次のリクエストが送信できません。
 
* 1つのTCPのコネクションでは、同時に複数のリクエストができません。1つのリクエストが完了するまで、次のリクエストが送信できません。
 +
** 単一サーバに対する同時接続数は、数接続となっていました。IE8では単一サーバへの最大同時接続数は6でした。IE7以前は、2接続でした。
 
* 並列にリクエストをするためには、複数のTCPのコネクションが必要です。
 
* 並列にリクエストをするためには、複数のTCPのコネクションが必要です。
 
+
* Pipeliningは、1コネクションで複数リクエストが送信できたが、一番長い処理にレスポンスが引きずられました。
== マルチセッション ==
+
=== HTTP/1.x時代のヘッダの仕様 ===
 +
* ヘッダは、テキストフォーマット
 +
* ヘッダとボディの区切りは、空改行
 +
== HTTP2 ==
 +
=== 特徴 ===
 +
* メッセージは、バイナリフレームで表現されます。
 +
* ヘッダを [[HPACK]] で圧縮します。
 +
* サーバからプッシュするサーバプッシュ
 +
* ストリームの優先順位付け
 +
* マルチセッション
 +
* [[TLS]] 1.2 以上
 +
=== マルチセッション ===
 
* 1つのTCPのコネクションを複数の論理的なストリームとして利用でき、1つのコネクションで並列にリクエストが送信可能です。1ユーザあたりの接続数が減ります。
 
* 1つのTCPのコネクションを複数の論理的なストリームとして利用でき、1つのコネクションで並列にリクエストが送信可能です。1ユーザあたりの接続数が減ります。
 
* レスポンスは、リクエストの順番には依存しません。
 
* レスポンスは、リクエストの順番には依存しません。
 
+
=== HTTPSの通信の開始 ===
== HTTPSの通信の開始 ==
+
 
* TLSのネゴシーエションを行う時、アプリケーションレイヤーで利用するプロトコルを選択します。[[ALPN]] ( Application Layer Protocol Negotiation) を使用します。
 
* TLSのネゴシーエションを行う時、アプリケーションレイヤーで利用するプロトコルを選択します。[[ALPN]] ( Application Layer Protocol Negotiation) を使用します。
 +
=== セキュリティ ===
 +
* 圧縮機能の利用禁止(CRIME攻撃対策)
 +
* 再ネゴシエーションの利用禁止
 +
* 暗号スイートが必須
 +
** TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  
 +
TLS 1.3では、禁止事項は対象外になる
 
== 関連項目 ==
 
== 関連項目 ==
 +
* 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では、禁止事項は対象外になる

関連項目