QUIC

QUIC("퀵"으로 발음)은 범용 목적의 전송 계층 통신 프로토콜로서,
구글의 짐 로스킨드(Jim Roskind)가 처음 설계하였고, 2012년 구현 및 적용되었으며, 2013년 실험 확대로서 공개 발표되었고, 국제 인터넷 표준화 기구에 기술되었다. 2015년 6월에 인터넷 드래프트로 제안된 후 2016년에 워킹 그룹이 설립되어 2021년 5월 RFC 9000 으로 표준화되었다. QUIC는 구글 크롬에서부터 구글 서버에 이르는 모든 연결의 절반 이상에 사용된다. 크롬 이외에도 마이크로소프트 엣지, 모질라 파이어폭스, 사파리 등 현존하는 대부분의 브라우저에서 기본으로 QUIC를 사용한다.

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

QUIC은 TCP를 사용하는 연결 지향 웹 애플리케이션의 성능을 개선한다. 사용자 데이터그램 프로토콜(UDP)를 경유하여 2개의 종단점 간 수많은 다중화 연결을 확립함으로써 이를 달성한다. HTTP/2의 다중화 연결과 협력하여 동작하며 여러 데이터 스트림들이 개별적으로 모든 종단점에 도달할 수 있고 다른 스트림을 수반하는 패킷 손실에 독립적이다. 이와 대조적으로 전송 제어 프로토콜(TCP)로 호스팅되는 HTTP/2는 어떠한 TCP 패킷이라도 지연되거나 소실될 경우 모든 다중화 스트림에 대해 헤드 오브 라인 블로킹 지연 문제가 발생한다.

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

2015년 6월, QUIC 사양의 인터넷 드래프트가 표준화를 위해 국제 인터넷 표준화 기구에 제출되었다. QUIC 워킹 그룹은 2016년 설립되었다. 2018년 10월, IETF의 HTTP 및 QUIC 워킹 그룹은 전 세계 표준화 이전에 QUIC 경유 HTTP를 HTTP/3으로 호칭하기로 공동 결정하였다.

 소스 코드 
+다음 QUIC 또는 gQUIC 구현체들은 소스 형태로 이용이 가능하다:구현체라이선스언어설명Chromium 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. Browsable source code. This version is also the basis of LINE's stellite and Google's cronet.QUIC Library (mvfst) C++mvfst (Pronounced move fast) is a client and server implementation of IETF QUIC protocol in C++ by Facebook.LiteSpeed QUIC Library (lsquic) CThis is the QUIC and HTTP/3 implementation used by LiteSpeed Web Server and OpenLiteSpeed.ngtcp2 CThis is a QUIC library that's crypto library agnostic and works with OpenSSL or GnuTLS. For HTTP/3, it needs a separate library like nghttp3.Quiche RustSocket-agnostic and exposes a C API for use in C/C++ applications.quicly CThis library is the QUIC implementation for the H2O web server.quic-go GoThis library provides QUIC support in Caddy web server. Client functionality is also available.Quinn RustNeqo RustThis implementation from 모질라 is planned to be integrated in Necko, a network library used in the Firefox web browseraioquic PythonThis library features an I/O-free API suitable for embedding in both clients and servers.picoquic CA minimal implementation of QUIC aligned with the IETF specificationspquic CAn extensible QUIC implementation that includes an eBPF virtual machine that is able to dynamically load extensions as pluginsMsQuic CA cross platform QUIC implementation from 마이크로소프트 designed to be a general purpose QUIC library.QUANT CQuant supports traditional POSIX platforms (Linux, MacOS, FreeBSD, etc.) as well as embedded systems.quic HaskellThis 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)

 각주 

 외부 링크 
 IETF QUIC Specification, Draft 27
 Chromium: QUIC, a multiplexed stream transport over UDP
 QUIC: Design Document and Specification Rationale, Jim Roskind's original document (2012/2013)
 :en:Daniel Stenberg: HTTP/3 explained
 Linux Weekly News: Connecting on the QUIC (2013)
 QUIC:, IETF-88 TSV Area Presentation (2013-11-07)
 Chromium Blog: Experimenting with QUIC (2013)
 QUIC: next generation multiplexed transport over UDP (Google Developers, 2014)
 HTTP over UDP: an Experimental Investigation of QUIC
 Multipath QUIC (extension to QUIC)
 Innovating Transport with QUIC: Design Approaches and Research Challenges (2017)

분류:전송 계층 프로토콜
분류:인터넷 기반 프로토콜
분류:컴퓨터 네트워킹
분류:2012년 개설된 인터넷 자산