SlideShare a Scribd company logo
1 of 26
Download to read offline
ハイパフォーマンスブラウザネッ 
トワーキング読書会 
12章 「HTTP 2.0」と現在の仕様 
2014-08-28 
@hagino3000
最初に 
本文中にあるHTTP 2.0という表記は既に無くなっ 
たので引用以外の箇所はHTTP/2でいきます。 
! 
2014/08/28現在の仕様を反映した感じ(ラスト 
コールとなったdraft 14ベース)で説明をします。
HTTP/2の歴史とSPDY 
• SPDYの目標 
• HTTP 1.1のパフォーマンスの制限に対処する事で、Webページのロー 
ディングで発生するレイテンシを削減する事 
• PLT 50%削減 
• Webサイト開発者によるコンテンツの変更を発生させない 
• ネットワークインフラの変更を避ける 
• オープンソースコミュニティと強力して新たなプロトコルを開発する 
• 実世界のパフォーマンスデータを収集し、この実験的プロトコルを検証 
抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// 
itunes.apple.com/WebObjects/MZStore.woa/wa/
SPDYの普及 
• chrome://net-internals/#spdy 参照 
• Twitter, Googleのサービスは対応しているのがわかる 
• ChromeのStable版だとSPDY3.1が使われる
HTTP/2 
• TCPを使用するHTTP 1.1と比較して、ほとんどの場合にエンドユーザが認識するレイテンシ 
に劇的かつ測定可能な改善をもたらす。 
• HTTPのHoLブロッキングに対処する。 
• 並列性を確保するために複数の接続に頼らない。特に輻輳制御においてTCPの使用を改善す 
る。 
• →HTTP 1.1のパフォーマンスの制限を取りはらう 
• HTTP 1.1の様式を保持する。HTTPメソッド、ステータスコード、URI、そして必要な場合 
はヘッダフィールドなどを含む、既存のドキュメンテーションを活用する。 
• →HTTP 1.1の文法は変えない 
• HTTP 2.0とHTTP 1.xの相互作用を明確に定義する。特に中間装置での扱いについて。 
• →中間装置での扱い?? (^ω^;) 
• 新しい拡張ポイントがあればそれを明確に定義し、その適切な使用法のポリシーを確立する 
抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// 
itunes.apple.com/WebObjects/MZStore.woa/wa/
つまり 
• HTTP 1.1のパフォーマンスの制限を解決する 
• インタフェース(HTTPの文法)は変えない 
• Webサイトのコンテンツに変更は必要ない 
• HTTPSの様に、透過的に処理される
HTTP/2 draft 14 
2014年8月1日、HTTP/2仕様はdraft14でラストコールに。Chrome 
Canary, Firefox Nightlyで試せる。 
日本語訳 http://summerwind.jp/docs/draft-ietf-httpbis-http2-14/
ストリーム・メッセージ・フレーム 
ストリーム双方メッセージを長す仮想チャネル 
メッセージ個々のHTTPリクエスト、レスポンス 
フレーム 
HTTP/2の最小の通信単位 (HEADERS, 
DATA ,GOAWAY, PING, SETTING 
etc) 
単一のTCP接続を使い、複数の論理的なHTTPのメッセージを 
運ぶための仕組み。
抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// 
itunes.apple.com/WebObjects/MZStore.woa/wa/
抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// 
itunes.apple.com/WebObjects/MZStore.woa/wa/
Why 
• ブロックする事なく、複数の並列リクエストを 
インターリーブするため 
• ブロックする事なく、複数の並列レスポンスを 
インターリーブするため 
• HTTPのHoL Blockingの回避
1オリジンに1接続 
• 従来の複数接続を貼る方法に比べてサーバーの負荷が小さい 
• HTTP/2の接続は再利用される 
• GOAWAYフレームが届くまで切断しない、Keep Aliveよ 
りも強力なオーバヘッド削減効果 
• だが、TCPの制限を受けるケースではその影響が顕著に 
• TCPレベルのHoLブロッキング 
• 1個のパケットロスが全てのストリームを遅延させる
HTTP/2 over X もありうる 
“HTTP 2.0は以前のHTTPプロトコルと同 
様、必ずしもTCPを使用する必要がないこと 
を認識しておくことも重要です。UDPなど他 
のトランスポートにも可能性があるのです。” 
• 次のボトルネックはTCP 
• SPDYはQUICでも動作する 
• chrome://net-internals/#quic
ヘッダ圧縮 
• 仕様はHTTP/2とは別にHPACKとして策定 
• http://tools.ietf.org/html/draft-ietf-httpbis- 
header-compression-09 
• Draft 9でラストコール
図12-5の差分符号化は 
無かった事に 
HPACK draft 9で削除、よかったですね。
ヘッダ圧縮はどうなった 
• 次の3つは残った 
• Static Table 
• Header Table 
• Huffman Encoding
Static Table 
よく使うヘッダのKey, Valueの組のインデックス 
を持っておいて。マッチする場合はインデックス 
だけ送る 
Index Header Name Header Value 
1 :authority GET 
2 :method GET 
3 :method POST 
4 :path / 
… 
http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-09#appendix-B
サーバープッシュ 
• サーバーは1つのリクエストに対して、複数のレ 
スポンスを返す事ができる 
• プッシュされたコンテンツは、クライアントに 
キャッシュされる。 
• 例: index.htmlがリクエストされた時に 
index.htmlとfavicon.icoとstyle.css を返す
フロー制御 
• WINDOW_UPDATEフレームで、ストリーム 
毎、接続全体の受信可能なバイト数を通知でき 
る
フロー制御 
“フロー制御はホップ単位で行なわれ、エンドツーエンドではな 
い。” 
“[†2] 訳注 ホップ単位のフロー制御は、必ずしも送信者を直 
接制御することではありません。受信者のフロー制御の結果が 
経路上の次の中間装置を制御し、その影響が伝播することで最 
終的に送信者に影響を与えます。また、HTTPにおける「ホッ 
プ」はプロキシなどHTTPを理解する中間装置単位です。” 
どういう事?????
HTTP/2とTLS 
“HTTP 2.0はエンドツーエンドでサポートされている必要があり、 
中間装置が1つでも対応していない場合は接続が成功しません。 
HTTP 2.0自体はTLSの使用を必須としていませんが、上記の理由 
のため、既存の中間装置が多数存在するような状況下においては 
TLSの利用が最も安全なデプロイメントの方法です。” 
• TLSを使えば、中間装置からは唯のTLS通信にしか見えないので安全。 
• ChromeとFirefoxは平文HTTP/2は実装してない
HTTP/2のアップグレードフロー 
• あと10年はHTTP 1.xのサポートもしないといけない。 
• サーバーがHTTP/2に対応しているか不明な場合 
• HTTP 1.xで開始して、クライアントがHTTP/2に対応してい 
る事をサーバーに伝える 
• ALPN 
• 事前にわかっている場合 
• コネクションプリフェイス後にHTTP/2フレームを送って良い
バイナリフレーム 
フレーム長のフィールドは draft 14で24bitに
参考 
• HTTP/2 spec draft 14日本語訳 
• http://summerwind.jp/docs/draft-ietf-httpbis-http2- 
14/ 
• HPACK spec draft 9 
• http://tools.ietf.org/html/draft-ietf-httpbis-header-compression- 
09 
• QUIC 
• https://docs.google.com/document/d/ 
1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34/ 
mobilebasic
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様

