QUIC协议连接详解(二)

目录

一:RTT解释

二:QUIC 1-RTT连接

三:QUIC 0-RTT连接


一:RTT解释

        在介绍QUIC协议的连接之前先科普一下什么是RTT。RTT是Round-Trip Time的英文缩写,翻译过来就是一趟来回的时间即往返时延。时间计算即从发送方发送数据开始,到发送方接收到来自接收方的确认消息所经过的时间。

        RTT时延通常由三部分决定:链路的传播时间、末端系统的处理时间、路由器等网络中间节点的缓存和排队时间。正常情况下报文的传输时间和在应用处理时间相对固定,在网络拥堵情况下会出现RTT时延的波动。

        RTT是衡量网络传输性能的重要指标之一,能够反映出数据在网络中传输的速度和稳定性。通常情况下,RTT越短,网络传输的速度就越快,反之则越慢。因此,通过监测TCP中的RTT时延,可以初步判断网络的性能如何。但需要注意的是,RTT时延只是一个指标,要全面评估网络性能还需要结合其他指标进行综合分析。

二:QUIC 1-RTT连接

我们先看看Google官网的关于QUIC握手的流程图

详细步骤如下:

(1) 客户端判断本地是否已有服务器的全部配置参数,如果有则直接跳转到(5)发送client hello,否则继续

(2) 客户端向服务器发送inchoate client hello(CHLO)消息

(3) 服务器收到CHLO,回复rejection(REJ)消息,其中包含服务器的server config ,long-term DH public key 等

(4) 客户端收到REJ,提取并认证和存储服务器server config

(5) 客户端向服务器发送client hello消息,开始准备发送数据包,消息中包括客户端的DH public vlaue。此时客户端可以根据server config参数和自己的public value,计算出初始密钥。

(6) 服务器收到 client hello,如果不同意连接就回复REJ,同(3);如果同意连接,根据客户端的public value计算出初始密钥initial key,并回复server hello(SHLO)消息,SHLO使用initial key加密,并且其中包含服务器的临时的DH public value

(7) 客户端收到服务器的回复,如果是REJ则情况同(4);如果是SHLO,则尝试用初始密钥解密,提取出ephemeral DH public value

(8) 客户端和服务器根据得到的ephemeral public key, 计算出新的forward-secure key

(9) 双方更换为使用 forward-secure key 通信,QUIC握手过程完毕。之后会话密钥更新的流程与以上过程类似。

QUIC 1-RTT 流程图

三:QUIC 0-RTT连接

1-RTT握手建立成功后,QUIC的握手只需要0-RTT了。完整的Client Hello不仅可携带的与初始的Client Hello相同的Tag,也会包含SCID等信息

下面给出完整的交互图

猜你喜欢

转载自blog.csdn.net/qq_27071221/article/details/132780411