HTTP/3.0 获得建议标准状态

负责互联网协议和架构开发的IETF(互联网工程任务组)已经完成了HTTP/3.0协议的RFC形成,并以标识符RFC 9114(协议)和RFC 9204(协议)发布了相关规范。 HTTP/3 的 QPACK 标头压缩技术)。 HTTP/3.0 规范已获得“提议标准”的地位,之后工作将开始给予 RFC 标准草案(标准草案)的地位,这实际上意味着协议的完全稳定并考虑到所有因素提出的意见。同时,发布了 HTTP/1.1 (RFC 9112) 和 HTTP/2.0 (RFC 9113) 协议规范的更新版本,以及定义 HTTP 请求语义 (RFC 9110) 和 HTTP 缓存控制标头的文档(RFC 9111)。

HTTP/3 协议定义了使用 QUIC(快速 UDP Internet 连接)协议作为 HTTP/2 的传输。 QUIC是UDP协议的扩展,支持多个连接的复用,并提供相当于TLS/SSL的加密方法。该协议由 Google 于 2013 年创建,作为 Web 的 TCP+TLS 组合的替代方案,解决了 TCP 连接建立和协商时间长的问题,并消除了数据传输过程中数据包丢失时的延迟。

HTTP/3.0 获得建议标准状态

目前,QUIC 和 HTTP/3.0 支持已在所有流行的 Web 浏览器中实现(在 Chrome、Firefox 和 Edge 中,默认启用 HTTP/3 支持,在 Safari 中需要“高级 > 实验功能 > HTTP/3”设置)待启用)。在服务器端,HTTP/3 实现可用于 nginx(在单独的分支中并以单独模块的形式)、Caddy、IIS 和 LiteSpeed。 Cloudflare 内容交付网络还提供 HTTP/3 支持。

QUIC 的主要特点:

  • 类似于 TLS 的高安全性(本质上 QUIC 提供了通过 UDP 使用 TLS 的能力);
  • 流量完整性控制,防止丢包;
  • 能够立即建立连接(0-RTT,在大约 75% 的情况下,可以在发送连接建立数据包后立即传输数据)并在发送请求和接收响应之间提供最小的延迟(RTT,往返时间);
    HTTP/3.0 获得建议标准状态
  • 重传数据包时使用不同的序列号,这可以避免识别接收到的数据包时出现歧义并消除超时;
  • 数据包丢失仅影响与其关联的流的传送,并且不会停止通过当前连接传输的并行流中数据的传送;
  • 纠错功能可最大限度地减少因重传丢失数据包而导致的延迟。 在数据包级别使用特殊的纠错码可以减少需要重传丢失的数据包数据的情况。
  • 密码块边界与QUIC数据包边界对齐,减少丢包对后续数据包内容解码的影响;
  • 不存在TCP队列阻塞的问题;
  • 支持连接标识符,减少移动客户端重新建立连接的时间;
  • 连接高级连接拥塞控制机制的可能性;
  • 采用单向吞吐量预测技术,确保数据包以最佳速率发送,防止数据包拥塞而导致丢包;
  • 与 TCP 相比,性能和吞吐量显着提高。 对于 YouTube 等视频服务,QUIC 已被证明可以将观看视频时的重新缓冲操作减少 30%。

在HTTP/1.1规范的变化中,可以注意到禁止在正文之外与内容单独使用回车符(CR),即在协议元素中,CR 字符只能与换行符(CRLF)结合使用。分块请求布局算法已得到改进,以简化附加字段和带有标头的部分的分离。添加了处理不明确内容的建议,以阻止“HTTP 请求走私”攻击,这使我们能够将自己融入到前端和后端之间的流中其他用户请求的内容中。

HTTP/2.0 规范更新明确定义了对 TLS 1.3 的支持。已弃用优先级方案和关联的标头字段。未使用的用于更新 HTTP/1.1 连接的机制已被声明为过时。检查字段名称和值的要求已减少。建议使用一些先前保留的帧类型和参数。与连接相关的禁止标头字段的定义更加精确。

来源: opennet.ru

添加评论