Quick UDP Internet Connections (QUIC) is a general-purpose transport layer protocol designed to replace the Transmission Control Protocol (TCP) through its flexibility, built-in security, fewer performance issues, and faster adoption rate. Originally developed by Google, QUIC uses User Datagram Protocol (UDP) as the low‑level transport mechanism for moving packets between client and server. Notably, QUIC also incorporates Transport Layer Security (TLS) as an integral component, not as an additional layer like HTTP/1.1 and HTTP/2.
HTTP/3, based on QUIC, is the third major version of the Hypertext Transfer Protocol (HTTP) and was adopted as an IETF standard in 2022. QUIC+HTTP/3 were created to solve inherent limitations with TCP that constrain performance and user experience.
APIs are the “public face” of applications, revealing the functions they perform and the information they can provide, and defining the proper format of requests. When a developer creates and exposes the API for an application, it allows other applications to communicate with it.
In many cases, APIs save valuable developer time because they make commonly used functions readily available. Rather than duplicating the functionality of an existing application, developers can integrate the functionality into their applications by making calls to the existing application’s API.
High-level overview of HTTP transport stacks
The goal of QUIC is to provide a high‑performance, high‑reliability, and high‑security transport protocol for HTTP/3 (although QUIC is also suitable for non‑HTTP traffic).
If QUIC is entirely new to you, we recommend watching the introductory video below.
UDP is a simple, lightweight protocol that does not need a complex three-way handshake like TCP to establish the first connection. This simplicity makes UDP fast and connectionless, but it also means that it lacks the features essential for reliable and secure communication when compared to TCP.
QUIC is unique because it merges the benefits of both UDP and TCP protocols. While it is connectionless and leverages UDP for the low-level transport protocol to reduce the connection and transport delays, it is connection-oriented in the higher layers due to its reimplementation of TCP’s connection establishment and loss detection features which guarantee packet delivery. It handles the tasks of identifying lost data and completing re-transmissions to ensure a seamless user experience.
QUIC also incorporates TLS as an integral component, not as an additional layer as is the case with HTTP/1.1 and HTTP/2. This incorporation ensures the messages are encrypted by default.
The diagram below depicts the basic anatomy of a QUIC network. As seen in the diagram, the logical objects that contain HTTP/3 requests, responses, or any application data are QUIC streams. For transmission between network endpoints, QUIC streams are wrapped inside multiple logical layers.
Anatomy of a QUIC stream
Starting from the outside in, the logical layers and objects are:
A TLS handshake provides a secure connection between client and server. The encryption provided by QUIC requires TLS v1.3. As seen in the diagram below, QUIC keeps the TLS “Content Layer” which provides the cryptographic keys but replaces the “Record Layer” with its own transport mechanism.
QUIC also relies on TLS for authentication and negotiation of parameters that are critical to security and performance. Rather than a strict layering, the two protocols cooperate: QUIC uses the TLS handshake to establish a secure connection while TLS uses the reliability, ordered delivery, and record layer provided by QUIC.
At a high level, there are two main interactions between the TLS and QUIC components:
QUIC TLS is a variant of TLS that is designed specifically for the QUIC protocol. Currently there are two options for users looking for HTTP/3 support in QUIC TLS:
QUIC+HTTP/3 aim to enhance the performance of web applications by reducing latency and improving data delivery over unreliable networks. Their advantages include:
Explore the resources below to learn about NGINX’s QUIC+HTTP/3 implementation and other ways you can use QUIC+HTTP/3 for faster and more efficient communication.