8/14 @IIJ
@jxck
- HTTP/1.1が出て以降のWebの使われ方の変化
- 2009/11 SPDY/1
- 2011/9 HTML5/WebSocket
- 2012/8 HTTP/2.0 Start
- 多重化
- ヘッダ圧縮
- RTT削減とか
- HTTP/1.1を更新したかったから
- SPDYをベースに
- Googleがserver/clientを押さえてるからいろいろ試せた
- それをIETFにフィードバック
- githubでやってる http://github.com/http2/http2-spec
- 多重化
- バイナリフレーム
- ALPN / Upgrade
- ヘッダ圧縮
- サーバプッシュ
- Stream
- HEADERS & DATAの連続
- HTTP/1.1のリクエスト&レスポンスに対応
- 多重化
- 一つの接続が並行する複数のストリームを持つ
- 優先度
- フロー制御
- 多重化
- HEADERS & DATAの連続
- HTTP/1.1のリクエスト&レスポンスに対応
- クライアントがリクエストする前にレスポンスを送る
- safeなmethodのみ(GET, HEAD)
- PUSH_PROMISE
- これからpushするからGETしてくんなよ、ってできる
- いろいろ
- サイトがSPDY対応かどうかを確認できる
https://jxck.io/labs/http2cat/
- High Performance Browser Networking
- HTTP/1.xはテキスト、HTTP/2.0はバイナリで送受信
- それぞれで通信できないけど、どちらも同じポートをつかう
- どちらを使うか決める方法が必要
- 開始する3つの方法
- HTTPの場合
- HTTP/1.xで通信を開始し、Upgradeヘッダを用いて2.0に切り替える
- HTTPSの場合
- TLS-NPN
- サーバから使用可能なプロトコルリストを送信
- TLS-ANPN
- クライアントから使用可能なプロトコルリストを送信
- TLS-NPN
- 事前に知っている場合
- 実は仕様上あんまり詳しく述べられてない。DNSのSRV/SVCINFOレコードを使う
- HTTPの場合
- 誤って通信を開始してしまった場合
- HTTP/1.xは改行をメッセージの終端として使用
- その問題に対処するため、コネクションヘッダとして改行が入った文字列を送信
- HTTP/1.xクライアントはメッセージが終わりだと思ってコネクションを切ってくれる
- ヘッダーテーブルを使って、一般的なヘッダ・一回使ったヘッダはindexを用いて表現する
- ヘッダはReference Setとして管理され、その差分情報のみ送る
株式会社レピダム 林さん
- RFCを発行してるとこ
- 個々のAreaに多くのWorking Groupがある
- HTTP/2.0はApp Areaのhttpbis WGで進んでいる
- 年3回
- 各WGにはChairがいる
- 提案はInternet Draft形式で提出
- 議論は公に開かれており、Meetingに参加しなくても議論と意思決定に関われる
- ことになっている。実際は参加せず議論を方向付けるのは困難
- HTTP/1.1bisのため
- 突然HTTP/2.0の話題が
- メーリングリストがw3.orgにホストされてる
- あまり検索に引っかからない
- Chairがひとり
- Mark Nottingham
- RC4はHTTP/2.0では基本的に使われなくなった
- 安全なストリーム暗号がなくなってしまった
- SPDYはSSLが必須
- CRIME Attack
- HTTP/2.0の策定時に関係者を打ちのめした
- 圧縮したら情報の変化から内容が推測しやすくなる
- 本当にエレガント
- BREACH Attack
- 圧縮を止める、くらいしか解決方法が見つかっていない
- WG Meetingとは違って、少人数で活発
- Interopは最高に面白い
- 強い心と熱い情熱
- 技術は推進しなきゃ進まない
- HTTP/2.0は今すごくよい状態
IIJ 大津さん
- GoogleやTwitterなどInternet大手が力をいれている
- HTTP/1.xと2.0の世界に住み分けが進むだろう
- 256バイト以上のHelloでバグる実装があるらしい
- ALPNはクライアントから送るデータが増えるのでイヤ
- ALPNのプロトコル選択は平文で見えてしまう
- 現場から不満たらたら
- CONTINUEフラグは先頭HEADERの見分けがつかず、困るので
- RST_STREAMを送ることで実現
- 圧縮というよりは差分
- Header-Compression-01アカンじゃん!
- でかいヘッダが来た時困る
- インデックスをなめるのでO(N^2)の計算量
- HPAC誕生!
- working setを作らない
- 逐次処理できるので、atomicになる
- 内容の食い違いが心配
- Hashで内容の差を確かめたい
- まだ仕様にはなってない
- SPDYとHTTP/2.0は共存できなそう
- ヘッダ構成が全然違う