HTTP/3은 널리 배포된 HTTP/1.1 및 HTTP/2를 보완하는 World Wide Web에서 정보를 교환하는 데 사용되는 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)의 세 번째 주요 버전입니다. 잘-설립된 TCP (1974년 발행)에 의존했던 이전 버전과 달리, HTTP/3은 UDP 위에 구축된 다중화된 전송 프로토콜, QUIC을 사용합니다. 2022년 6월 6일에, IETF는 HTTP/3를 RFC 9114의 제안 표준으로 게시했습니다.
HTTP/3는 같은 요청 방법, 상태 코드, 및 메시지 필드를 포함하여 프로토콜의 이전 개정판과 유사한 의미론 체계를 사용하지만, 그것들을 인코딩하고 세션 상태를 다르게 유지합니다. 어쨌든, 부분적으로 QUIC의 프로토콜의 채택으로 인해, HTTP/3은 이전 버전과 비교할 때 실제 사용 시 대기 시간이 더 짧고 로드가 더 빠릅니다: 경우에 따라 HTTP/1.1보다 3배 이상 빠릅니다 (HTTP1.1은 많은 웹사이트에 의해 배포되는 유일한 HTTP으로 남아 있습니다).
HTTP/3는 웹 브라우저의 75% (및 "추적 데스크톱" 웹 브라우저의 83%)에 의해 지원되고, 상위 1,000만 개 웹사이트의 26%에 의해 지원됩니다. 그것은 2020년 4월부터 크로미엄 (및 구글 크롬, 마이크로소프트 엣지, 삼성 인터넷 및 오페라를 포함한 파생 프로젝트)과 2021년 5월부터 모질라 파이어폭스에 의해 지원되었습니다. 사파리 14 (macOS Big Sur 및 iOS 14)는 프로토콜을 구현했지만 기본적으로 비활성화된 상태로 남아 있습니다.
History
HTTP/3는 QUIC 작업 그룹에서 채택한 인터넷 초안에서 시작되었습니다. 원래 제안은 "HTTP/2 Semantics Using The QUIC Transport Protocol"로 이름-지었고, 나중에 "Hypertext Transfer Protocol (HTTP) over QUIC"으로 다시-변경되었습니다.
2018년 10월 28일 메일링 리스트 토론에서, IETF HTTP 및 QUIC 작업 그룹의 의장, Mark Nottingham은 HTTP-over-QUIC를 HTTP/3으로 다음의 이유로 이름을 바꾸자고 제안했습니다: "유선 프로토콜에 대한 HTTP 의미론의 또 다른 바인딩으로 명확하게 식별하기 위해 [...] 그래서 사람들은 QUIC과의 분리를 이해할 것입니다."Nottingham의 제안은 며칠 후 동료 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에 포함되었지만, Safari 16부터 기본적으로 macOS와 iOS 모두에서 비활성화되어 있습니다.
Comparison with HTTP/1.1 and HTTP/2
HTTP 의미론 체계는 버전 사이에 일관성이 있습니다: 같은 요청 방법, 상태 코드, 및 메시지 필드는 전형적으로 모든 버전에 적용할 수 있습니다. 차이점은 이러한 의미론을 놓여있는 전송에 매핑하는 것입니다. HTTP/1.1과 HTTP/2 모두 TCP를 전송 수단으로 사용합니다. HTTP/3은 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)을 통한 사용자 공간 혼잡 제어를 사용하는 전송 계층 네트워크 프로토콜, QUIC를 사용합니다. QUIC으로의 전환은 "HOL 차단(head-of-line blocking)"이라고 하는 HTTP/2의 주요 문제를 수정하는 것을 목표로 합니다: HTTP/2 다중화의 병렬 본성이 TCP의 손실 복구 메커니즘에 표시되지 않기 때문에, 손실 패킷 또는 재정렬된 패킷은 해당 트랜잭션이 손실된 패킷의 영향을 받았는지 여부에 관계없이 모든 활성 트랜잭션을 중단하는 원인이 됩니다. QUIC은 기본 다중화를 제공하기 때문에 손실된 패킷은 데이터가 손실된 스트림에만 영향을 미칩니다.
제안된 DNS 자원 레코드 SVCB (서비스 바인딩)과 HTTPS는 이전 HTTP 버전을 통해 Alt-Svc 헤더를 먼저 수신하지 않고 연결을 허용하므로, TCP 핸드셰이크의 1 RTT를 제거합니다. 파이어폭스 92, iOS 14, 보고된 Safari 14 지원 이후 HTTPS 자원 레코드에 대한 클라이언트 지원이 있고, 크로미엄은 플래그 뒤에서 그것을 지원합니다.
Implementations
Client
Browser
Browser support for HTTP/3 | |||||
Browser | Version implemented (disabled by default) |
Version shipped (enabled by default) |
Comment | ||
Chrome | Stable build (79) | December 2019 |
87 | April 2020 | Earlier versions implemented other drafts of QUIC |
Edge | Stable build (79) | December 2019 |
87 | April 2020 | Edge 79 was the first version based on Chromium |
Firefox | Stable build (72.0.1) |
January 2020 |
88 | April 2021 | |
Safari | Safari Technology Preview 104 |
April 2020 | – | – |
Libraries
QUIC 및 HTTP/3에 대한 클라이언트 또는 서버 논리를 구현하는 오픈-소스 라이브러리는 다음을 포함합니다
Server
- 2021년 6월 7일에, LiteSpeed 웹 서버 (및 OpenLiteSpeed) 6.0.2가 출시되었고 기본적으로 HTTP/3를 활성화하는 첫 번째 버전이 되었습니다.
- Caddy 웹 서버 v2.6.0 (2022년 9월 20일 출시)는 기본적으로 HTTP/3가 활성화되어 있습니다.
- HTTP/3에 대한 Nginx 지원이 작업 중입니다. HTTP/3을 지원하는 nginx의 기술 미리보기가 2020년 6월에 출시되었습니다.
- Cloudflare는 quiche HTTP/3 라이브러리를 통합하는 nginx에 대한 패치를 배포합니다.
- HTTP/3에 대한 Microsoft IIS 지원은 Windows Server 2022/Windows 11에서 기본적으로 활성화됩니다.