QUIC浅析,android开发者模式

本文介绍了QUIC协议在减少连接延迟方面的优化,如1RTT和0RTT握手,以及它如何通过使用TLS1.3提供安全连接。对比TLS1.2,TLS1.3移除了非对称加密,提高了握手速度。同时,文章探讨了QUIC如何通过多路复用避免队头阻塞,以及QUIC在Android端的实现和性能表现。监控数据显示,QUIC在资源拉取和页面加载上表现出优于HTTP/2的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下图是HTTP Over TLS1.2首次连接的握手,其中TCP的第三次握手和TLS的第一次握手结合:

在这里插入图片描述

这个过程由于太长,在复杂的网络情况下的连接建立容易产生较大时延,所以优化的方向比较统一:在保证安全的情况下,尽可能减少握手交换数据,加快连接的速度

TLS1.3则实现了1RTT,甚至0RTT,而QUIC因为是基于Udp协议,所以也可做到0RTT。

这里讲一个TLS1.3和QUIC的事情,在2018年之前,因为TLS1.3还没有正式发布,所以QUIC使用的是自研的0RTT方式,叫做 QUIC crypto protocol。所以看2018年之前的文章,会发现两者达到0RTT的方式是不一样的。而在2018年TLS1.3正式发布,QUIC又和TLS同属IETF组织,所以自然而然的,QUIC统一使用TLS1.3作为安全协议

The QUIC crypto protocol is the part of QUIC that provides transport security to a connection. The QUIC crypto protocol is destined to die. It will be replaced by TLS 1.3 in the future, but QUIC needed a crypto protocol before TLS 1.3 was even started.

感谢Google减少我们这些码农的学习成本~ 我们只需要弄清楚TLS1.3是如何实现0RTT的,就也能弄懂QUIC的了。

2.1.1 TLS1.3实现1RTT

首先看下TLS1.2协议握手图:

在这里插入图片描述

整个过程是2RTT,因为比较熟悉,就不再讲中间过程了。

接下来看下TLS1.3如何做到1RTT,看下面握手图:

在这里插入图片描述

来看下握手全程:

  1. 客户端发送:①:ClientHello,包含Cipher Suite(密码套件),②:Key Share(DH密钥交换参数列表)

  2. 服务端回复:①:ServerHello,包含 所选Cipher Suite,②:服务器证书,③使用证书对应的私钥对握手消息签名,将结果发出,④:选用客户端提供的DH参数生成临时公钥,并将公钥通过Key Share发送出去

除此之外,结合选定的DH参数计算出用于加密Http的共享密钥

  1. 客户端接收到 Key Share后,使用证书公钥对签名进行验证,获取服务端的公钥,并生成共享密钥

  2. 双方使用生成的共享密钥进行加密传输,完成TLS握手

相比于TLS1.2,TLS1.3最大改动其实就是去掉了 RSA的密钥交换,也就是TLS握手中的唯一一次非对称加密(不算签名验证)

所以握手的时候,就不会再去发送那些和非对称加密相关的数据了,比如 客户端服务端随机数 Server/Client KeyExchange、声明消息加密的信号 ChangeChiperSpec<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值