HTTP/3

HTTP/3
HTTP/3
국제 표준Bishop, Mike; Akamai. "RFC 9114: HTTP/3". rfc-editor. Retrieved 6 June 2022. (HTTP/3는 RFC 9000 및 RFC 9001 등의 관련 RFC에 기재되어 있는 완전한 QUIC 프로토콜을 사용합니다).
개발자IETF
소개했다RFC 9114
웹 사이트https://quicwg.org/

HTTP/3널리 배포된 HTTP/1.1HTTP/2를 보완하여 월드 와이드 웹에서 정보를 교환하는 데 사용되는 세 번째 버전의 Hypertext Transfer Protocol입니다.확립된 TCP에 의존했던 이전 버전과 달리,[1] HTTP/3는 [2]UDP를 기반으로 구축된 다중 전송 프로토콜인 QUIC를 사용합니다. 2022년 6월 6일, IETF는 HTTP/3를 RFC 9114에서 [3]제안된 표준으로 발표했습니다.

HTTP/1.1 및 HTTP/2와 비교한 HTTP/3의 프로토콜 스택

HTTP/3는 동일한 요청 메서드, 상태 코드 및 메시지 필드를 포함하여 이전 버전의 프로토콜과 비교하여 유사한 의미론을 사용하지만, 이를 인코딩하고 세션 상태를 다르게 유지합니다.그러나 부분적으로 프로토콜의 QUIC 채택으로 인해 HTTP/3는 이전 버전에 비해 지연 시간이 낮고 실제 사용 시 더 빠르게 로딩됩니다. 어떤 경우에는 HTTP/1.1보다 3배 이상 빠릅니다(많은 [4][5]웹 사이트에서 배포된 유일한 HTTP 버전임).

HTTP/3는 이미 웹 브라우저의 75%(및 "추적된 데스크톱" 웹 브라우저의 83%)[6][7]와 상위 1000만 웹사이트의 26%에서 지원됩니다.2020년 4월부터 크롬(및 구글 크롬, 마이크로소프트 엣지, 삼성 인터넷, 오페라 [8]파생 프로젝트)에서, 2021년 [6][9]5월부터 모질라 파이어폭스에서 지원되고 있다.Safari 14(macOS Big Sur 및 iOS 14)도 프로토콜을 구현했지만 기본적으로는 비활성화되어 있습니다(Safari 15에서도).[10]

역사

HTTP/3는 QUIC 작업 그룹이 채택한 인터넷 초안에서 비롯되었습니다.원래 제안은 "QUIC 트랜스포트 프로토콜을 사용하는 HTTP/2 시멘틱스"[11]로 명명되었으며, 나중에 "QUIC를 통한 HTTP(Hypertext Transfer Protocol)"로 이름이 변경되었습니다.[12]

2018년 10월 28일 메일링 리스트 토론에서 IETF HTTP 및 QUIC 워킹 그룹의 의장 Mark Nottingham은 HTTP-over-Q로 이름을 바꿀 것을 제안했습니다.UIC와 HTTP/3는 "와이어 프로토콜에 대한 HTTP 시멘틱스의 또 다른 바인딩으로 명확하게 식별하여 사람들이 QUIC와의 분리를 이해할 수 있도록 한다."[13]노팅엄의 제안은 며칠 후 동료 IETF 회원들에 의해 받아들여졌다.HTTP 워킹 그룹은 HTTP/3 설계 시 QUIC 워킹 그룹을 지원하고 발행 [14]후 유지보수를 담당하도록 인가되었습니다.

HTTP/3에 대한 지원은 2019년 9월에 Chrome(캐너리 빌드)에 추가되었고, 이후 안정적인 빌드에 도달하였으나 기능 플래그로 인해 비활성화되었습니다.2020년 [15]4월에 디폴트로 유효하게 되어 있습니다.파이어폭스는 기능[6][16][17] 플래그를 통해 2019년 11월 HTTP/3에 대한 지원을 추가했으며 2021년 4월 파이어폭스 [6][9]88에서 기본 사용을 시작했습니다.HTTP/3에 대한 실험 지원은 2020년 4월[18] 8일 Safari Technology Preview에 추가되었으며 iOS 14MacOS [10]11과 함께 제공되는 Safari 14에 포함되었지만 여전히 [19]기본적으로 비활성화되어 있습니다.Safari 15에서도 상황은 마찬가지였습니다.

HTTP/1.1 및 HTTP/2와의 비교