More Related Content

What's hot

HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)Jun Fujisawa
 
CategoLJについて
CategoLJについてCategoLJについて
CategoLJについてToshiaki Maki
 
RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】qaz_id
 
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御Ryousei Takano
 
TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95Kazuho Oku
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)Masaru Oki
 
Hadoop HDFS: The Ultimate Storage
Hadoop HDFS: The Ultimate StorageHadoop HDFS: The Ultimate Storage
Hadoop HDFS: The Ultimate StorageSATOSHI TAGOMORI
 
自分的pkgsrcの課題
自分的pkgsrcの課題自分的pkgsrcの課題
自分的pkgsrcの課題Ryo ONODERA
 
ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来Kazuho Oku
 
OpenvSwitchのモニタリングと管理機能
OpenvSwitchのモニタリングと管理機能OpenvSwitchのモニタリングと管理機能
OpenvSwitchのモニタリングと管理機能Takashi Naito
 
Hgsubversionについて
HgsubversionについてHgsubversionについて
HgsubversionについてTakayuki Kondou
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket buildMasaru Oki
 
再入門、サーバープッシュ技術
再入門、サーバープッシュ技術再入門、サーバープッシュ技術
再入門、サーバープッシュ技術Shin Sekaryo
 
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話Naotoshi Seo
 
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門Takashi Takizawa
 
QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7Kazuho Oku
 
Freebsd ports と暮らす(5) 2012年を振り返る
Freebsd ports と暮らす(5) 2012年を振り返るFreebsd ports と暮らす(5) 2012年を振り返る
Freebsd ports と暮らす(5) 2012年を振り返るHirohisa Yamaguchi
 
HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計Kazuho Oku
 

What's hot (20)

HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)
 
CategoLJについて
CategoLJについてCategoLJについて
CategoLJについて
 
RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】
 
CentOSでつくる神Plesk
CentOSでつくる神PleskCentOSでつくる神Plesk
CentOSでつくる神Plesk
 
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
 
TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
Hadoop HDFS: The Ultimate Storage
Hadoop HDFS: The Ultimate StorageHadoop HDFS: The Ultimate Storage
Hadoop HDFS: The Ultimate Storage
 
自分的pkgsrcの課題
自分的pkgsrcの課題自分的pkgsrcの課題
自分的pkgsrcの課題
 
Varnish
VarnishVarnish
Varnish
 
ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来ウェブアーキテクチャの歴史と未来
ウェブアーキテクチャの歴史と未来
 
OpenvSwitchのモニタリングと管理機能
OpenvSwitchのモニタリングと管理機能OpenvSwitchのモニタリングと管理機能
OpenvSwitchのモニタリングと管理機能
 
Hgsubversionについて
HgsubversionについてHgsubversionについて
Hgsubversionについて
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket build
 
再入門、サーバープッシュ技術
再入門、サーバープッシュ技術再入門、サーバープッシュ技術
再入門、サーバープッシュ技術
 
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
 
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門
 
QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7
 
Freebsd ports と暮らす(5) 2012年を振り返る
Freebsd ports と暮らす(5) 2012年を振り返るFreebsd ports と暮らす(5) 2012年を振り返る
Freebsd ports と暮らす(5) 2012年を振り返る
 
HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計
 

Viewers also liked

Introduction of Leap Motion
Introduction of Leap MotionIntroduction of Leap Motion
Introduction of Leap Motionhagino 3000
 
Google App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScriptGoogle App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScripthagino 3000
 
Secure Code for Interactive Programming
Secure Code for Interactive ProgrammingSecure Code for Interactive Programming
Secure Code for Interactive Programminghagino 3000
 
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料hagino 3000
 
はじめてのChaos Proxy Viewer
はじめてのChaos Proxy ViewerはじめてのChaos Proxy Viewer
はじめてのChaos Proxy Viewerhagino 3000
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現hagino 3000
 
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)hagino 3000
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰hagino 3000
 
Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析hagino 3000
 
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知hagino 3000
 
スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習hagino 3000
 
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術hagino 3000
 

Viewers also liked (14)

Introduction of Leap Motion
Introduction of Leap MotionIntroduction of Leap Motion
Introduction of Leap Motion
 
Google App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScriptGoogle App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScript
 
Secure Code for Interactive Programming
Secure Code for Interactive ProgrammingSecure Code for Interactive Programming
Secure Code for Interactive Programming
 
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
 
