quic 协议中 Connection ID 的协商机制
本文分享自天翼云开发者社区《quic协议中Connection ID的协商机制》.作者:沈****扬
quic 协议是基于 UDP 的应用层可靠协议。
由于 UDP 本身是无连接的服务,因此 quic 数据包的连接 ID(connection id)用于确定该数据包属于哪个 quic 连接。长包头包含两个连接 ID:目标连接 ID(DCID=Destination Connection ID)和目标连接 ID(SCID=Source Connection ID)。
通常客户端的 DCID 是由客户端初始数据包确定,通过在初始数据包中携带 DCID 告知服务端。但是服务端可以在接收到客户端的初始数据包后,对客户端的 DCID 字段进行变更。
参考 RFC9000 文档,如下所示:客户端发送初始数据包标记 DCID 为 S1,服务端收到客户端的初始数据包后,响应给客户端初始数据包,此时变更了直接的 SCID 为 S3。而客户端在收到该报文后,也将自己的 DCID 设置为 S3,从而改变了 DCID 字段。
具体的,我们可以通过客户端模拟,下面是通过 wireshark 抓包的实例,可以看到 DCID 通过协商值发生了改变:







评论