Upload
yukimitsu-izawa
View
226
Download
3
Embed Size (px)
Citation preview
「安心・安全・安定・信頼」できるインターネットサービスを
株式会社クルウィット 井澤 志充
最新プロトコル HTTP/2 とは
2015/05/16 (Sat) Kanazawa.rb #33 @ITBP武蔵
「安心・安全・安定・信頼」できるインターネットサービスを
じこしょうかい
• (株)クルウィットの取締役 兼 北陸支社長• 博士(情報科学)• ネットワーク関連の委託研究・自社サービス開発など
2
• 井澤 志充 (いざわゆきみつ)
@Yukimitsu_Izawa
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/11 SPDYを元にHTTP/2策定開始
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=リーによって世界初のWorld Wide Webサイトが開設
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=リーによって世界初のWorld Wide Webサイトが開設
10月5日 リーナス・トーバルズがLinuxカーネルをリリース
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=リーによって世界初のWorld Wide Webサイトが開設
10月5日 リーナス・トーバルズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際展示場)が開場 6月23日 任天堂がNINTENDO64が発売開始
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/11 SPDYを元にHTTP/2策定開始
8月6日 ティム・バーナーズ=リーによって世界初のWorld Wide Webサイトが開設
10月5日 リーナス・トーバルズがLinuxカーネルをリリース4月1日 東京ビッグサイト(東京国際展示場)が開場 6月23日 任天堂がNINTENDO64が発売開始
7月10日 テレビ東京、人気バラエティ番組『出動!ミニスカポリス』放送開始
「安心・安全・安定・信頼」できるインターネットサービスを
HTTPの歴史
1991 HTTP/0.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/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.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/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.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/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.91996/5 HTTP/1.0 RFC19451997/1 HTTP/1.1 RFC20681999/6 HTTP/1.1 RFC26162012/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: [email protected] / [email protected]• Twitter: @Yukimitsu_Izawa
22