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通过协商值发生了改变:
