SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
ハイパフォーマンスブラウザネッ 
トワーキング読書会 
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」と現在の仕様

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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時代のウェブサイト設計
 

Andere mochten auch

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
 

Andere mochten auch (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章 データからの学習
 
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
 

Ähnlich wie ハイパフォーマンスブラウザネットワーキング 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
 

Ähnlich wie ハイパフォーマンスブラウザネットワーキング 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
 
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Kürzlich hochgeladen (9)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

ハイパフォーマンスブラウザネットワーキング 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