微软开源MsQuic,HTTP/3基础协议QUIC的跨平台实现
微软在其技术社区官方博客宣布,已开源自己的内部 QUIC 库,即 MsQuic。
QUIC(Quick UDP Internet Connections,快速 UDP 网络连接)是一种实验性的网络传输协议,正在由 IETF 进行标准化。QUIC 最初由谷歌开发,在 2013 年实现。谷歌希望使用这个协议来取代 HTTPS/HTTP 协议,使网页传输速度加快。
与基于 TCP 的现有 TLS 方案相比,QUIC 具有许多优点:
TLS 1.3 认证的握手
所有数据包均已加密
应用程序数据的并行流
改进拥塞控制和丢失恢复(与 TCP 相比)
在第一次往返(0-RTT)中交换应用程序数据
保留客户端 IP 地址或端口中的更改
容易扩展新特性
2018 年,基于 QUIC 协议的 HTTP(HTTP over QUIC)成为即将到来的 HTTP/3,正式被确定为下一代网络规范。
微软的 MsQuic 是实现 QUIC 传输协议的跨平台通用库,主要用于支持其产品内部的 QUIC 数据连接。MsQuic 针对多种使用模式进行了优化,已经被多个微软产品和服务使用,包括但不限于:
Windows 将在内核中附带 MsQuic,Windows HTTP/3 堆栈也是基于 MsQuic 构建的。
Microsoft 365 正在使用 HTTP/3 测试 IIS 的预览版。
.NET Core 已在 MsQuic 的基础上在 Kestrel 和 HttpClient 中构建了对 HTTP/3 的支持(在 .NET Core 5.0 预览版中可用)。
Windows 中的 SMB 将 MsQuic 用法作为原型。
微软在博客文章中表示,“MsQuic 为许多重要的网络方案带来了性能和安全性的改进。”并称其在线服务从这些性能改进(例如减少尾部延迟和更快的连接设置)中受益最大,“我们的连接将能够无缝切换网络,因为它们可以承受 IP 地址/端口更改的影响。”
MsQuic 仍在开发中,当前处于预览状态,在 Windows 和 Linux 上可用。