틀:위키데이터 속성 추적 틀:IP스택 QUIC("퀵"으로 발음)은 범용 목적의[1] 전송 계층[2] 통신 프로토콜로서, 구글의 짐 로스킨드(Jim Roskind)가 처음 설계하였고,[3] 2012년 구현 및 적용되었으며,[4] 2013년 실험 확대로서 공개 발표되었고,[5][6][7] 국제 인터넷 표준화 기구에 기술되었다.[8] 여전히 인터넷 드래프트 상태이지만 QUIC는 구글 크롬에서부터 구글 서버에 이르는 모든 연결의 절반 이상에 사용된다.[9] 마이크로소프트 엣지[10] 모질라 파이어폭스[11]가 이를 지원하되 이를 기본값으로 활성화해두지는 않은 반면 사파리는 기본값으로 QUIC를 활성화하고 있다.[12]
이름이 처음에 "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 사양의 인터넷 드래프트가 표준화를 위해 국제 인터넷 표준화 기구에 제출되었다.[13][14] QUIC 워킹 그룹은 2016년 설립되었다.[15] 2018년 10월, IETF의 HTTP 및 QUIC 워킹 그룹은 전 세계 표준화 이전에 QUIC 경유 HTTP를 HTTP/3으로 호칭하기로 공동 결정하였다.[16]
소스 코드[편집 | 원본 편집]
구현체 | 라이선스 | 언어 | 설명 |
---|---|---|---|
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. Browsable source code. This version is also the basis of LINE's stellite and Google's cronet. |
QUIC Library (mvfst) | 틀:Free | C++ | mvfst (Pronounced move fast) is a client and server implementation of IETF QUIC protocol in C++ by Facebook. |
LiteSpeed QUIC Library (lsquic) | 틀:Free | C | This is the QUIC and HTTP/3 implementation used by LiteSpeed Web Server and OpenLiteSpeed. |
ngtcp2 | 틀:Free | 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 | 틀:Free | Rust | Socket-agnostic and exposes a C API for use in C/C++ applications. |
quicly | 틀:Free | C | This library is the QUIC implementation for the H2O web server. |
quic-go | 틀:Free | Go | This library provides QUIC support in Caddy web server. Client functionality is also available. |
Quinn | 틀:Free | Rust | |
Neqo | 틀:Free | Rust | This implementation from 모질라 is planned to be integrated in Necko, a network library used in the Firefox web browser |
aioquic | 틀:Free | Python | This library features an I/O-free API suitable for embedding in both clients and servers. |
picoquic | 틀:Free | C | A minimal implementation of QUIC aligned with the IETF specifications |
pquic | 틀:Free | C | An extensible QUIC implementation that includes an eBPF virtual machine that is able to dynamically load extensions as plugins |
MsQuic | 틀:Free | C | A cross platform QUIC implementation from 마이크로소프트 designed to be a general purpose QUIC library. |
QUANT | 틀:Free | C | Quant supports traditional POSIX platforms (Linux, MacOS, FreeBSD, etc.) as well as embedded systems. |
quic | 틀:Free | 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)
각주[편집 | 원본 편집]
각주
- ↑ 1.0 1.1 틀:Cite IETF
- ↑ 2.0 2.1 Nathan Willis. “Connecting on the QUIC”. Linux Weekly News. 2013년 7월 16일에 확인함.
- ↑ 3.0 3.1 “QUIC: Design Document and Specification Rationale”. Jim Roskind, Chromium Contributor.
- ↑ “First Chromium Code Landing: CL 11125002: Add QuicFramer and friends.”. 2012년 10월 16일에 확인함.
- ↑ “Experimenting with QUIC”. Chromium Official Blog. 2013년 7월 16일에 확인함.
- ↑ “QUIC, Google wants to make the web faster”. François Beaufort, Chromium Evangelist.
- ↑ “QUIC: next generation multiplexed transport over UDP”. YouTube. 2014년 4월 4일에 확인함.
- ↑ 8.0 8.1 “QUIC: IETF-88 TSV Area Presentation” (PDF). Jim Roskind, Google. 2013년 11월 7일에 확인함.
- ↑ 9.0 9.1 Lardinois, Frederic. “Google Wants To Speed Up The Web With Its QUIC Protocol”. 《TechCrunch》. 2016년 10월 25일에 확인함.
- ↑ Christopher Fernandes (2018년 4월 3일). “Microsoft to add support for Google's QUIC fast internet protocol in Windows 10 Redstone 5”. 2020년 5월 8일에 확인함.
- ↑ “How to enable HTTP3 in Chrome / Firefox / Safari”. 《bram.us》. 2020년 4월 8일.
- ↑ “Release Notes for Safari Technology Preview 104”. 《WebKit.org》. 2020년 4월 8일.
- ↑ “Google Will Propose QUIC As IETF Standard”. 《InfoQ》. 2016년 10월 25일에 확인함.
- ↑ 틀:메일링 인용
- ↑ “QUIC - IETF Working Group”. 《datatracker.ietf.org》. 2016년 10월 25일에 확인함.
- ↑ Cimpanu, Catalin (2018년 11월 12일). “HTTP-over-QUIC to be renamed HTTP/3”. 《ZDNet》.
외부 링크[편집 | 원본 편집]
- 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)