HTTP/3

HTTP over QUIC

HTTP

1.0

1.1

2.0

Blocking Request

TCP

Keep Alive

Host (Header)

Cache Control

Range

Multiplexing

Server Push

Header Compression

Binary Framing

Multiplexing

Open

Close

Open

Close

Open

Close

Case: Request Multiple Resources

HTTP 1.0

HTTP 1.1

Keep Alive

Open

Close

HTTP 2.0

Multiplexing

Header Compression

HTTP/3

Connection Migration

UDP

Force TLS

Transport Layer Protocol

TCP vs UDP

TCP Connection

SYN

SYN+ACK

ACK

HTTP

SYN

SYN+ACK

ACK

Client Hello

Server Hello

Server Cert

Client Cert

Verify Server Cert

Verify Client Cert

Key Exchange

(RSA, DH)

TLS

UDP Connection

UDP

No more HOL Blocking

Connection Migration

IP: x.x.x.150

IP: x.x.y.115

No handshake when base network changed

Between different cell sites or WiFi Hotspot

Usage

Implements

Cloudflare

nginx

server {
  listen 443 ssl;              # TCP listener for HTTP/1.1
  listen 443 http3 reuseport;  # UDP listener for QUIC+HTTP/3

  ssl_protocols       TLSv1.3; # QUIC requires TLS 1.3
  ssl_certificate     ssl/www.example.com.crt;
  ssl_certificate_key ssl/www.example.com.key;

  add_header Alt-Svc 'quic=":443"'; # Advertise that QUIC is available
  add_header QUIC-Status $quic;     # Sent when QUIC was used
}

Danke

HTTP/3

By Chia Yu Pai