HTTP/3

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

HTTP/3는 QUIC 전송 프로토콜을 사용하는 HTTP/2의 후속 버전으로, IETF의 인터넷 초안에서 시작되었다. HTTP/1.1 및 HTTP/2와 달리 TCP 대신 QUIC를 사용하여 Head-of-line blocking 문제를 해결하고 전송 속도를 향상시킨다. 주요 웹 브라우저와 서버에서 HTTP/3을 지원하며, 다양한 프로그래밍 언어로 구현된 오픈 소스 라이브러리를 통해 구현할 수 있다. 2022년 6월 IETF는 HTTP/3을 RFC 9114에 제안된 표준으로 게시했다.

HTTP/3
일반 정보

이미지 준비중입니다.

HTTP/3 로고
개발자국제 인터넷 표준화 기구 (IETF)
발표일2022년 6월
기반 프로토콜QUIC
OSI 모델 계층응용 계층
세부 정보
표준
HTTP/3은 RFC 9000과 같은 관련 RFC에 설명된 완료된 QUIC 프로토콜도 사용함
소개 날짜2022년 6월
후속없음
📚 더 읽어볼만한 페이지
  • HTTP - HTTPS
    HTTPS는 HTTP에 보안 기능이 더해진 통신 규약으로, 웹 브라우저와 서버 간 통신을 암호화하여 보안을 강화하지만, 인증서 비용, 서버 부하, 혼합 콘텐츠 문제 등의 단점도 존재한다.
  • HTTP - HTTP 쿠키
    HTTP 쿠키는 웹 서버가 사용자 브라우저에 저장하는 작은 텍스트 파일로, 웹 사이트가 방문 기록, 로그인 정보 등을 기억하여 HTTP의 상태 비저장성을 보완하고 세션 관리, 개인 설정, 사용자 추적 등에 활용되지만 개인 정보 보호 및 보안 문제에 대한 논란이 있다.
  • 월드 와이드 웹 - 구글
  • 월드 와이드 웹 - 온라인 언론
    온라인 언론은 인터넷을 통해 뉴스 및 정보를 제공하며, 디지털 기술 발달과 함께 성장하여 시민 저널리즘 부상, 정보 전달 속도 혁신 등의 특징을 보이지만 정보 신뢰성 문제, 전통 언론 쇠퇴 등의 과제를 안고 있다.
  • 응용 계층 프로토콜 - 실시간 전송 프로토콜
    실시간 전송 프로토콜(RTP)은 스트리밍 미디어의 실시간 전송을 위해 설계된 프로토콜로, IP 네트워크에서 오디오/비디오 전송의 표준으로 사용되며, 멀티미디어 데이터 전송, 타임스탬프, 순서 제어, QoS 피드백 등을 제공한다.
  • 응용 계층 프로토콜 - D-Bus
    D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다.

2. 역사

--

HTTP/3는 QUIC 워킹 그룹에서 채택한 인터넷 초안에서 시작되었다. 원래 제안은 "QUIC 전송 프로토콜을 사용하는 HTTP/2 시맨틱스"였으며, 나중에 "QUIC 기반 하이퍼텍스트 전송 프로토콜(HTTP)"으로 이름이 변경되었다.

2018년 10월 28일 메일링 리스트 토론에서 IETF HTTP 및 QUIC 워킹 그룹 의장인 마크 노팅엄은 HTTP-over-QUIC을 HTTP/3으로 변경할 것을 제안했다. 이는 "HTTP 시맨틱스를 와이어 프로토콜에 바인딩하는 또 다른 방식으로 명확히 식별하여 [...] 사람들이 QUIC과의 분리를 이해하도록 하기 위함"이었다. 노팅엄의 제안은 며칠 후 IETF 회원들에게 받아들여졌다. HTTP 워킹 그룹은 HTTP/3 설계 과정에서 QUIC 워킹 그룹을 지원하고, 이후 게시 후 유지 관리를 담당하도록 위임되었다.

HTTP/3에 대한 지원은 2019년 9월 크롬 (카나리아 빌드)에 추가된 후 안정적인 빌드에 도달했지만 기능 플래그에 의해 비활성화되었다. 2020년 4월에 기본적으로 활성화되었다. 파이어폭스는 2019년 11월 기능 플래그를 통해 HTTP/3에 대한 지원을 추가했으며 2021년 4월 Firefox 88에서 기본적으로 활성화하기 시작했다. HTTP/3에 대한 실험적 지원은 2020년 4월 8일 Safari Technology Preview에 추가되었으며, iOS 14 및 macOS 11과 함께 제공되는 Safari 14에 포함되었지만, macOS와 iOS 모두에서 Safari 16까지 기본적으로 비활성화되어 있다.

2022년 6월 6일, IETF는 HTTP/3을 제안된 표준으로 게시했다.

3. HTTP/1.1 및 HTTP/2와의 비교

HTTP/3는 이전 버전(HTTP/1.1, HTTP/2)과 동일한 요청 메서드, 상태 코드, 메시지 필드를 사용하지만, 기본 전송 방식에서 차이가 있다. HTTP/1.1과 HTTP/2는 전송 계층으로 TCP를 사용하는 반면, HTTP/3는 QUIC를 사용한다. QUIC는 UDP를 통해 사용자 공간 혼잡 제어를 사용하는 전송 계층 네트워크 프로토콜이다.

--

