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

http2.0 negotiation&header compression

6,575 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,575
On SlideShare
0
From Embeds
0
Number of Embeds
4,654
Actions
Shares
0
Downloads
19
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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...

×