Googleが提唱し、現在標準化作業が進められている通信プロトコルの一つ。HTTP/2.0のベースとなった。2013年12月現在の最新バージョンはSPDY Protocol - Draft 3.1[2]。
中間会議たち
2013/1 東京 2013/6 サンフランシスコ 2013/8 ハンブルグ 2013/10 シアトル 2014/1 チューリヒ ←「今年中にやったろう!」
何年もかかることを1年でやってのけるものすごいスピード。
httpbis interim@チューリヒ 2014 1/22-24
バカ高い物価 @jovi0608 と W3Cの中島さん
- セキュリティエリアのワーキング部分について決着をつけよう
- セキュリティまわりの重鎮が集っていた
http-draft-09/2.0 interop?
- 会場にいってみたらinteropもう終わってた
- HTTP2.0まわりでChromeの実装をやってた人がもうやめてた
- Firefoxくらいしかなかった
- 事前に試験とか実装とかはあらかた終わってて、ブラッシュアップと議論のフェーズになっていた
- (次のinteropでもう終わるかも?終わらないかも?)
4月のワーキングループのラストコーリングが今!!
チューリヒ interim 概要
GitHubで仕様を管理してる。
- Issueの議論と方針決め(基本はメーリスを出して、解決すべきであるならIssueにあげる)
- Priority Leveling 優先度のレベルづけ 仕様の議論
- Security Discussion (NSAの盗聴と改竄に対応するために、HTTP2.0を堅牢なものにするが、ほとんどのものはスコープ外)
Issue議論の結果 draft10の変更点
- Editor(人の名前)が転職(MS Open Tech→Mozilla Windowsからマカーへ) マイナーバージョンの廃止(HTTP2.0とか2.1とかなし。2の次は3) そもそも2.0と2.1の互換通信とか、ないよね。10年以上続いたメジャーバージョンから決別してすぐにバージョンアップする
- GOAWAY(「バイバイ」って言ったあとに通信を切る)→GTFO
"My name is John Francis Pastorius III, and I'm the greatest bass player in the world." "Get the fuck out of here!"
これ。
- FrameTypeやエラーコードのリナンバー
- SETTINGフレームは5バイト
深イ話(テクニカルだから眠いかも)
- FrowControl停止設定の廃止(どっちみちDOS対策とかでFrowControl必要じゃんね?って理由)
- DATAフレームにEND_MESSAGEフラグを新設(今まではフラグだけだった) 「paddingの技術を入れるため」「WebSocketを動かすため」(PR待ち) ** 次のロンドンで検討しようぜ
- 負荷分散について記述追加(切って貼って…) 内容を検討して妥当であるなら入れる
深イ話 その2(テクニカルだから眠いかも)
- 拡張を認めない (DoSの温床。別のALPN名でやれ 名前を変えて拡張する) Googleは拡張試験をガシガシやってる 仕様に書いてないものは全てエラーにする(それまでは多数決であった) ** TwitterやGoogleはh2上で色々試験をやってる
- TLSの利用条件をきびしく 圧縮不可、DHE ECDHEを制限 安全なTLSを使うようにする 圧縮する際に脆弱性が認められた
HPACK-06の変更
- Huffman Tableの共通化
- クッキー用のHuffman Tableの新設
- エンコーダーがわからのTableSize指定(エンコーダー側とデコーダー側で合意が得られたサイズのもののみ通信を行う)
- draftはHTTP/2と別々に進めて、お互いを参照せず、独立して別々に進める
最後の大物 Priority Dependency
「どのファイルを優先的にロードするの?!」
ユースケースの例
ダウンロード順に決められているもの
DOM Parseに影響するもの
DOMが崩れてしまうものをブロックして早く取得
ユーザ行動
タブの切り替え ViewPort変更などのアクションにより優先順位を上げ下げする
サーバープッシュのヒント
ユーザ視点の高速化に大きく利点だが、複雑すぎてGoogleですらも取り組めない
だけど完成したときのメリットが大きすぎるのでGoogleが着手
- Dependency Listをサーバとクライアントで同期さす
- でも同期するのが難しすぎる
Weighted Dependency Group
- Priority用のGroupを新設する(グループは木構造にしない)
- グループはあとでGCとかやる必要はあるけど同期をする必要がなくなる
次のロンドンへむけての試金石
セキュリティ
- HTTP2をTLSに限定
- Explicit Proxyはスコープ外にして3や4に入れ込む
- http:// を平文ではなく暗号文にする(これも先送り)
- コネクション集約 Client証明書 (これも先送り)
結論 HTTP2はTLSに限定しない
- 仕様として http/https両方使える
- 対応はマーケットに任せる
- IEはhttp/https ChromeやFirefoxはhttpsのみ
http:// の日和見暗号
- 必要?不要?という議論をしないといけない
- サーバ認証はするの?しないの? コンテンツを変えずに暗号化通信をやる方法は
- 対ダウングレードアタック
今後の予定
- 2/7 - 2/14までにdraft10をリリースする(ほとんどしゅうせいずみ)
- 3/8に非公式iterimを開催
- 6月にアメリカ東海岸で6th interimを開催
質疑応答
最初のほうにやってしまって「納得いかない!!」っていうのが結構ある
ネットワーク屋としてはChromeやFirefoxが勝手な通信を始めてしまうのはどうにも納得いかない
日和見暗号=オレオレ認証
資料