HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

Posted 爱因诗贤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)相关的知识,希望对你有一定的参考价值。

基于 TLS 协议运行的 HTTP/2 被称为 h2,直接在 TCP 协议之上运行的 HTTP/2 被称为 h2c这篇文件通过抓包分析 h2 是如何被建立的来介绍一下 h2

1.TLS 通讯过程

1.1 TLS 通讯步骤

1.2 TLS 流程示意图

HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

Tips:关于 TLS 协议会在后续文章详细介绍,这里只是简单说明一下。

2.抓包分析

这里以新浪首页 sina.com.cn 为例,抓取到的报文步骤如下:
步骤1:Client Hello
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

Tips:Client Hello 报文中的 ALPN 表示客户端告诉服务端支持哪些协议,如图中有 h2(基于TLS的HTTP/2)和 HTTP/1.1

步骤2:Server Hello, Change Cipher Spec, Encrypted Extensions, Finished
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

Tips:Server Hello 报文中的 ALPN 表示服务端告诉客户端支持哪些协议,如图中有 h2(基于TLS的HTTP/2)

步骤3:Change Cipher Spec, Finished
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

步骤4:客户端发送 Magic 帧
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

Tips:这是一个固定值,Magic 帧的值PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n,十六进制 ASCII 表示为 0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a,它发送完毕之后紧跟 SETTING 帧。

步骤5:客户端发送 SETTING 帧
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

Tips:SETTING 帧可以是空的。

步骤6:服务端确认 SETTING 帧
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

步骤7:服务端发送 SETTING 帧
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)

步骤8:客户端确认 SETTING 帧

Tips:完成以上步骤即可建立 HTTP/2 的链接

扫码关注爱因诗贤

以上是关于HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)的主要内容,如果未能解决你的问题,请参考以下文章

通过抓包分析gPRC协议

Wireshark抓包分析TCP协议:三次握手和四次挥手

Wireshark抓包分析TCP协议:三次握手和四次挥手

WireShark如何抓包,各种协议(HTTPARPICMP)的过滤或分析,用WireShark实现TCP三次握手和四次挥手

抓包三次握手

抓包分析TCP的三次握手和四次握手