HTTP3なるもの『PART1』
HTTP/3なるもの『PART1』
が出るらしい。いつか勉強しようと思っていたので今日やることにした。
興味があるところだけ見ることにする。
理解できたことをメモ・雑に書きます
間違いがあればご指摘いただきますととてもありがたいです。
思ったことを書いているところ
参考にさせて頂いた本
https://http3-explained.haxx.se/ja/
そもそもHTTP2とはなにか
・TCPで動作する
クライアントとサーバ間とのコネクションに複数のストリームがあり、並行してやり取りを行えるというもの。
それ以前のHTTP1.1では1件のリクエストに対して複数のレスポンスを返していたがリクエストの順番で取り寄せることになっていた。
問題点
プロトコルとしてTCPを使用しているため通信の途中でパケットの損失があった場合それ以降のやり取りが止まってしまう。
複数のストリームを使っているがhtmlやcssの取り寄せに 1つのストリームを使っているだけで htmlを分割して複数のストリームで送るわけではない。
HTTP3とはなにか
QUICというプロトコルを使用した通信のこと。UDPで動作する。
QUITではTCPにある3ウェイハンドシェイクのようにコネクションのセットアップが存在する。
このコネクションで2つの異なるストリームをセットアップする場合、独立したものとして扱われ、1つのストリーム内でパケットロスが起こってもそちらだけで再送制御できる。
セキュリティ面
QUICでは平文版のプロトコルが存在しない。
もちろんコネクションを確立する際に行われるハンドシェイクのパケットは平文のままだ
ハンドシェイク
QUICのハンドシェイクは時間短縮のために0-RTTハンドシェイク
と1-RTTハンドシェイク
を使用している。
www.slideshare.net
※ QUICではTLS messages
のみを利用しTLS records
は利用しないことになっている。
OpenSSLはまだ対応できておらず、追加の要望もないとのこと
クライアントの負荷
QUICを膨大なトラフィックに適用させた場合HTTP/2 over TLS
に比べ約2倍のCPUが必要になる。
これはUDP
はTCPやTLS
のように通信への最適化がされていないだけのようだ。
つまりこれから作っていけばいいらしい。
開発者の人はチャンスですね(白目)
続く