HTTP/2 的 Wireshark 捕获是否显示了三个帧?

Is this Wireshark capture of HTTP/2 showing three frames?

我捕获了 HTTP/2 正在获取 https://example.com。捕获的初始行上的三个条目是:

HyperText Transfer Protocol 2
    Stream: Magic
    Stream: SETTINGS, Stream ID: 0, Length 18
    Stream: WINDOW_UPDATE, Stream ID: 0, Length 4

我应该如何参考这些?我可以说它们是 stream 0 的三个初始帧并且是 MagicSETTINGSWINDOW_UPDATE 帧吗?

Magic 不是帧,而是一组特殊的字节,类似于 HTTP/1.1 消息。它在所有 HTTP/2 连接的开头发送,以允许 HTTP/1.1 服务器通过 HTTP/1.1 响应优雅地拒绝连接,以便客户端知道恢复到 HTTP/1.1.它的官方名称是 Connection Preface but is often referred to as the “Magic” message. As an aside it has an interesting history.

您可以看到 Magic 消息不是帧,因为它没有流 ID 也没有任何其他必要的 frame headers which define a frame

SETTINGS 和 WINDOW_UPDATE 消息确实是框架,并且有 several frame types defined in the HTTP/2 spec 并且在扩展中添加了更多。