「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
特徴
マルチセッション
- 1つのTCPのコネクションを複数の論理的なストリームとして利用でき、1つのコネクションで並列にリクエストが送信可能です。1ユーザあたりの接続数が減ります。
- レスポンスは、リクエストの順番には依存しません。
HTTPSの通信の開始
- TLSのネゴシーエションを行う時、アプリケーションレイヤーで利用するプロトコルを選択します。ALPN ( Application Layer Protocol Negotiation) を使用します。
セキュリティ
- 圧縮機能の利用禁止(CRIME攻撃対策)
- 再ネゴシエーションの利用禁止
- 暗号スイートが必須
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS 1.3では、禁止事項は対象外になる