{{위키데이터 속성 추적}}
{{IP스택}}
'''QUIC'''("퀵"으로 발음)은 범용 목적의<ref name="transport draft">{{cite IETF  | title = QUIC: A UDP-Based Multiplexed and Secure Transport  | draft = draft-ietf-quic-transport-22  | section = 1  | publisher = [[국제 인터넷 표준화 기구|IETF]]  }}</ref> [[전송 계층]]<ref name="LWN">{{웹 인용| url        = https://lwn.net/Articles/558826/  | title      = Connecting on the QUIC  | author     = Nathan Willis  | publisher  = Linux Weekly News  | accessdate = 2013-07-16  }}</ref> [[통신 프로토콜]]로서,
[[구글]]의 짐 로스킨드(Jim Roskind)가 처음 설계하였고,<ref name="QUIC Design Doc">{{웹 인용| url        = https://docs.google.com/document/d/1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34/edit  | title      = QUIC: Design Document and Specification Rationale  | publisher  = Jim Roskind, Chromium Contributor  }}</ref> 2012년 구현 및 적용되었으며,<ref name="Chromium Code Merging QUIC">{{웹 인용| url        = https://chromiumcodereview.appspot.com/11125002  | title      = First Chromium Code Landing: CL 11125002: Add QuicFramer and friends.  | accessdate = 2012-10-16  }}</ref> 2013년 실험 확대로서 공개 발표되었고,<ref name="chromium_announcement">{{웹 인용| url        = https://blog.chromium.org/2013/06/experimenting-with-quic.html  | title      = Experimenting with QUIC  | publisher  = Chromium Official Blog  | accessdate = 2013-07-16  }}</ref><ref name="Google Working on QUIC">{{웹 인용| url        = https://plus.google.com/u/0/100132233764003563318/posts/b36wVornPtD  | title      = QUIC, Google wants to make the web faster  | publisher  = François Beaufort, Chromium Evangelist  }}</ref><ref name="quic_youtube">{{웹 인용| url        = https://www.youtube.com/watch?v=hQZ-0mXFmk8  | title      = QUIC: next generation multiplexed transport over UDP  | publisher  = YouTube  | accessdate = 2014-04-04  }}</ref> [[국제 인터넷 표준화 기구]]에 기술되었다.<ref name="IETF QUIC Intro">{{웹 인용| url        = http://www.ietf.org/proceedings/88/slides/slides-88-tsvarea-10.pdf  | title      = QUIC: IETF-88 TSV Area Presentation  | publisher  = Jim Roskind, Google  | accessdate = 2013-11-07  }}</ref> 2015년 6월에 [[인터넷 드래프트]]로 제안된 후 2016년에 워킹 그룹이 설립되어 2021년 5월 [[RFC]] [https://datatracker.ietf.org/doc/html/rfc9000 9000] 으로 표준화되었다. QUIC는 [[구글 크롬]]에서부터 구글 서버에 이르는 모든 연결의 절반 이상에 사용된다.<ref name="TechCrunch" /> 크롬 이외에도 [[마이크로소프트 엣지]], [[모질라 파이어폭스]], [[사파리 (웹 브라우저)|사파리]] 등 현존하는 대부분의 브라우저에서 기본으로 QUIC를 사용한다.<ref>{{웹 인용|url=https://caniuse.com/http3|title= HTTP/3 protocol | Can I use... Support tables for HTML5, CSS3, etc}}</ref>

이름이 처음에 "Quick UDP Internet Connections"의 두문자로 제안되었으나,<ref name="QUIC Design Doc" /><ref name="IETF QUIC Intro" /> IETF는 QUIC라는 단어를 사용 시 두문자로 사용하지 않으며 단순히 프로토콜의 이름으로 호칭한다.<ref name="transport draft" />

QUIC은 [[전송 제어 프로토콜|TCP]]를 사용하는 연결 지향 [[웹 애플리케이션]]의 성능을 개선한다.<ref name="LWN" /><ref name="TechCrunch">{{웹 인용|url=https://techcrunch.com/2015/04/18/google-wants-to-speed-up-the-web-with-its-quic-protocol/|title=Google Wants To Speed Up The Web With Its QUIC Protocol|last=Lardinois|first=Frederic|website=TechCrunch|access-date=2016-10-25}}</ref> [[사용자 데이터그램 프로토콜]](UDP)를 경유하여 2개의 종단점 간 수많은 [[다중화 (통신)|다중화]] 연결을 확립함으로써 이를 달성한다. [[HTTP/2]]의 다중화 연결과 협력하여 동작하며 여러 데이터 스트림들이 개별적으로 모든 종단점에 도달할 수 있고 다른 스트림을 수반하는 [[패킷 손실]]에 독립적이다. 이와 대조적으로 [[전송 제어 프로토콜]](TCP)로 호스팅되는 HTTP/2는 어떠한 TCP 패킷이라도 지연되거나 소실될 경우 모든 다중화 스트림에 대해 [[헤드 오브 라인 블로킹]] 지연 문제가 발생한다.

QUIC의 2차적 목표는 [[혼잡 제어|혼잡]] 회피를 위해 각 방향에서 발생할 수 있는 연결 및 전송 [[네트워크 레이턴시|레이턴시]]와 [[대역폭 (컴퓨팅)|대역폭]]을 감소시키는 것이다. 또, 두 종단점의 [[혼잡 제어]] 알고리즘을 [[사용자 공간|커널 공간]]이 아닌 [[사용자 공간]] 안으로 배치시킴으로써 이 알고리즘을 더 빠르게 개선시킬 수 있다고 주장된다. 게다가 이 프로토콜은 오류 예측 시 [[전방 오류 정정]](FEC)과 함께 성능을 추가적으로 개선시킬 수 있으며 이는 프로토콜 발전의 다음 단계로 간주된다.

2015년 6월, QUIC 사양의 [[인터넷 드래프트]]가 표준화를 위해 [[국제 인터넷 표준화 기구]]에 제출되었다.<ref>{{웹 인용|url=https://www.infoq.com/news/2015/04/google-quic-ietf-standard|title=Google Will Propose QUIC As IETF Standard|website=InfoQ|access-date=2016-10-25}}</ref><ref>{{메일링 인용|url=https://www.ietf.org/mail-archive/web/i-d-announce/current/msg66052.html |title=I-D Action: draft-tsvwg-quic-protocol-00.txt |date=17 Jun 2015|mailing-list=i-d-announce}}</ref> QUIC 워킹 그룹은 2016년 설립되었다.<ref>{{웹 인용|url=https://datatracker.ietf.org/wg/quic/documents/|title=QUIC - IETF Working Group|last=|first=|date=|website=datatracker.ietf.org|access-date=2016-10-25}}</ref> 2018년 10월, IETF의 HTTP 및 QUIC 워킹 그룹은 전 세계 표준화 이전에 QUIC 경유 HTTP를 [[HTTP/3]]으로 호칭하기로 공동 결정하였다.<ref name=":0">{{뉴스 인용|url=https://www.zdnet.com/article/http-over-quic-to-be-renamed-http3/ |title=HTTP-over-QUIC to be renamed HTTP/3 |website=ZDNet |date=12 November 2018 |first=Catalin |last=Cimpanu}}</ref>

== 소스 코드 ==
{| class="wikitable sortable"
|+다음 QUIC 또는 gQUIC 구현체들은 소스 형태로 이용이 가능하다:
!구현체
!라이선스
!언어
!설명
|-
|[[크로미엄 (웹 브라우저)|Chromium]]
| {{Free}}
|C++
|This is the source code of the [[구글 크롬|Chrome web browser]] and the reference gQUIC implementation. It contains a standalone gQUIC and QUIC client and server programs that can be used for testing. [https://chromium.googlesource.com/chromium/src/net/+/master/quic Browsable source code]. This version is also the basis of [[라인 (소프트웨어)|LINE]]'s [https://github.com/line/stellite stellite] and Google's cronet.
|-
|[https://github.com/facebookincubator/mvfst QUIC Library (mvfst)]
| {{Free|[[MIT 허가서]]}}
|C++
|mvfst (Pronounced move fast) is a client and server implementation of IETF QUIC protocol in C++ by Facebook.
|-
|[https://github.com/litespeedtech/lsquic LiteSpeed QUIC Library (lsquic)]
| {{Free|[[MIT 허가서]]}}
|C
|This is the QUIC and [[HTTP/3]] implementation used by [[LiteSpeed Web Server]] and [https://www.openlitespeed.org/ OpenLiteSpeed].
|-
|[https://github.com/ngtcp2/ngtcp2 ngtcp2]
| {{Free|[[MIT 허가서]]}}
|C
|This is a QUIC library that's crypto library agnostic and works with OpenSSL or GnuTLS. For HTTP/3, it needs a separate library like [https://github.com/ngtcp2/nghttp3 nghttp3].
|-
|[https://github.com/cloudflare/quiche Quiche]
| {{Free|[[BSD 허가서]]}}
|Rust
|Socket-agnostic and exposes a C API for use in C/C++ applications.
|-
|[https://github.com/h2o/quicly quicly]
| {{Free|[[MIT 허가서]]}}
|C
|This library is the QUIC implementation for the [https://h2o.examp1e.net/ H2O web server].
|-
|[https://github.com/lucas-clemente/quic-go quic-go]
| {{Free|[[MIT 허가서]]}}
|Go
|This library provides QUIC support in [[:en:Caddy (web server)|Caddy web server]]. Client functionality is also available.
|-
|[https://github.com/djc/quinn Quinn]
| {{Free|[[아파치 라이선스]]}}
|Rust
|
|-
|[https://github.com/mozilla/neqo Neqo]
| {{Free|[[아파치 라이선스]]}}
|Rust
|This implementation from [[모질라]] is planned to be integrated in Necko, a network library used in the Firefox web browser
|-
|[https://github.com/aiortc/aioquic aioquic]
| {{Free|[[BSD 허가서]]}}
|Python
|This library features an I/O-free API suitable for embedding in both clients and servers.
|-
|[https://github.com/private-octopus/picoquic picoquic]
| {{Free|[[BSD 허가서]]}}
|C
|A minimal implementation of QUIC aligned with the IETF specifications
|- 
|[https://pquic.org pquic]
| {{Free|[[MIT 허가서]]}}
|C
|An extensible QUIC implementation that includes an eBPF virtual machine that is able to dynamically load extensions as plugins
|-
|[[MsQuic]]
| {{Free|[[MIT 허가서]]}}
|C
|A cross platform QUIC implementation from [[마이크로소프트]] designed to be a general purpose QUIC library.
|-
|[https://github.com/NTAP/quant QUANT]
| {{Free|[[BSD 허가서]]}}
|C
|Quant supports traditional POSIX platforms (Linux, MacOS, FreeBSD, etc.) as well as embedded systems.
|-
|[https://github.com/kazu-yamamoto/quic quic]
| {{Free|[[BSD 허가서]]}}
|Haskell
|This package implements QUIC based on Haskell lightweight threads.
|}

== 같이 보기 ==
* [[CoAP]]
* [[데이터그램 혼잡 제어 프로토콜]] (DCCP)
* [[데이터그램 전송 계층 보안]] (DTLS)
* [[HTTP/3]]
* [[LEDBAT]] (Low Extra Delay Background Transport)
* [[다목적 처리 프로토콜]] (MTP/IP) – an alternative to QUIC from Data Expedition, Inc.
* [[SPDY]]
* [[스트림 제어 전송 프로토콜]] (SCTP UDP Encapsulation; RFC 6951)

== 각주 ==
{{각주}}

== 외부 링크 ==
* [https://tools.ietf.org/html/draft-ietf-quic-transport-27 IETF QUIC Specification, Draft 27]
* [[크로미엄 (웹 브라우저)|Chromium]]: [https://www.chromium.org/quic QUIC, a multiplexed stream transport over UDP]
* [https://docs.google.com/document/d/1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV-ev2jRFUoVD34/edit QUIC: Design Document and Specification Rationale], Jim Roskind's original document (2012/2013)
* [[:en:Daniel Stenberg]]: [https://http3-explained.haxx.se/en/ HTTP/3 explained]
* [[LWN.net|Linux Weekly News]]: [https://lwn.net/Articles/558826/ Connecting on the QUIC] (2013)
* [https://www.ietf.org/proceedings/88/slides/slides-88-tsvarea-10.pdf QUIC:], IETF-88 TSV Area Presentation (2013-11-07)
* Chromium Blog: [https://blog.chromium.org/2013/06/experimenting-with-quic.html Experimenting with QUIC] (2013)
* [https://www.youtube.com/watch?v=hQZ-0mXFmk8 QUIC: next generation multiplexed transport over UDP] (Google Developers, 2014)
* [https://c3lab.poliba.it/images/3/3b/QUIC_SAC15.pdf HTTP over UDP: an Experimental Investigation of QUIC]
* [https://multipath-quic.org/ Multipath QUIC] (extension to QUIC)
* [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7867726 Innovating Transport with QUIC: Design Approaches and Research Challenges] (2017)

[[분류:전송 계층 프로토콜]]
[[분류:인터넷 프로토콜]]
[[분류:컴퓨터 네트워킹]]