QUIC is a new multiplexed transport built on top of UDP. The overall goal is to reduce latency and eliminate head-of-line blocking compared to that of TCP.
The QUIC transport protocol has several features that are desirable in a transport for HTTP
- Reliable, multiplexed transport over UDP
- Encrypted
- Stream multiplexing
- Per-stream flow
- Reduced Latency
- Runs in user-space
- Open sourced in Chromium
The Internet Engineering Task Force (IETF) has announced that the third official version of HyperText Transfer Protocol (HTTP/3) will not use TCP, instead, it will run over the QUIC protocol.
HTTP/3 inheriting from HTTP/2 is aimed at taking advantage of QUIC’s features.
The QUIC project started as an alternative to TCP+TLS+HTTP/2, with the goal of improving user experience, particularly page load times.
QUIC uses the concept of streams. When each resource is assigned an individual conceptual flow, the transport layer may know that when a packet is lost, subsequent packets can still be used if they contain data from another resource that was not in the lost packet.
A connection in QUIC is a single chain between two QUIC endpoints. The connection establishment combines version negotiation with the cryptographic and transport handshakes to reduce connection establishment latency.
With this method, every exchange will be encrypted and that will be the default behaviour.
However there are a few drawbacks of this protocol. Performance can be affected by attacks of the like Server Config Replay Attack. There is an interesting study about this by Robert Lychev and others here.
The modern web browsers seem to be ready for this transition since Chrome and Opera already have it implemented.
Stay tuned for more on QUIC! Keep Learning!