HTTP/3の今と将来
第71回 HTML5とか勉強会
@flano_yuki
マスコット: https://github.com/quicwg/wg-materials/blob/main/ietf103/http.pdf
HTTP/3の今と将来
第71回 HTML5とか勉強会
@flano_yuki
自己紹介
今日の参加者は?
�多くの人にHTTP/3の面白さをお伝えしたいです!�ネットワーク的な話もありますが�伝わるように気をつけて頑張ります!
HTTP/3のいま
Chromeのデベロッパーツール
https://blog.cloudflare.com/cloudflare-view-http3-usage/
HTTP/3について
セマンティクス, QUIC, 効率化の仕組み
HTTP/3とセマンティクス
HTTP/3はHTTPメッセージ(リクエスト/レスポンス)をより効率よく送信できる
https://en.wikipedia.org/wiki/HTTP/3
=> 送受信を担うブラウザ・プロキシが対応すればその上で動くアプリケーションは意識する必要がない (URLも変わらず https://~)
ブラウザ
Webサーバ
Javascript
Web�アプリケーション
HTTP/3
HTTP/2
GETリクエスト�user-agent: hogehoge
accept-encoding: gzip, deflate
ステータス 200�set-cookie: key=value
server: web-server
HTTP/3とQUIC
HTTP/3は、下位層に “QUIC” というプロトコルを用いる。
QUICは2021年に標準化された新しいトランスポートプロトコル�TCPやTLSの機能を提供する
この新しいQUICというプロトコルを使い�HTTPメッセージのやり取りの効率を上げる
https://en.wikipedia.org/wiki/HTTP/3
QUIC の 名称
注意: Google QUICとIETF QUICは別物。互換性はない。�ただし、Google QUICは過去のもので、一般にIETF QUICが利用される
QUIC の 凄いところ
Head-of-Line-Blocking
どういうことか見ていきましょう
HTTPでQUICを使うメリット (背景)
Client
Server
HTTP/2の
送受信イメージ
TCP
フレーム
HTTP/2の通信の例 (背景)
画像Aのリクエスト
画像Bのリクエスト
画像Aのレスポンス
画像Bのレスポンス
* HTTP/2のメッセージはフレームと呼ばれ、一つ以上のフレームをTCPパケットに格納する
Client
Server
HTTP/2の場合
TCP
OS
App
OS
App
OSがパケットを回復するまで後続のパケットを処理できない
(赤の処理まで待たされる)
フレーム
データの処理順が守る
Head-of-line-blockingの例
このフレームを運ぶ�パケットがロスした
Client
Server
HTTP/3の場合
QUIC
OS
App
OS
App
UDPなので、Appにパケットが渡される。
青の処理はパケット再送までまつが、後続の赤の処理はできる
フレーム
Head-of-line-blockingの例
このフレームを運ぶ�パケットがロスした
届いたパケットから処理する
Priority
Client
Server
例1:
例2
リクエストヘッダで指定(rfc9218) | priorityヘッダ。例: priority = u=5, i |
具体的にはリクエストヘッダで伝えられる。ブラウザがよしなにやる。�
(W3CのPriority Hintsの仕様でfetch API, DOMにfetchpriorityが付けられる?
例1: 赤と青のリソースを、同じ優先度でレスポンスしてほしい
例2: 赤を早くレスポンして欲しい
その他
辞書データ(静的テーブルの例)
文字 | bit表現 | 長さ |
a | 00011 | 5bit |
q | 1110110 | 7bit |
@ | 1111111111010 | 13bit |
出現頻度に合わせた�ハフマンコードの例
その他
Link: <./styles.css>; rel=preload
103レスポンス
Client
Server
GET リクエスト
200レスポンス
100番台は200~500より前に追加で返せる
HTTP/3 (QUIC) の疎通性
実際どれくらいなの?�というのは難しいところ
HTTP/3の将来
HTTP/3の将来
DNS HTTPS レコード
今まで、HTTP/3で初めて接続する際は
その手間なくサーバがHTTP/3に対応してることを知りたい。
�DNSレコードで取得できるようにする (HTTPS RR)
Chromeや、Safariが対応をしている
https://dns.google/query?name=google.com&rr_type=https
WebTransport
25
(WebRTC)
WebTransport (例)
https://www.w3.org/TR/webtransport/#examples
HTTP/3の将来
HTTP/3の将来
おわりに
今回のHTTP/3についての説明はまだまだほんの一部です
もっと話を聞きたい方はお気軽にお声がけください