Wiki 页
QUIC Wiki 页 和 HTTP3 Wiki 页 提供了对于 QUIC 协议和 HTTP/3 协议当前发展状况的一个简要描述。
如 QUIC Wiki 的说明那样,“最初由 Google 创建,并移交给 IETF 的名为 QUIC 的协议,与后来在 IETF 内创建的 QUIC(尽管它们的名字一样)有着巨大的不同。最初的 Google QUIC,有时被称为 gQUIC,只是一个用来基于加密的 UDP 发送 HTTP/2 帧的协议,而 IETF 协议 QUIC 则是一个通用的传输协议。”
当前的 HTTP/3 对应于之前的 Google QUIC,而当前的 IETF QUIC 则是一个更宏大的体系,既包括了作为通用的基于 UDP 的安全的传输协议,也包括也括 HTTP/3 等内容。
IETF QUIC Working Group
IETF QUIC 工作组的官方网站。这个站点有大量非常权威的标准文档和QUIC标准化推进过程进展的信息。QUIC 相关协议的一些最新文档如下:
- Version-Independent Properties of QUIC
- QUIC: A UDP-Based Multiplexed and Secure Transport
- QUIC Loss Detection and Congestion Control
- Using TLS to Secure QUIC
- Hypertext Transfer Protocol Version 3 (HTTP/3)
- QPACK: Header Compression for HTTP over QUIC
IETF QUIC datatracker 页 可以查看当前 QUIC 协议标准化进程的一些状态。
IETF QUIC 工作组官方 GitHub
- QUIC 协议套件的 IETF QUIC 工作组文档,Markdown 格式。
- IETF-QUIC-Working-Group 相关文档的中文翻译所使用的仓库。
- IETF QUIC 工作组的议程、会议记录、演示文稿和其他材料。
QUIC 实现
IETF QUIC 工作组收集整理的当前的 QUIC 实现,包含许多不同操作系统平台,不同编程语言,不同 QUIC 版本的实现。QUIC 协议的实现被分为了四个部分:IETF QUIC 传输,基于 QUIC 的 IETF HTTP,QPACK,和 Google QUIC。
由于这些实现的存在,QUIC 协议不仅仅可以作为一个传输 HTTP 流量的安全的基于 UDP 的可靠传输协议,就像早期 Google QUIC 那样,而是已经可以作为一个通用的基于 UDP 的安全的可靠传输来用了。
工具
一个协议的完整生态,一定少不了可以对这种协议进行分析、测试、监测和调试的工具。IETF QUIC 工作组收集整理的当前的 QUIC 工具。
最重要的协议分析工具当属 Wireshark,而 Wireshark 也已经提供了对于 HTTP/2,Google QUIC,和 IETF QUIC 协议包解码的支持了,当前(2019.03.14)最新的稳定版 Wireshar 是 3.0.0 版。其它还包括:
- QUIC Tracker:QUIC-Tracker 是一个 IETF-QUIC 的测试集。它与 IETF-QUIC 实现交换数据包来验证实现是否与 IETF 规范一致。测试集由多个场景组成,每个场景都旨在测试 QUIC 协议的某个特定功能。测试集每天运行,并把结构抛在网站上。QUIC-Tracker 有一个自己的 GitHub group,QUIC-Tracker 源码的 GitHub repo 为 quic-tracker。
- qvalve:qvalve 可以以可预见的方式损害 QUIC 流,如通过丢包、重排序或者重传单独的数据包和包序列。它是一个不透明的 UDP 代理,应该插入到 QUIC 客户端和 QUIC 服务器之间。qvalve 的行为由一个以一种简单的语言描述的规则来配置。qvalve 可以用来模拟弱网、网络繁忙等情形,并观察在这种网络环境下 QUIC 协议的表现。
- spindump:spindump 工具是一个 Unix 命令行实用程序,它可以用来检测通过某个网卡的流量的延迟。该工具执行被动的网络监视。它不是一个用于监视独立的连接的流量内容和元数据的工具,且由于网络中的连接是加密的,它也确实不可能做到那些。这个工具主要观察传输协议的特性,比如 QUIC Spin 位,并尝试获取关于单个连接的往返时间、聚合值或平均值的信息。这个工具支持 TCP,QUIC,COAP,DNS,和 ICMP 流量。