HTTP 시멘틱스는 버전 간에 일관됩니다.일반적으로 모든 버전에 동일한 요청 방식, 상태 코드 및 메시지필드가 적용됩니다.이러한 시멘틱스와 기본 트랜스포트의 매핑에 차이가 있습니다.HTTP/1.1HTTP/2모두 TCP 를 전송으로서 사용합니다.HTTP/3는 사용자 데이터그램 프로토콜(UDP)을 통해 사용자 공간 폭주 제어를 사용하는 전송 계층 네트워크 프로토콜인 QUIC를 사용합니다.QUIC로의 전환은 HTTP/2의 주요 문제를 수정하는 것을 목적으로 하고 있습니다.즉, HTTP/2의 멀티플렉싱의 병렬성은 TCP의 손실 회복 메커니즘에 의해 인식되지 않기 때문에 패킷 손실 또는 정렬이 손실된 패킷에 의해 영향을 받았는지 여부에 관계없이 모든 활성 트랜잭션이 정지합니다.QUIC는 네이티브 멀티플렉싱을 제공하기 때문에 패킷 손실은 데이터가 손실된 스트림에만 영향을 줍니다.

실장

고객

브라우저

HTTP/3에 대한 브라우저
브라우저 구현된 버전(기본적으로 비활성화됨) 출하된 버전(디폴트로 유효) 댓글
크롬 안정된 구조(79) 2019년 12월 87[6] 2020년 4월[20] 이전 버전은 다른 QUIC 초안을 구현했습니다.
엣지 안정된 구조(79) 2019년 12월 87 2020년 4월 Edge 79는 크롬을 기반으로 한 첫 번째 버전입니다.
파이어폭스 안정된 구조(72.0.1) 2020년 1월 88[9] 2021년 4월[21]
사파리 Safari 테크놀로지 프리뷰 104 2020년 4월

라이브러리

QUIC 및 HTTP/3용[22] 클라이언트 또는 서버 로직을 구현하는 오픈 소스 라이브러리에는 다음이 포함됩니다.

HTTP/3를 구현하는 라이브러리
이름. 고객 서버 프로그래밍 언어 회사 저장소
lsquic 네. 네. C 라이트 스피드 https://github.com/litespeedtech/lsquic
nghttp3 네. 네. C https://github.com/ngtcp2/nghttp3
h2o 아니요. 네. C https://github.com/h2o/h2o
libcurl[23][24] 네. 아니요. C https://github.com/curl/curl
MsQuic[25] 네. 네. C 마이크로소프트 https://github.com/microsoft/msquic
프록시겐 네. 네. C++ 페이스북 https://github.com/facebook/proxygen#quic-and-http3
크로넷 네. 네. C++ 구글 https://github.com/chromium/chromium/tree/main/net/quic
.그물[26] 네. 네. C#(MsQuic [27]사용) 마이크로소프트 https://github.com/dotnet
퀵고 네. 네. 가세요 https://github.com/lucas-clemente/quic-go
http3 네. 네. 하스켈 https://github.com/kazu-yamamoto/http3
콰익 네. 네. 자바 https://github.com/ptrd/kwik
플럽케 네. 아니요. 자바 https://bitbucket.org/pjtr/flupke
아오키 네. 네. 파이썬 https://github.com/aiortc/aioquic
키슈 네. 네. 클라우드 플레어 https://github.com/cloudflare/quiche
니코 네. 네. 모질라 https://github.com/mozilla/neqo
네. 네. https://github.com/quinn-rs/quinn

