HTTP/1.1
performance problems
- serialized request (one after one)
HTTP/2
HTTP/2 ([HTTP/2]) introduced a binary framing and multiplexing layer to improve latency without modifying the transport layer.
- binary protocol
- multiplexing
- traffic control
- data stream priority
- header compression
- server push
frames
- DATA
- HEADERS
- PRIORITY
- RST_STREAM
- SETTINGS
- PUSH_PROMISE
- PING
- GOAWAY
- WINDOW_UPDATE
- CONTINUATION
- ALTSVC
- ORIGIN
- CACHE_DIGEST
streams
multiplexing
HTTP/3
Why Do We Need HTTP/3
- The Real Problems with HTTP/2
- TCP is the main protocol that provides crucial services such as reliability and in-order delivery to other protocols such as HTTP.
- The downside of TCP
- QUIC is needed because TCP, which has been around since the early days of the Internet, was not really built with maximum efficiency in mind.
- TCP also takes a full network round trip to complete before anything else can be done on a connection.
- TCP sees all of the data it transports as a single “file” or byte stream, even if we’re actually using it to transfer several files at the same time.
What is QUIC
- QUIC is a generic transport protocol (much like TCP)
- QUIC 本可以替代 TCP,成为新一代的基础协议;但因为现存的绝大部分互联网设备基本上不会动态更新,导致新的协议很难推广,于是才利用起已知的 UDP 协议,封装成了上层协议
- We can call QUIC as TCP/2 (a much advanced version of TCP)
The Big Changes
- QUIC deeply integrates with TLS - 协议内置 TLS
- QUIC supports multiple independent byte streams - 多路 Stream
- QUIC uses connection IDs - 4 元组变动时,无需重新建立连接
- QUIC uses frames - 数据包可以做到服务端与客户端自定义格式
- TLS Comparison
- Package Comparison
References
- https://datatracker.ietf.org/doc/html/rfc9112 - HTTP/1.1
- https://datatracker.ietf.org/doc/html/rfc9113 - HTTP/2
- https://datatracker.ietf.org/doc/html/rfc9114 - HTTP/3
- https://datatracker.ietf.org/doc/html/rfc9000 - QUIC
- HTTP/3 From A To Z: Core Concepts
- HTTP/3 Performance Features
- Practical HTTP/3 Deployment Options