QUIC으로의 전환은 HTTP/2의 주요 문제점인 HOL 블로킹을 해결하기 위한 것이다. QUIC은 네이티브 다중화를 제공하여 손실된 패킷이 해당 스트림에만 영향을 미치도록 한다.

3.1. 기술적 특징

요청 메서드, 상태 코드, 메시지 필드와 같은 HTTP의 의미는 버전 간에 일관성이 있다. 이러한 요소들은 일반적으로 모든 버전에 적용된다. 차이점은 이러한 의미를 기본 전송 방식에 어떻게 매핑하는지에 있다. HTTP/1.1과 HTTP/2는 모두 전송 계층으로 TCP를 사용한다. HTTP/3은 QUIC를 사용하는데, 이는 UDP를 통해 사용자 공간 혼잡 제어를 사용하는 전송 계층 네트워크 프로토콜이다.

QUIC으로의 전환은 HTTP/2의 주요 문제점인 "HOL 블로킹"을 해결하는 것을 목표로 한다. HTTP/2 다중화의 병렬 특성이 TCP의 손실 복구 메커니즘에 보이지 않기 때문에, 손실되거나 순서가 바뀐 네트워크 패킷은 해당 트랜잭션이 손실된 패킷의 영향을 받았는지 여부에 관계없이 모든 활성 트랜잭션 처리가 정지되는 현상을 경험하게 한다. QUIC은 네이티브 다중화를 제공하기 때문에, 손실된 패킷은 데이터가 손실된 스트림에만 영향을 미친다.

제안된 DNS 리소스 레코드 SVCB(서비스 바인딩) 및 HTTPS를 사용하면 이전 HTTP 버전을 통해 Alt-Svc 헤더를 먼저 받지 않고도 연결할 수 있으므로 TCP의 1 RTT 핸드셰이킹이 제거된다. HTTPS 리소스 레코드에 대한 클라이언트 지원은 Firefox 92, iOS 14부터 시작되었으며, Safari 14 지원이 보고되었고, Chromium은 플래그 뒤에서 이를 지원한다.

4. 구현 현황

HTTP/3은 여러 소프트웨어에서 구현되어 지원되고 있다.

주요 웹 브라우저로는 크롬, 엣지, 파이어폭스, 사파리 등이 HTTP/3을 지원한다.

HTTP/3을 지원하는 주요 웹 서버에는 LiteSpeed Web Server, Caddy, Nginx, Microsoft IIS, HAProxy 등이 있다.

QUIC 및 HTTP/3 클라이언트 또는 서버 로직을 구현하는 다양한 오픈 소스 라이브러리들이 존재한다.

4.1. 클라이언트

크롬, 엣지, 파이어폭스, 사파리는 HTTP/3을 지원한다.

👆
좌우로 밀어서 보기
HTTP/3 브라우저 지원
브라우저구현된 버전 (기본적으로 비활성화됨)출시된 버전 (기본적으로 활성화됨)설명
크롬안정화 빌드 (79)2019년 12월872020년 4월이전 버전은 QUIC의 다른 초안을 구현했다.
엣지안정화 빌드 (79)2019년 12월872020년 4월엣지 79는 크로미움을 기반으로 한 첫 번째 버전이었다.
파이어폭스안정화 빌드 (72.0.1)2020년 1월882021년 4월
사파리안정화 빌드 (14.0)2020년 9월16.42023년 3월애플은 사파리 16.4부터 일부 사파리 사용자에게 HTTP/3 지원을 테스트하고 있다.

4.2. 서버

* LiteSpeed Web Server (및 OpenLiteSpeed) 6.0.2 버전(2021년 6월 7일 출시)은 HTTP/3을 기본적으로 활성화한 최초의 버전이다.
* Caddy 웹 서버 v2.6.0 (2022년 9월 20일 출시)은 HTTP/3을 기본적으로 활성화했다.
* Nginx는 1.25.0 버전(2023년 5월 23일 출시)부터 HTTP/3을 지원한다. HTTP/3 지원을 포함한 Nginx 기술 미리보기는 2020년 6월에 출시되었고, HTTP/3을 지원하는 Nginx 바이너리 패키지는 2023년 2월에 출시되었다.
* Cloudflare는 quiche HTTP/3 라이브러리를 통합하는 Nginx용 패치를 배포한다.
* Microsoft IIS는 Windows Server 2022/Windows 11에서 HTTP/3 지원이 기본적으로 활성화되어 있다.
* HAProxy는 2.6 버전(2022년 5월 31일 출시)부터 QUIC를 통한 HTTP/3을 지원한다.

4.3. 라이브러리

다음은 QUIC 및 HTTP/3에 대한 클라이언트 또는 서버 로직을 구현하는 오픈 소스 라이브러리들이다.

👆
좌우로 밀어서 보기
HTTP/3 구현 라이브러리
이름클라이언트서버프로그래밍 언어회사저장소
lsquicCLiteSpeedgithub.com
nghttp3Cgithub.com
h2o아니오Cgithub.com
libcurl아니오Cgithub.com
MsQuicC마이크로소프트github.com
proxygenC++페이스북github.com
CronetC++구글github.com
.NETC# (MsQuic 사용)마이크로소프트github.com
quic-goGogithub.com
http3Haskellgithub.com
KwikJavagithub.com
FlupkeJavabitbucket.org
aioquicPythongithub.com
quicheRust클라우드플레어github.com
neqoRust모질라github.com
quinnRustgithub.com
s2n-quicRust아마존 웹 서비스github.com