???? 序言
Http3 协议构建在UDP的基础上,是的,就这么神奇,以前被誉为不稳定大神的UDP,现在承担起可靠通讯协议的底层协议。为了消除UDP的不确定性,在UDP协议之上,新增了QUIC协议。
使用QUIC协议代替TCP协议中关于可靠、流量控制的部分,因此使得HTTP3可以可靠的进行通讯传输。
在.net 6预览版的asp.net core 上,微软添加了对 HTTP/3 的支持,这为 Web 带来了很多改进。HTTP3 带来了更快的连接设置以及在低质量网络上的改进性能。
从中我们也能看出微软对.net 6给予的厚望。
Microsoft 现在添加了对 HTTP/3 的支持以及为 HTTP/3 配置 TLS (https) 的支持。
???? 1. HTTP/3 TLS 配置
让我们看看如何使用以下命令在小型 MVC 应用程序中配置 HTTP/3:
dotnet new mvc -o Http3Tls -n Http3Tls
cd Http3Tls
code .
此命令创建一个 MVC 应用程序,切换到项目文件夹并打开 VSCode。我们需要在Program.cs
中配置 HTTP/3,就如下面代码所示:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.ConfigureKestrel((context, options) =>
{
options.EnableAltSvc = true;
options.Listen(IPAddress.Any, 5001, listenOptions =>
{
// Enables HTTP/3
listenOptions.Protocols = HttpProtocols.Http3;
// Adds a TLS certificate to the endpoint
listenOptions.UseHttps(httpsOptions =>
{
httpsOptions.ServerCertificate = LoadCertificate();
});
});
})
.UseStartup<Startup>();
});
}
这里标志EnableAltSvc
为浏览器设置了一个 Alt-Svc 标头。
以告诉这是现有 HTTP/1 或 HTTP/2 的替代服务。这需要告诉浏览器,替代服务 - 在这种情况下是 HTTP/3 - 应该像现有服务一样对待。
这需要一个 https 连接来保证安全和可信。
使用listenOptions.UseHttps配置ssl的证书。
使用 listenOptions.Protocols = HttpProtocols.Http3; 激活Http3 服务。
是的,就这么简单,一个适应http3协议的服务已经搭建完成。
???? 2 http/3 优势小结
由于Http/3协议,基于 UDP, 其避免了 TCP、Http/1、HTTP/2 的经典问题,实现了一个安全高效可靠的 HTTP 通信协议。
凭借着 0 RTT 建立连接、平滑的连接迁移、基本消除了队头阻塞,并增强了流量控制等特性, 在绝大多数场景下获得了比 HTTP/2 更好的效果。
因此 Http /3 必将是 http协议的未来。
相关链接: