HTTP/3 explained
  • README
  • English
    • Why QUIC
      • Remember HTTP/2
      • TCP head of line blocking
      • TCP or UDP
      • Ossification
      • Secure
      • Reduced latency
    • Process
      • IETF
      • Experience from HTTP/2
      • Status
    • Protocol features
      • UDP
      • Reliable
      • Streams
      • In Order
      • Fast handshakes
      • TLS 1.3
      • Transport and application
      • HTTP/3 over QUIC
      • Non-HTTP over QUIC
    • How QUIC works
      • Connections
      • Connections use TLS
      • Streams
      • 0-RTT
      • Spin Bit
      • User space
      • API
    • HTTP/3
      • HTTPS:// URLs
      • Bootstrap with Alt-svc
      • QUIC streams and HTTP/3
      • Prioritization
      • Server push
      • Comparison with HTTP/2
    • Common criticism
    • The specifications
    • QUIC future
  • Español
    • Por qué QUIC
      • ¿Te acuerdas de HTTP/2?
      • Bloqueo de cabeza de línea TCP
      • TCP o UDP
      • Osificación
      • Seguro
      • Datos tempranos
    • Proceso
      • IETF
      • La experiencia de HTTP/2
      • Estado
    • Características del protocolo
      • UDP
      • Transferencias de datos fiables
      • Flujos múltiples
      • Entrega en orden
      • Rápido establecimiento de comunicación
      • TLS 1.3
      • Nivel de transporte y aplicación
      • HTTP/3 sobre QUIC
      • No-HTTP sobre QUIC
    • Cómo funciona QUIC
      • Conexiones
      • TLS
      • Flujos
      • 0-RTT
      • Spin Bit
      • Espacio de usuario
      • API
    • HTTP/3
      • HTTPS:// URLs
      • Alt-svc
      • Flujos de QUIC y HTTP/3
      • Priorización
      • Push del servidor
      • Comparación con HTTP/2
    • Críticas habituales
    • Especificaciones
    • QUIC v2
  • Deutsch
    • Warum QUIC
      • Erinnerst du dich an HTTP/2?
      • TCP Head-of-line blocking
      • TCP oder UDP
      • Ossifikation
      • Sicherheit
      • Reduzierte Latenz
    • Prozess
      • IETF
      • Erfahrungen von HTTP/2
      • Status
    • Eigenschaften des Protokolls
      • UDP
      • Zuverlässige Datenübertragung
      • Streams
      • In-Order Ausliefung
      • Schnelle Handshakes
      • TLS 1.3
      • Transport und Anwendung
      • HTTP/3 über QUIC
      • Nicht-HTTP über QUIC
    • Wie QUIC funktioniert
      • Verbindungen
      • Verbindungen verwenden TLS
      • Streams
      • 0-RTT
      • Spin Bit
      • User-space
      • API
  • فارسی
    • چرا QUIC
      • آیا HTTP/2 را به یاد دارید؟
      • مسدود کننده سرِ صف TCP
      • TCP یا UDP
      • استخوان‌سازی (fa/Ossification)
      • امن
      • تأخیرِ کاهش یافته
    • پردازش
      • کارگروه مهندسی اینترنت (fa/IETF)
      • تجربه از HTTP/2
      • وضعیت
    • ویژگی‌های پروتکل
      • UDP
      • مطمئن
      • جریان‌ها
      • منظم
      • دست‌دهی‌های سریع
      • TLS 1.3
      • انتقال و کاربرد
      • پروتکل HTTP/3 بر روی QUIC
      • غیر HTTP بر روی QUIC
    • پروتکل QUIC چطور کار می‌کند
      • اتصال‌ها
      • اتصال‌ها از TLS استفاده می‌کنند
      • جریان‌ها
      • زمان تأخیر چرخشی صفر (fa/0-RTT)
      • بیت چرخشی
      • فضای کاربر
      • رابط برنامه‌نویسی کاربردی (fa/API)
    • پروتکل انتقال ابرمتن نگارش ۳ (fa/HTTP/3)
      • نشانی وب‌های HTTPS://
      • بوت اِسترپ با سرایندِ Alt-svc
      • جریان‌های QUIC و HTTP/3
      • اولویت بندی
      • فشارِ سرور
      • مقایسه با HTTP/2
    • نقدگریِ مرسوم
    • مشخصات
    • پروتکل QUIC نسخه ۲
  • Français
    • Pourquoi QUIC
      • Souvenez-vous de HTTP/2 ?
      • Blocage de tête de ligne TCP
      • TCP ou UDP
      • Ossification
      • Sécurisé
      • Latence réduite
    • La procédure
      • IETF
      • Expérience depuis HTTP/2
      • Statut
    • Caractéristiques du protocole
      • UDP
      • Fiable
      • Flux
      • Dans l'ordre
      • Handshakes rapides
      • TLS 1.3
      • Transport et application
      • HTTP/3 sur QUIC
      • Non-HTTP sur QUIC
    • Comment QUIC fonctionne
      • Connexions
      • Les connexions utilisent TLS
      • Flux
      • 0-RTT
      • Spin Bit
      • Espace utilisateur
      • API
    • HTTP/3
      • URLs HTTPS://
      • Amorçage avec Alt-svc
      • Flux QUIC et HTTP/3
      • Priorisation
      • Push serveur
      • Comparaison avec HTTP/2
    • Critique générale
    • Les spécifications
    • QUIC v2
  • Italiano
    • Perché QUIC
      • Ricordi HTTP/2 ?
      • Blocco ad inizio linea, "TCP head of line blocking"
      • TCP o UDP
      • Ossificazione
      • Sicuro
      • Latenza ridotta
    • Evoluzione
      • IETF
      • Esperienza da HTTP/2
      • Status
    • Caratteristiche del protocollo
      • UDP
      • Affidabile
      • Streams
      • Ordinato
      • Negoziazioni veloci
      • TLS 1.3
      • Trasporto e applicazione
      • HTTP over QUIC
      • Non-HTTP over QUIC
    • Come funziona QUIC
      • Connessioni
      • Connessioni su TLS
      • Streams
      • 0-RTT
      • Bit Rotante
      • User space
      • API
    • HTTP/3
      • URLs in HTTPS://
      • Bootstrap via Alt-svc
      • Gli streams QUIC e HTTP/3
      • Prioritizzazione
      • Server push
      • Paragone con HTTP/2
    • Critiche comuni
    • Le specifiche
    • QUIC v2
  • 日本語
    • なぜ QUIC なのか
      • HTTP/2、覚えていますか?
      • TCP head-of-line ブロッキング
      • TCP か UDP か
      • 硬直化
      • セキュア
      • レイテンシの軽減
    • これまでの歩み
      • IETF
      • HTTP/2 からの経験
      • 現在の状況
    • プロトコルの機能
      • UDP 上の転送プロトコル
      • 高信頼性のデータ転送
      • コネクションは複数のストリームを扱う
      • 到着順序の保証
      • 素早いハンドシェイク
      • TLS 1.3
      • トランスポートとアプリケーションレベル
      • HTTP/3 over QUIC
      • Non-HTTP over QUIC
    • QUIC の仕組み
      • コネクション
      • 接続で TLS を使う
      • ストリーム
      • 0-RTT
      • Spin Bit
      • ユーザー空間
      • API
    • HTTP/3
      • HTTPS:// の URL
      • Alt-svc を使ったブートストラップ
      • QUIC ストリームと HTTP/3
      • プライオリティ制御
      • Server push
      • HTTP/2 と比較した HTTP/3
    • よくある疑問点
    • The specifications (ja/仕様)
    • QUIC v2
  • 한국어
    • 왜 QUIC인가
      • HTTP/2를 기억하는가?
      • TCP HOL(ko/head of line) 블로킹
      • TCP or UDP
      • 고착화(ko/Ossification)
      • 안전
      • 감소된 지연시간
    • 과정
      • IETF
      • HTTP/2에서의 경험
      • 상태
    • 프로토콜 기능
      • UDP
      • 신뢰성
      • 스트림
      • 순서에 맞는 전송
      • 빠른 핸드쉐이크
      • TLS 1.3
      • 전송 계층과 애플리케이션 계층
      • QUIC을 통한 HTTP/3
      • QUIC을 통한 HTTP가 아닌 프로토콜
    • QUIC의 동작 방식
      • 연결
      • TLS을 사용하는 연결
      • 스트림
      • 0-RTT
      • 스핀 비트
      • 사용자 영역
      • API
    • HTTP/3
      • HTTPS:// URL
      • Alt-svc로 부트스트랩하기
      • QUIC 스트림과 HTTP/3
      • 우선순위 정하기
      • 서버 푸시
      • HTTP/3과 HTTP/2의 비교
    • 일반적인 비판
    • 명세
    • QUIC v2
  • Română
    • De ce QUIC
      • Vă mai aduceți aminte de HTTP/2?
      • Blocarea vârfului stivei în TCP
      • TCP sau UDP
      • Osificarea
      • Securitate
      • Timp de așteptare redus
    • Procesul
      • IETF
      • Experiența acumulată cu HTTP/2
      • Starea curentă
    • Funcționalitățile protocolului
      • UDP
      • Fiabilitate
      • Fluxuri
      • În aceeași ordine
      • Handshakes rapide
      • TLS 1.3
      • Nivelurile de aplicație și de transfer
      • HTTP/3 peste QUIC
      • Non-HTTP peste QUIC
    • Cum funcționează QUIC
      • Conexiuni
      • Conexiunile folosesc TLS
      • Fluxuri
      • 0-RTT
      • Spin Bit
      • User space
      • API
    • HTTP/3
      • Adresele HTTPS://
      • Bootstrap cu Alt-svc
      • Fluxurile QUIC și HTTP/3
      • Prioritizare
      • Server push
      • Comparația cu HTTP/2
    • Critici comune
    • Specificația
    • QUIC v2
  • 简体中文
    • 导言
    • 为什么需要QUIC
      • 回顾HTTP/2
      • TCP队头阻塞
      • 用TCP还是UDP
      • 协议僵化
      • 安全性
      • 减少延迟
    • 协议进展
      • IETF
      • HTTP/2的经验
      • 标准化进展情况
    • 协议特点
      • 基于UDP
      • 可靠性
      • 数据流
      • 有序交付
      • 快速握手
      • TLS 1.3
      • 传输层与应用层协议
      • QUIC之上的HTTP协议
      • QUIC之上的非HTTP协议
    • QUIC工作原理
      • 连接
      • 使用TLS的连接
      • 数据流
      • 0-RTT
      • 旋转比特位
      • 用户空间实现
      • API
    • HTTP/3
      • HTTPS:// URL
      • 使用Alt-svc自举
      • QUIC流与HTTP/3
      • 优先度
      • 服务器推送
      • 与HTTP/2的比较
    • 常见批评
    • 技术标准
    • QUIC v2
  • 繁體中文
    • 導言
    • 為什麼是QUIC
      • 回顧HTTP/2
      • TCP隊頭阻塞
      • TCP還是UDP
      • 協定僵化
      • 安全性
      • 減少延遲
    • 協定的進展
      • IETF
      • 從HTTP/2得到的經驗
      • 目前的狀況
    • 協定的功能
      • 基於UDP的傳輸層協定
      • 高度可靠的傳輸
      • 串流
      • 有序交付
      • 快速交握
      • TLS 1.3
      • 傳輸層與應用層協定
      • HTTP/3 over QUIC
      • Non-HTTP over QUIC
    • QUIC運作原理
      • 連接
      • 使用TLS的連接
      • QUIC串流
      • 0-RTT
      • Spin Bit
      • 用户空間
      • API
    • HTTP/3
      • HTTPS:// URL
      • 使用Alt-svc進行引導
      • QUIC串流與HTTP/3
      • 優先次序
      • 伺服器推送
      • 與HTTP/2的比較
    • 常見的錯誤批評
    • 技術標準
    • QUIC v2
Powered by GitBook
On this page
  • 伺服器端
  • 客戶端
  • 實作的障礙
  • 作業系统核心、CPU 負載

Was this helpful?

Export as PDF
  1. 繁體中文
  2. 協定的進展

目前的狀況

QUIC 工作組自 2016 年末以來一直在努力製定協定,在撰寫本文時( 2020 年 6 月 )已接近最後階段。

在 2019 年和 2020 年間,使用 HTTP/3 進行互操作性測試的數量不斷增加 [https://docs.google.com/spreadsheets/d/1D0tW89vOoaScs3IY9RGC0UesWGAwE6xyLk0l4JtvTVg/edit#gid=1268516408] CDN 和瀏覽器已經開始提供初始的支持 - 儘管它們通常會進度落後。

QUIC 工作組的 Wiki 頁面上有更多的資訊。 QUIC implementations listed

實現 QUIC 並不容易,到目前為止,協定本身還在不斷演變中。

伺服器端

NGINX 對 QUIC 和 HTTP/3 的支援正在開發中,並且 已發布預覽版.

至於 Apache 對 QUIC 的支援則是還沒有公開的聲明。

客戶端

尚未有任何主流瀏覽器供應商在任何狀態下提供可以運行 IETF 版本的 QUIC 或 HTTP/3 協定。

多年來,Google 瀏覽器一直在提供 Google 自己的 QUIC 版本,並且最近已經開始支持 IETF 版本。 Firefox 同樣之後會開始支援。

curl 在 2019 年 9 月 11 日發布了 7.66.0 版本中的第一個實驗性的 HTTP/3 支援(draft-22)。 curl 使用 Cloudflare 的 Quiche 或 ngtcp2 來完成工作。

實作的障礙

QUIC 決定使用 TLS 1.3 作為加密和安全層的基礎來避免發明新的東西,且依靠可信賴的現有協定。 不過工作組決定大幅精簡 QUIC 中 TLS 的使用,只使用 "TLS訊息"( TLS Messages )而不是協定中的 "TLS記錄"( TLS Records )。

這聽起來像是一個無害的更改,但實際上已對許多 QUIC 堆疊的實作者造成了重大障礙。 現存的支持 TLS 1.3 的 TLS libraries 都沒有提供此功能的 API 並允許 QUIC 訪問它。 有一些 QUIC 的實作由大型機構完成,這些機構可能有自己的 TLS 堆疊,但並不是所有人都能做到這種地步。

例如,占主導地位的開源重量級 OpenSSL 對此沒有任何 API。 解決此問題的計劃可能以在他們的 PR8797 中,它們計畫一種與 BoringSSL 非常相似的 API。

由於 QUIC 堆疊將需要基於其他 TLS libraries,使用單獨的修補 OpenSSL 構建或需要更新到將來的 OpenSSL 版本,這些最終也將導致部署障礙。

作業系统核心、CPU 負載

Google 和 Facebook 都提到,他們的 QUIC 大規模部署所需的 CPU 數量大約是通過 TLS 提供 HTTP/2 時相同流量負載的兩倍。

進一步的解釋

  • 主要是 Linux 中的 UDP 部分根本沒有像 TCP 堆疊那樣優化,因為傳統上它沒有像這樣被用於高速傳輸。

  • TCP 和 TLS 有硬體加速(負載卸載到硬體,offload),而這對於 UDP 很罕見,對於 QUIC 則基本上不存在。

就上述理由,我們可以相信 QUIC 的 CPU 使用量能隨著時間得到改善。

Previous從HTTP/2得到的經驗Next協定的功能

Last updated 4 years ago

Was this helpful?