Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

http2.0 negotiation&header compression

  1. 1. ネゴシエーションの話 yuki
  2. 2. 自己紹介 ・ゆき ・社会人4月目 ・最弱インフラエンジニア...orz ・趣味   一応、プロトコルとかセキュリティとか   あと、ウクレレとか あすのかぜってブログで、HTTP2.0界隈の記事を ひっそり書いてます
  3. 3. 他の登壇者 ガチ勢過ぎて恐ろしいです... お手柔らかにorz
  4. 4. HTTP2.0の機能 ざっくりと ● アップグレードメカニズム(ネゴシエーション) ● メッセージの多重化 ● フロー制御 ● 優先処理 ● ヘッダ圧縮 ● サーバプッシュ
  5. 5. HTTP2.0の機能 ざっくりと ● アップグレードメカニズム(ネゴシエーション) ● メッセージの多重化 ● フロー制御 ● 優先処理 ● ヘッダ圧縮 ● サーバプッシュ
  6. 6. アップグレードメカニズム(ネゴシエーション) ● HTTP1.xはテキストで、HTTP2.0はバイナリでデータの送 受信が行われる ● HTTP1.xとHTTP2.0ではセマンティクスは維持されるもの の、データの形式が違う ● そのため、それぞれで通信することは出来無い
  7. 7. それぞれで通信できない上、HTTP1.xもHTTP2.0 も使用するポート番号は同じ... →アップグレードメカニズム アップグレードメカニズム(ネゴシエーション)
  8. 8. 3つの方法 仕様の「3 Starting HTTP/2.0」にHTTP2.0の開始 方法が述べられている 1. HTTPの場合 2. HTTPS(SSLを使用する)場合 3. 事前にHTTP2.0に対応してることを知ってる場合
  9. 9. HTTPの場合 HTTP1.xで通信を開始して、Upgradeヘッダを用 いてHTTP2.0に切り替える GET /default.htm HTTP/1.1 Host: server.example.com Connection: Upgrade, HTTP2-Settings Upgrade: HTTP/2.0 HTTP2-Settings: <base64url encoding of HTTP/2.0 SETTINGS payload> HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: HTTP/2.0 [ HTTP/2.0 connection ... HTTPリクエスト HTTPレスポンス
  10. 10. HTTPSの場合 主に二つの方法が議論されている ● TLS-NPN ● TLS-ALPN 両方とも、TLSのハンドシェイク中に使用するプロト コルもネゴシエーションしてしまう仕組み。
  11. 11. NPN サーバから使用可能なプロトコルリストを送信する
  12. 12. ハンドシェイク中なのでその様子を見たりも出来る
  13. 13. ALPN クライアントから使用可能なプロトコルリストを送信 する
  14. 14. NPNとALPN何が違うの ● 使用出来るプロトコルのリストをどちらが提示す るか ● 選択できるプロトコルがリストになかった場合の 処理が明確化されているか(ALPNは明確) ● Selected Protocolが暗号化されるか
  15. 15. 事前に知っている場合 実は、仕様上で詳しくは述べられていない DNSを使う方法が議論はされていたが... SRVレコード、SVCINFOレコードというレコードに 対応しているプロトコルを記述しておき、クライアン トはサーバがHTTP2.0に対応しているか分かる あと、SPDY2で使用されていたAlternate-Protocol ヘッダを使用する場合も考えられる
  16. 16. 誤って通信を開始してしまった場合 誤って、HTTP2.0に対応してないホストにHTTP2.0で 通信を開始してしまった場合... HTTP1.xは改行をメッセージの終端として使用してい る。 → 終端を待ち続ける。コネクションを切断しようとしない
  17. 17. コネクションヘッダ コネクション(HTTP2.0の通信)を開始する際、コネ クションヘッダとして以下の文字列を送信する PRI * HTTP/2.0rnrnSMrnrn HTTP1.xのサーバであれば、改行文字が含まれ ているため、即座に向こうなメッセージとして切断さ れる
  18. 18. ヘッダ圧縮 超概略
  19. 19. ヘッダ圧縮を行う理由 ● HTTP1.xでは同じようなヘッダを毎回送る (例えばUserAgentやAcept系のヘッダ) ● HTTP1.xではテキスト形式でデータを送信している ● SSLでの圧縮にCRIME攻撃という攻撃手法が見つかって いる
  20. 20. ・ヘッダーテーブルを使って、一般的なヘッダ・一回 使ったヘッダはindexを用いて表現する ・ヘッダはReference Setとして管理され、その差分情 報のみ送る ヘッダ圧縮の仕組み
  21. 21. header table index header value 0 :scheme http 1 :scheme https 2 :host 3 :path / 4 :method GET 5 accept 6 accept-charset … 36 via 37 warning index header 200 0 :status 1 age 2 cache-control 3 content-length 4 content-type 5 date 6 etag … 33 warning 34 www-authenticate request header table response header table
  22. 22. index header value 0 :scheme http 1 :scheme https … 36 via 37 warning index header value 0 :scheme http 1 :scheme https … 36 via 37 warning header table header table index=3,value=/my-example/index.html index=12,value=my-user-agent name=x-my-header,value=first :path, /my-example/index.html user-agent, my-user-agent x-my-header, first Reference Set :path, /my-example/index.html user-agent, my-user-agent x-my-header, first Reference Set
  23. 23. 話がかぶった時用
  24. 24. 個人的HTTP2.0の追い方 基本的な一次情報源は ● GitHub ○ http2.0 spec,compression spec,material(minutes) ■ commit ■ issue ■ wiki ● メーリングリスト ○ HTTP1.1に関するものも流れてくる...
  25. 25. 個人的HTTP2.0の追い方 議論には、editionalなものとdesignのものがある。 気にしておくと追いやすい。あと、clarifyなどの単 語も。 (英語弱いので、commitログを見てから、議論追っ たり...orz)
  26. 26. 個人的HTTP2.0の追い方 二次情報源  本日登壇者の方々のツイッターやブログなど... インターネットウォッチ [HTTP 2.0の最新動向] IETF86におけるHTTP/2.0関連トピックス オライリー High Performance Browser Networking
  27. 27. 個人的HTTP2.0の追い方 あわせて眺めておきたい ● 「SPDY Protocol - Draft 3」の日本語訳。 ● SPDYメーリングリスト ● TLS WGメーリングリスト ● 各種実装 ● 各種OSSのコミットログ ○ chromium,firefox...

×