如何区分数据或QUIC协议帧是否跟随UDP头?

网络工程 线鲨
2022-02-23 03:14:49

我正在使用 Wireshark 分析网络流量,我需要以编程方式区分数据或 QUIC 协议帧是否遵循 UDP 标头。

到目前为止,我将每个源端口或目标端口等于 80 或 443 的数据包归类为 QUIC 协议数据包。但是有一个问题:如果数据包中没有QUIC协议头,只有数据(有效负载)部分,如果源端口或目标端口等于80或443,那么我再次将此数据包归类为QUIC协议数据包,但它是不是。

以下是截图:

在此处输入图像描述

在此处输入图像描述

在上图中,UDP 报头中的目的端口都是 443。因此,这两个数据包都被归类为 QUIC。我怎么解决这个问题?我应该进行哪些检查以确保它是 QUIC 协议标头?

1个回答

我使用 tshark 显示过滤器的测试gquic.cid显示了 GQUIC 数据包(来自 Chrome),但没有显示我发送到端口 443 的其他测试 UDP 数据包。Tshark 与 Chrome 在同一台计算机上运行。

 $ tshark -V -Y gquic.cid
 Frame 25: 72 bytes on wire (576 bits), 72 bytes captured (576 bits) on interface 0
 [...]
    Protocol: UDP (17)
    Header checksum: 0x179e [validation disabled]
    [Header checksum status: Unverified]
    Source: 192.168.0.208
    Destination: 216.58.198.227
User Datagram Protocol, Src Port: 38046, Dst Port: 443
    Source Port: 38046
    Destination Port: 443
    Length: 38
    Checksum: 0xa3b1 [unverified]
    [Checksum Status: Unverified]
    [Stream index: 3]
GQUIC (Google Quick UDP Internet Connections)
    Public Flags: 0x0c
        .... ...0 = Version: No
        .... ..0. = Reset: No
        .... .1.. = Diversification nonce: Yes
        .... 1... = CID Length: 8 Bytes
        ..00 .... = Packet Number Length: 1 Byte (0x0)
        .0.. .... = Multipath: No
        0... .... = Reserved: 0x0
    CID: 1829611605485631681
    Packet Number: 3
    Payload: 17810e1e6eafe83b6950dedd638591c9807d0252

另外,我看到 Cellstream 发布了一个 Wireshark 配置文件来查看 QUIC 流量,他们的帖子可能会有所帮助。