Open2

QuicとHTTP3

shimakaze_softshimakaze_soft

Quicとは

QUIC は、 インターネットのデファクトスタンダードでもあるTCPの代替を目指して、Google によって実験的に開発された UDP上で動作するトランスポート層プロトコルのこと。

HTTP/3とは

Quicを使用したHTTPプロトコルのことで、HTTP/2の次の規格になるもの。
以下のような機能を備えている。

  • 最初の接続時・再接続時の通信削減
  • TLS1.3 暗号化が必須
  • パケットロス時の効率化
  • ほとんどのデータが暗号化される
  • UDPベースのQUICが使われている(ポートは443という決まりはない)

一番わかりやすい資料

https://blog.redbox.ne.jp/http3-quic.html

shimakaze_softshimakaze_soft

HTTP/3の特徴

HTTP/2 と比較すると、HTTP/2 が TCP を使うのに対して、HTTP/3 は UDP を使った通信を行う。

TCP も UDP のどちらも通信をするためのルールで、HTTP/3 は、速度を向上させるための新しいルール。

HTTP/2 はリクエストの多重化と優先度制御を行うことで、HTTP/1 よりも高速化できるようになっているが、HTTP/3 では、リクエストの多重化と暗号化を「QUIC」が行い、ハンドシェイクは TLS で行う構造になっている。

QUIC では、TLS 1.3 による暗号化が必須になるため、HTTP/3 による通信では暗号化されていない通信は存在しなくなる。

初回接続の大幅削減

これはかなりでかい。
TCP通信は最初に3 way handshakeというものを行う。名前の通り3回通信を行います。
更にはhttpsのTCP+TLS(暗号化)通信となると、TLSで2回通信が発生して、最低5回もの通信が発生する。
もしこの通信の途中で何らかの問題で通信が切れれば、また最初からやり直しとなるのがTCPのルールでもありました。

QUICはUDPを採用して、TLSを統合していることから、5回の通信をなんと1回まで削減した。

tcp_tcp+tls_quic

出典: https://blog.chromium.org/2015/04/a-quic-update-on-googles-experimental.html