QUIC

위키백과, 우리 모두의 백과사전.

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

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

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

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

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

소스 코드[편집]

다음 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) MIT 허가서 C++ mvfst (Pronounced move fast) is a client and server implementation of IETF QUIC protocol in C++ by Facebook.
LiteSpeed QUIC Library (lsquic) MIT 허가서 C This is the QUIC and HTTP/3 implementation used by LiteSpeed Web Server and OpenLiteSpeed.
ngtcp2 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 nghttp3.
Quiche BSD 허가서 Rust Socket-agnostic and exposes a C API for use in C/C++ applications.
quicly MIT 허가서 C This library is the QUIC implementation for the H2O web server.
quic-go MIT 허가서 Go This library provides QUIC support in Caddy web server. Client functionality is also available.
Quinn 아파치 라이선스 Rust
Neqo 아파치 라이선스 Rust This implementation from 모질라 is planned to be integrated in Necko, a network library used in the Firefox web browser
aioquic BSD 허가서 Python This library features an I/O-free API suitable for embedding in both clients and servers.
picoquic BSD 허가서 C A minimal implementation of QUIC aligned with the IETF specifications
pquic MIT 허가서 C An extensible QUIC implementation that includes an eBPF virtual machine that is able to dynamically load extensions as plugins
MsQuic MIT 허가서 C A cross platform QUIC implementation from 마이크로소프트 designed to be a general purpose QUIC library.
QUANT BSD 허가서 C Quant supports traditional POSIX platforms (Linux, MacOS, FreeBSD, etc.) as well as embedded systems.
quic BSD 허가서 Haskell This package implements QUIC based on Haskell lightweight threads.

같이 보기[편집]

각주[편집]

  1. QUIC: A UDP-Based Multiplexed and Secure Transport. IETF. sec. 1. I-D draft-ietf-quic-transport-22. https://tools.ietf.org/html/draft-ietf-quic-transport-22#section-1. 
  2. Nathan Willis. “Connecting on the QUIC”. Linux Weekly News. 2013년 7월 16일에 확인함. 
  3. “QUIC: Design Document and Specification Rationale”. Jim Roskind, Chromium Contributor. 
  4. “First Chromium Code Landing: CL 11125002: Add QuicFramer and friends.”. 2012년 10월 16일에 확인함. 
  5. “Experimenting with QUIC”. Chromium Official Blog. 2013년 7월 16일에 확인함. 
  6. “QUIC, Google wants to make the web faster”. François Beaufort, Chromium Evangelist. 
  7. “QUIC: next generation multiplexed transport over UDP”. YouTube. 2014년 4월 4일에 확인함. 
  8. “QUIC: IETF-88 TSV Area Presentation” (PDF). Jim Roskind, Google. 2013년 11월 7일에 확인함. 
  9. Lardinois, Frederic. “Google Wants To Speed Up The Web With Its QUIC Protocol”. 《TechCrunch》. 2016년 10월 25일에 확인함. 
  10. “HTTP/3 protocol”.  다음 글자 무시됨: ‘ Can I use... Support tables for HTML5, CSS3, etc’ (도움말)
  11. “Google Will Propose QUIC As IETF Standard”. 《InfoQ》. 2016년 10월 25일에 확인함. 
  12. “I-D Action: draft-tsvwg-quic-protocol-00.txt”. 《i-d-announce》 (메일링 리스트). 2015년 6월 17일. 
  13. “QUIC - IETF Working Group”. 《datatracker.ietf.org》. 2016년 10월 25일에 확인함. 
  14. Cimpanu, Catalin (2018년 11월 12일). “HTTP-over-QUIC to be renamed HTTP/3”. 《ZDNet》. 

외부 링크[편집]