서버

  • 2021년 6월 7일 LiteSpeed Web Server(및 OpenLiteSpeed) 6.0.2가 출시되어 HTTP/3를 [28]디폴트로 유효하게 한 최초의 버전이 되었습니다.
  • Caddy Web 서버는 2.0 베타 [29]17의 시점에서 HTTP/3를 실험적으로 지원하고 있습니다.
  • HTTP/3에 대한 Nginx 지원이 진행 중입니다.HTTP/3를 지원하는 nginx의 기술 미리보기는 2020년 [30]6월에 공개되었습니다.
  • Cloudflare는 키체 HTTP/3 라이브러리를 통합하는 [31]nginx용 패치를 배포합니다.
  • HTTP/3 의 Microsoft IIS 지원은, Windows Server 2022/Windows [32]11 에서 네이티브로 유효하게 되어 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Cerf, V.; Dalal, Y.; Sunshine, C. (December 1974). "Specification of Internet Transmission Control Program". IETF: RFC0675. doi:10.17487/rfc0675.
  2. ^ "What is HTTP/3?". Cloudflare. Archived from the original on 4 July 2022. Retrieved 12 July 2022.
  3. ^ "HTTP/3". Retrieved 6 June 2022.
  4. ^ Perna, Gianluca; Trevisan, Martino; Giordano, Danilo; Drago, Idilio (1 April 2022). "A first look at HTTP/3 adoption and performance". Computer Communications. 187: 115–124. doi:10.1016/j.comcom.2022.02.005. ISSN 0140-3664.
  5. ^ "HTTP/3 is Fast". Request Metrics. Retrieved 1 July 2022.
  6. ^ a b c d e "Can I use... Support tables for HTML5, CSS3, etc". caniuse.com. Retrieved 31 July 2022.
  7. ^ "Usage of HTTP/3 for websites". World Wide Web Technology Surveys. W3Techs. Retrieved 31 July 2022.
  8. ^ "Enabling QUIC in tip-of-tree". groups.google.com. Retrieved 8 April 2021.
  9. ^ a b c Damjanovic, Dragana (16 April 2021). "QUIC and HTTP/3 Support now in Firefox Nightly and Beta". Mozilla Hacks – the Web developer blog. Retrieved 17 April 2021.{{cite web}}: CS1 maint :url-status (링크)
  10. ^ a b "Safari 14 Release Notes". developer.apple.com. Retrieved 4 December 2020.
  11. ^ Shade, Robbie (8 July 2016). HTTP/2 Semantics Using The QUIC Transport Protocol. IETF. I-D draft-shade-quic-http2-mapping.
  12. ^ Cimpanu, Catalin (12 November 2018). "HTTP-over-QUIC to be renamed HTTP/3 ZDNet". ZDNet. Retrieved 12 November 2018.
  13. ^ Nottingham, Mark (28 October 2018). "Identifying our deliverables". IETF Mail Archive.
  14. ^ "Hypertext Transfer Protocol Charter". ietf.org. Retrieved 2 September 2020.
  15. ^ "Enabling QUIC in tip-of-tree". groups.google.com. Retrieved 8 April 2021.
  16. ^ Daniel, Stenberg. "Daniel Stenberg announces HTTP/3 support in Firefox Nightly". Twitter. Retrieved 5 November 2019.
  17. ^ Cimpanu, Catalin (26 September 2019). "Cloudflare, Google Chrome, and Firefox add HTTP/3 support". ZDNet. Retrieved 27 September 2019.
  18. ^ "Release Notes for Safari Technology Preview 104". webkit.org. 8 April 2020. Retrieved 7 August 2020.
  19. ^ Ng, Gary (23 June 2020). "Apple's Safari Adds Support for HTTP3 in iOS 14 and macOS 11". iphoneincanada.ca. Retrieved 25 June 2021.
  20. ^ "Enabling QUIC in tip-of-tree". groups.google.com. Retrieved 9 April 2021.
  21. ^ "Firefox Release Owners - MozillaWiki". wiki.mozilla.org. Retrieved 9 April 2021.
  22. ^ "QUIC Implementations". GitHub. Retrieved 8 April 2021.{{cite web}}: CS1 maint :url-status (링크)
  23. ^ "First HTTP/3 with curl". Daniel Stenberg. 5 August 2019. Retrieved 2 October 2019.
  24. ^ "cURL HTTP3 wiki". Daniel Stenberg. 26 September 2019. Retrieved 2 October 2019.
  25. ^ "MsQuic is Open Source". 28 April 2020. Retrieved 28 April 2020.
  26. ^ "HTTP/3 support in .NET 6". 17 September 2021. Retrieved 17 September 2021.
  27. ^ "HTTP/3 support in .NET 6". .NET Blog. 17 September 2021. Retrieved 12 January 2022.
  28. ^ "LiteSpeed Web Server Release Log - LiteSpeed Technologies". www.litespeedtech.com. Retrieved 12 February 2022. Enable HTTP/3 v1 by default.
  29. ^ "Release 2.0 beta 17 · caddyserver/caddy". Github. 13 March 2020. Retrieved 11 August 2020.
  30. ^ "Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3". NGINX. 10 June 2020. Retrieved 11 June 2020.
  31. ^ "Experiment with HTTP/3 using NGINX and quiche". The Cloudflare Blog. 17 October 2019. Retrieved 9 November 2019.
  32. ^ Tratcher. "Use ASP.NET Core with HTTP/3 on IIS". docs.microsoft.com. Retrieved 29 April 2022.

외부 링크