逃亡の勧め
逃亡の勧め逃亡の勧め
逃亡の勧め
 
はじめてのChaos Proxy Viewer
はじめてのChaos Proxy ViewerはじめてのChaos Proxy Viewer
はじめてのChaos Proxy Viewer
 
iOS WebView App
iOS WebView AppiOS WebView App
iOS WebView App
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現
 
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
 
Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析
 
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
 
スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習
 
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
 

Similar to ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様

WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketYu Nobuoka
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2Jxck Jxck
 
Ietf97 ソウル報告
Ietf97 ソウル報告Ietf97 ソウル報告
Ietf97 ソウル報告yuki-f
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話shigeki_ohtsu
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP betterKazuho Oku
 
Stuart attacking http2 implementations truefinal-jp
Stuart  attacking http2 implementations truefinal-jpStuart  attacking http2 implementations truefinal-jp
Stuart attacking http2 implementations truefinal-jpPacSecJP
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話shigeki_ohtsu
 
Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo yuki-f
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 
The Twelve-Factor App (2017)
The Twelve-Factor App (2017)The Twelve-Factor App (2017)
The Twelve-Factor App (2017)Kihyun Kim
 
【17-A-5】ウェブアーキテクチャの歴史と未来
【17-A-5】ウェブアーキテクチャの歴史と未来【17-A-5】ウェブアーキテクチャの歴史と未来
【17-A-5】ウェブアーキテクチャの歴史と未来Developers Summit
 
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) VirtualTech Japan Inc.
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho Oku
 
Webrtc最新動向
Webrtc最新動向Webrtc最新動向
Webrtc最新動向Yusuke Naka
 
HTTPを理解する
HTTPを理解するHTTPを理解する
HTTPを理解するIIJ
 
20161017 みんてくapacheでhttp/2
20161017 みんてくapacheでhttp/220161017 みんてくapacheでhttp/2
20161017 みんてくapacheでhttp/2Tomohide Murata
 
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?Kengo Nakajima
 

Similar to ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様 (20)

WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
 
HTTP/2.0と標準化
HTTP/2.0と標準化HTTP/2.0と標準化
HTTP/2.0と標準化
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
 
Ietf97 ソウル報告
Ietf97 ソウル報告Ietf97 ソウル報告
Ietf97 ソウル報告
 
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
Node の HTTP/2.0 モジュール iij-http2 の実装苦労話
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP better
 
Stuart attacking http2 implementations truefinal-jp
Stuart  attacking http2 implementations truefinal-jpStuart  attacking http2 implementations truefinal-jp
Stuart attacking http2 implementations truefinal-jp
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
 
Web基礎
Web基礎Web基礎
Web基礎
 
20120525 mt websocket
20120525 mt websocket20120525 mt websocket
20120525 mt websocket
 
Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
The Twelve-Factor App (2017)
The Twelve-Factor App (2017)The Twelve-Factor App (2017)
The Twelve-Factor App (2017)
 
【17-A-5】ウェブアーキテクチャの歴史と未来
【17-A-5】ウェブアーキテクチャの歴史と未来【17-A-5】ウェブアーキテクチャの歴史と未来
【17-A-5】ウェブアーキテクチャの歴史と未来
 
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向
 
Webrtc最新動向
Webrtc最新動向Webrtc最新動向
Webrtc最新動向
 
HTTPを理解する
HTTPを理解するHTTPを理解する
HTTPを理解する
 
20161017 みんてくapacheでhttp/2
20161017 みんてくapacheでhttp/220161017 みんてくapacheでhttp/2
20161017 みんてくapacheでhttp/2
 
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?
 

More from hagino 3000

Where does my money go チーム発表
Where does my money go チーム発表Where does my money go チーム発表
Where does my money go チーム発表hagino 3000
 
今日からはじめるKinect Hack
今日からはじめるKinect Hack今日からはじめるKinect Hack
今日からはじめるKinect Hackhagino 3000
 
Introduction of Kinect Hacks
Introduction of Kinect HacksIntroduction of Kinect Hacks
Introduction of Kinect Hackshagino 3000
 
HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化hagino 3000
 

More from hagino 3000 (6)

Where does my money go チーム発表
Where does my money go チーム発表Where does my money go チーム発表
Where does my money go チーム発表
 
NUIとKinect
NUIとKinectNUIとKinect
NUIとKinect
 
今日からはじめるKinect Hack
今日からはじめるKinect Hack今日からはじめるKinect Hack
今日からはじめるKinect Hack
 
Introduction of Kinect Hacks
Introduction of Kinect HacksIntroduction of Kinect Hacks
Introduction of Kinect Hacks
 
HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化
 
Extjs + Gears
Extjs + GearsExtjs + Gears
Extjs + Gears
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様

  • 1. ハイパフォーマンスブラウザネッ トワーキング読書会 12章 「HTTP 2.0」と現在の仕様 2014-08-28 @hagino3000
  • 2. 最初に 本文中にあるHTTP 2.0という表記は既に無くなっ たので引用以外の箇所はHTTP/2でいきます。 ! 2014/08/28現在の仕様を反映した感じ(ラスト コールとなったdraft 14ベース)で説明をします。
  • 3. HTTP/2の歴史とSPDY • SPDYの目標 • HTTP 1.1のパフォーマンスの制限に対処する事で、Webページのロー ディングで発生するレイテンシを削減する事 • PLT 50%削減 • Webサイト開発者によるコンテンツの変更を発生させない • ネットワークインフラの変更を避ける • オープンソースコミュニティと強力して新たなプロトコルを開発する • 実世界のパフォーマンスデータを収集し、この実験的プロトコルを検証 抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// itunes.apple.com/WebObjects/MZStore.woa/wa/
  • 4. SPDYの普及 • chrome://net-internals/#spdy 参照 • Twitter, Googleのサービスは対応しているのがわかる • ChromeのStable版だとSPDY3.1が使われる
  • 5.
  • 6. HTTP/2 • TCPを使用するHTTP 1.1と比較して、ほとんどの場合にエンドユーザが認識するレイテンシ に劇的かつ測定可能な改善をもたらす。 • HTTPのHoLブロッキングに対処する。 • 並列性を確保するために複数の接続に頼らない。特に輻輳制御においてTCPの使用を改善す る。 • →HTTP 1.1のパフォーマンスの制限を取りはらう • HTTP 1.1の様式を保持する。HTTPメソッド、ステータスコード、URI、そして必要な場合 はヘッダフィールドなどを含む、既存のドキュメンテーションを活用する。 • →HTTP 1.1の文法は変えない • HTTP 2.0とHTTP 1.xの相互作用を明確に定義する。特に中間装置での扱いについて。 • →中間装置での扱い?? (^ω^;) • 新しい拡張ポイントがあればそれを明確に定義し、その適切な使用法のポリシーを確立する 抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// itunes.apple.com/WebObjects/MZStore.woa/wa/
  • 7. つまり • HTTP 1.1のパフォーマンスの制限を解決する • インタフェース(HTTPの文法)は変えない • Webサイトのコンテンツに変更は必要ない • HTTPSの様に、透過的に処理される
  • 8. HTTP/2 draft 14 2014年8月1日、HTTP/2仕様はdraft14でラストコールに。Chrome Canary, Firefox Nightlyで試せる。 日本語訳 http://summerwind.jp/docs/draft-ietf-httpbis-http2-14/
  • 9. ストリーム・メッセージ・フレーム ストリーム双方メッセージを長す仮想チャネル メッセージ個々のHTTPリクエスト、レスポンス フレーム HTTP/2の最小の通信単位 (HEADERS, DATA ,GOAWAY, PING, SETTING etc) 単一のTCP接続を使い、複数の論理的なHTTPのメッセージを 運ぶための仕組み。
  • 10. 抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// itunes.apple.com/WebObjects/MZStore.woa/wa/
  • 11. 抜粋:: Ilya Grigorik. “ハイパフォーマンス ブラウザネットワーキング”。 iBooks. https:// itunes.apple.com/WebObjects/MZStore.woa/wa/
  • 12. Why • ブロックする事なく、複数の並列リクエストを インターリーブするため • ブロックする事なく、複数の並列レスポンスを インターリーブするため • HTTPのHoL Blockingの回避
  • 13. 1オリジンに1接続 • 従来の複数接続を貼る方法に比べてサーバーの負荷が小さい • HTTP/2の接続は再利用される • GOAWAYフレームが届くまで切断しない、Keep Aliveよ りも強力なオーバヘッド削減効果 • だが、TCPの制限を受けるケースではその影響が顕著に • TCPレベルのHoLブロッキング • 1個のパケットロスが全てのストリームを遅延させる
  • 14. HTTP/2 over X もありうる “HTTP 2.0は以前のHTTPプロトコルと同 様、必ずしもTCPを使用する必要がないこと を認識しておくことも重要です。UDPなど他 のトランスポートにも可能性があるのです。” • 次のボトルネックはTCP • SPDYはQUICでも動作する • chrome://net-internals/#quic
  • 15. ヘッダ圧縮 • 仕様はHTTP/2とは別にHPACKとして策定 • http://tools.ietf.org/html/draft-ietf-httpbis- header-compression-09 • Draft 9でラストコール
  • 16. 図12-5の差分符号化は 無かった事に HPACK draft 9で削除、よかったですね。
  • 17. ヘッダ圧縮はどうなった • 次の3つは残った • Static Table • Header Table • Huffman Encoding
  • 18. Static Table よく使うヘッダのKey, Valueの組のインデックス を持っておいて。マッチする場合はインデックス だけ送る Index Header Name Header Value 1 :authority GET 2 :method GET 3 :method POST 4 :path / … http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-09#appendix-B
  • 19. サーバープッシュ • サーバーは1つのリクエストに対して、複数のレ スポンスを返す事ができる • プッシュされたコンテンツは、クライアントに キャッシュされる。 • 例: index.htmlがリクエストされた時に index.htmlとfavicon.icoとstyle.css を返す
  • 20. フロー制御 • WINDOW_UPDATEフレームで、ストリーム 毎、接続全体の受信可能なバイト数を通知でき る
  • 21. フロー制御 “フロー制御はホップ単位で行なわれ、エンドツーエンドではな い。” “[†2] 訳注 ホップ単位のフロー制御は、必ずしも送信者を直 接制御することではありません。受信者のフロー制御の結果が 経路上の次の中間装置を制御し、その影響が伝播することで最 終的に送信者に影響を与えます。また、HTTPにおける「ホッ プ」はプロキシなどHTTPを理解する中間装置単位です。” どういう事?????
  • 22. HTTP/2とTLS “HTTP 2.0はエンドツーエンドでサポートされている必要があり、 中間装置が1つでも対応していない場合は接続が成功しません。 HTTP 2.0自体はTLSの使用を必須としていませんが、上記の理由 のため、既存の中間装置が多数存在するような状況下においては TLSの利用が最も安全なデプロイメントの方法です。” • TLSを使えば、中間装置からは唯のTLS通信にしか見えないので安全。 • ChromeとFirefoxは平文HTTP/2は実装してない
  • 23. HTTP/2のアップグレードフロー • あと10年はHTTP 1.xのサポートもしないといけない。 • サーバーがHTTP/2に対応しているか不明な場合 • HTTP 1.xで開始して、クライアントがHTTP/2に対応してい る事をサーバーに伝える • ALPN • 事前にわかっている場合 • コネクションプリフェイス後にHTTP/2フレームを送って良い
  • 25. 参考 • HTTP/2 spec draft 14日本語訳 • http://summerwind.jp/docs/draft-ietf-httpbis-http2- 14/ • HPACK spec draft 9 • http://tools.ietf.org/html/draft-ietf-httpbis-header-compression- 09 • QUIC • https://docs.google.com/document/d/ 1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34/ mobilebasic