Web协议详解与抓包实战之HTTP/2【三】
前言
《Web协议详解与抓包实战》课程学习,陶辉老师主讲
学习内容:
- HTTP–TLS/SSL–TCP/IP自上而下根据应用学习web协议HTTP/2详细知识
- 结合抓包工具实践验证:chrome下的network面板、Tcpdump、Wireshark
文章目录
HTTP/2的概念和特性
HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),简称为h2(基于TLS/1.2或以上版本的加密连接)或h2c(非加密连接)[1],是HTTP协议的的第二个主要版本,使用于万维网。
HTTP/2标准于2015年5月以RFC 7540正式发表。
HTTP/2 协议本身未要求必须使用加密,但是多数客户端 (例如 Firefox, Chrome, Safari, Opera, IE, Edge) 的开发者声明,他们只会实现通过TLS加密的HTTP/2协议,这使得经TLS加密的HTTP/2(即h2)成为了事实上的强制标准,而h2c事实上被主流浏览器废弃。
主要特性
- 传输数据量的大幅减少
- 二进制方式传输
- 标头压缩:HPACK算法
- 多路复用及相关功能
- 消息优先级
- 服务器消息推送
- 并行推送
http2.0并没有改变http1.x的语义,只是把原来http1.x的header和body部分用frame重新封装了一层而已
使用WireShark解密TLS-SSL报文
- wireshark获取TLS握手阶段生成的密钥
- wireshark从TLS中解密出来的HTTP/2的报文
h2c:在TCP上从HTTP1.1升级到HTTP/2
h2c与HTTP1.1协商握手升级到WebSocket非常相似
第一步:协商返回101 Switching Protocols
第二步:客户端发动Magic帧
统一的连接过程:h2与h2c统一
h2:在TLS上从HTTP1.1升级到HTTP/2
- ALPN扩展协商协议
升级过程
- Clinet Hello包
- 在alpn扩展中罗列出所支持的协议
- Server Hello包
- 服务端选择h2协议,告诉客户端
- 然后发送Magic帧
帧、消息、流的关系
HTTP/2核心概念
Stream、Message、Frame之间的关系
- Stream与Frame之间通过stream ID对应起来
- Message的组成:HEADERS Frame与 DATA Frame组成
多路复用
- <