「安心・安全・安定・信頼」できるインターネットサービスを
株式会社クルウィット
井澤 志充
最新プロトコル HTTP/2 とは
2015/05/16 (Sat)
Kanazawa.rb #33
@ITBP武蔵
「安心・安全・安定・信頼」できるインターネットサービスを
じこしょうかい
• (株)クルウィットの取締役 兼 北陸支社長
• 博士(情報科学)
• ネットワーク関連の委託研究・自社サービス開発など
2
• 井澤 志充 (いざわゆきみつ)
@Yukimitsu_Izawa
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
10月5日 リーナス・トーバル
ズがLinuxカーネルをリリース
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
10月5日 リーナス・トーバル
ズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際
展示場)が開場
6月23日 任天堂がNINTENDO64が発
売開始
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
10月5日 リーナス・トーバル
ズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際
展示場)が開場
6月23日 任天堂がNINTENDO64が発
売開始
7月10日 テレビ東京、人気バ
ラエティ番組『出動!ミニスカ
ポリス』放送開始
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
10月5日 リーナス・トーバル
ズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際
展示場)が開場
6月23日 任天堂がNINTENDO64が発
売開始
7月10日 テレビ東京、人気バ
ラエティ番組『出動!ミニスカ
ポリス』放送開始
4月1日 ポケットモンスター (アニメ)
が放送開始
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
10月5日 リーナス・トーバル
ズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際
展示場)が開場
6月23日 任天堂がNINTENDO64が発
売開始
7月10日 テレビ東京、人気バ
ラエティ番組『出動!ミニスカ
ポリス』放送開始
4月1日 ポケットモンスター (アニメ)
が放送開始12月16日 ポケモンショック
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
10月5日 リーナス・トーバル
ズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際
展示場)が開場
6月23日 任天堂がNINTENDO64が発
売開始
7月10日 テレビ東京、人気バ
ラエティ番組『出動!ミニスカ
ポリス』放送開始
4月1日 ポケットモンスター (アニメ)
が放送開始12月16日 ポケモンショック7月26日 Bluetooth仕様書バージョン
1.0発表
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.9
1996/5 HTTP/1.0 RFC1945
1997/1 HTTP/1.1 RFC2068
1999/6 HTTP/1.1 RFC2616
2012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=
リーによって世界初のWorld
Wide Webサイトが開設
10月5日 リーナス・トーバル
ズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際
展示場)が開場
6月23日 任天堂がNINTENDO64が発
売開始
7月10日 テレビ東京、人気バ
ラエティ番組『出動!ミニスカ
ポリス』放送開始
4月1日 ポケットモンスター (アニメ)
が放送開始12月16日 ポケモンショック7月26日 Bluetooth仕様書バージョン
1.0発表 12月31日 聖飢魔II、解散
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/1.1の抱える問題点
• 昨今のデータ転送量に追いつかなくなってきた
• ひとつのTCP上のHTTPはシーケンシャルに処理さ
れる
• pipeliningして「A,B,Cをちょうだい」といって
もBがつまるとCは来ない。
• Head of Line Blocking
• ブラウザの最大接続数の上限が4∼6本程度
4
「安心・安全・安定・信頼」できるインターネットサービスを
SPDY
• Googleがデータ転送の効率化を目的として開発した転送
プロトコル
• 一本のTCPを効率よく運用する
• 設計上、レイテンシの大きい状況では不利
5
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2の現状
昨日(2015/05/15)、HTTP/2 が正式にRFCになりました
RFC7540 - Hypertext Transfer Protocol Version 2(HTTP/2)
RFC7541 - HPACK: Header Compression for HTTP/2
6
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2の目的
• 計算機フレンドリなメッセージ構造
• 一つの接続に複数の通信をする仕組み
• ヘッダを効率良く符号化・圧縮する仕組み
7
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2 Frame
レイヤ構造
8
TCP
TLS
IPv4/v6
HTTP/1.1 semantics
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2の特徴
• トランザクションセマンティクスの完全後方互換
• 接続の多重化
• ストリームによるパイプライン化
• バイナリフレーム
• ヘッダの圧縮
• サーバープッシュ
• ストリームの優先度
• https://∼ ALPN
• http://∼ HTTP Upgrade
9
「安心・安全・安定・信頼」できるインターネットサービスを
ストリームによるパイプライン化
10
HTTP/2接続(基本的に1つ)
ストリーム
リクエスト
レスポンス
ストリーム
ストリーム
クライア
ント
サーバ
フレーム
フレーム
フレーム
フレーム
「安心・安全・安定・信頼」できるインターネットサービスを
バイナリフレーム
11
• クライアントとサーバのやりとりはすべてバイナリフレー
ムという単位でやりとりされる
DATA … リクエスト、レスポンスのボディを転送する
HEADERS … 圧縮済みのHTTPヘッダを転送する
PRIORITY … ストリームの優先度変更通知
PUSH_PROMISE … サーバからのプッシュ通知
WINDOW_UPDATE … フロー制御用ウィンドウの変更
などなど。
「安心・安全・安定・信頼」できるインターネットサービスを
ヘッダの圧縮 (HPACK)
12
• そもそもヘッダが固定長バイナリになった
• よく使われるヘッダにインデックスが付与されている
• 1とか2とか
• インデックス番号を使ってリクエストのデータ量を削減
• さらに2回目以降は、直前との差分情報だけを送信
「安心・安全・安定・信頼」できるインターネットサービスを
サーバプッシュ
13
リクエスト
レスポンス
クライア
ント
サーバ
レスポンス
レスポンス
index.html ください
main.cssが必要だから
送っておくね
logo.pngも必要だから
送っておくね
index.htmlを送ります
「安心・安全・安定・信頼」できるインターネットサービスを
ALPN (Application Layer Protocol Negotiation)
14
• SSLの拡張のひとつ
• ハンドシェイクの段階でどのアプリケーションプロトコ
ルを使うかを決定する
• SSL通信の際に、クライアントからアプリケーションプ
ロトコルとしてHTTP/2を提案するかたち
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP Upgrade
15
• クライアントがHTTP/1.1のヘッダに加え、
• Upgrade: h2c
• HTTP2-Settiings: xxxx
• を送信し、サーバ側がHTTP/2対応であれば以降HTTP/2
で。
• そうでなければ単純に無視されてHTTP/1.1で通信を継続
する。
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2への対応状況(ブラウザ)
16
• Firefox 35 or later
• Chrome 41 or later
• IE11 on Win10 Technical Preview
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2への対応状況
17
※ 図はcaniuse.comより
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2への対応状況(サーバ)
18
• Apache - mod_h2
• https://icing.github.io/mod_h2/
• nginx
• nghttp2
• https://github.com/tatsuhiro-t/nghttp2
• Etc.
“ We're pleased to announce that we plan to release
versions of both NGINX and NGINX Plus by the end of 2015
that will include support for HTTP/2. ”
「安心・安全・安定・信頼」できるインターネットサービスを
HTTP/2への対応状況(言語)
19
• Ruby - http-2 gem (server/client)
• https://github.com/igrigorik/http-2
• mruby - Trusterd (server)
• https://github.com/trusterd/trusterd
• Go - http2 (server/client)
• https://github.com/bradfitz/http2
• Python - hyper (client)
• https://github.com/lukasa/hyper
• NodeJS - (Server)
• https://github.com/summerwind/sasazka
出典:https://github.com/http2/http2-spec/wiki/Implementations
「安心・安全・安定・信頼」できるインターネットサービスを
まとめ
• HTTP/2に至る歴史をおさらい
• HTTP/1.1までの課題を確認
• HTTP/2の特徴をまとめた
• HTTP/2に対応しているソフトウェアの現状を確認した
20
「安心・安全・安定・信頼」できるインターネットサービスを
References
• 「RFC7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)」
• http://www.rfc-editor.org/rfc/rfc7540.txt
• 「RFC7541 - HPACK: Header Compression for HTTP/2」
• http://www.rfc-editor.org/rfc/rfc7541.txt
• 「HTTP2のヘッダ圧縮 Huffman Encode の原理とメリット・デメリット」
• http://qiita.com/iwanaga/items/98f60003c0114e04095e
• 「HTTP/2の現状とこれから」
• http://www.slideshare.net/shigeki_ohtsu/http2-ohtsu-html5conf2015
• 「HTTP/2入門」
• http://www.slideshare.net/techblogyahoo/http2-35029629
• 「HTTP/2をちょっと触ってみた」
• http://blog.applest.net/article/20141210-http2-ataglance/
• 「高速・大規模ネットワーク時代に向けて改良されたHTTP/2プロトコル」
• http://www.atmarkit.co.jp/ait/articles/1409/18/news135.html
21
「安心・安全・安定・信頼」できるインターネットサービスを
• Thank You!
• If you have any comments,
• please send to:
• Mail: izawa@izawa.org / izawa@clwit.co.jp
• Twitter: @Yukimitsu_Izawa
22

最新プロトコル HTT/2 とは