Communication protocol | |
Purpose | General purpose |
---|---|
Developer(s) | IETF, Google |
Introduction | October 12, 2012 |
Based on | IP, normally layered with UDP |
OSI layer | Transport layer |
RFC(s) | RFC 9000, RFC 8999, RFC 9001, RFC 9002 |
Website | quicwg |
Internet protocol suite |
---|
Application layer |
Transport layer |
Internet layer |
Link layer |
QUIC (/kwɪk/) is a general-purpose transport layer network protocol initially designed by Jim Roskind at Google.[1][2][3] It was first implemented and deployed in 2012[4] and was publicly announced in 2013 as experimentation broadened. It was also described at an IETF meeting.[5][6][7][8] The Chrome web browser,[9] Microsoft Edge,[10][11] Firefox,[12] and Safari all support it.[13] In Chrome, QUIC is used by more than half of all connections to Google's servers.[9]
Although its name was initially proposed as the acronym for "Quick UDP Internet Connections", in IETF's use of the word, QUIC is not an acronym; it is simply the name of the protocol.[3][8][1] QUIC improves performance of connection-oriented web applications that before QUIC used Transmission Control Protocol (TCP).[2][9] It does this by establishing a number of multiplexed connections between two endpoints using User Datagram Protocol (UDP), and is designed to obsolete TCP at the transport layer for many applications, thus earning the protocol the occasional nickname "TCP/2".[14]
QUIC works hand-in-hand with HTTP/3's multiplexed connections, allowing multiple streams of data to reach all the endpoints independently, and hence independent of packet losses involving other streams. In contrast, HTTP/2 hosted on TCP can suffer head-of-line-blocking delays if multiple streams are multiplexed on a TCP connection, and any of the TCP packets on that connection are delayed or lost.
QUIC's secondary goals include reduced connection and transport latency, and bandwidth estimation in each direction to avoid congestion. It also moves congestion control algorithms into the user space at both endpoints, rather than the kernel space, which it is claimed[by whom?] will allow these algorithms to improve more rapidly. Additionally, the protocol can be extended with forward error correction (FEC) to further improve performance when errors are expected, and this is seen as the next step in the protocol's evolution. It has been designed with declared aim to avoid protocol ossification so that it remains evolvable.
In June 2015, an Internet Draft of a specification for QUIC was submitted to the IETF for standardization.[15][16] A QUIC working group was established in 2016.[17] In October 2018, the IETF's HTTP and QUIC Working Groups jointly decided to call the HTTP mapping over QUIC "HTTP/3" in advance of making it a worldwide standard.[18] In May 2021, the IETF standardized QUIC in RFC 9000, supported by RFC 8999, RFC 9001 and RFC 9002.[19] DNS-over-QUIC is another application.
rfc9000
was invoked but never defined (see the help page).LWN
was invoked but never defined (see the help page).QUIC Design Doc
was invoked but never defined (see the help page).Chromium Code Merging QUIC
was invoked but never defined (see the help page).chromium_announcement
was invoked but never defined (see the help page).Google Working on QUIC
was invoked but never defined (see the help page).quic_youtube
was invoked but never defined (see the help page).IETF QUIC Intro
was invoked but never defined (see the help page).{{cite web}}
: CS1 maint: numeric names: authors list (link)
safari16
was invoked but never defined (see the help page).Call it TCP/2. One More Time.
was invoked but never defined (see the help page).