文章目录
- HTTP/2 协议介绍
-
-
- 1.HTTP/1.1 发明以来发生的变化
- 2.HTTP/1.1 的高延迟问题
- 3.高延迟 VS 高带宽
- 4.HTTP/2 特性
- 5.HTTP/2的应用情况
- 6.HTTP/2 主要特性
- 7.Chrome 浏览器检测 HTTP/2 插件
- 8.TLS1.2 的加密算法
- 9.Wireshark 如何解密 TLS 消息?
- 10.HTTP/2 是不是必须基于 TLS/SSL 协议?
-
HTTP/2 协议介绍
1.HTTP/1.1 发明以来发生的变化
- 从几
KB
大小的消息,到几MB
大小的消息 - 每个页面小于 10 个资源,到每页面 100 多个资源
- 从文本为主的内容,到富媒体(如图片、声音、视频)为主的内容
- 对页面内容实时性要求的应用越来越多
2.HTTP/1.1 的高延迟问题
- 高延迟带来页面加载速度的降低
- 随着带宽的增加,延迟并没有显著下降
- 并发连接有限
- 同一连接同时只能在完成一个 HTTP 事务(请求/响应)才能处理下一个事务
3.高延迟 VS 高带宽
- 単连接上的串行请求
- 无状态导致的高传输量(低网络效率)
- HTTP/1.1 不支持服务器推送消息
4.HTTP/2 特性
- SPDY(2012-2016)
- HTTP2(RFC7540,2015.5)
- 在应用层上修改,基于并充分挖掘 TCP 协议性能
- 客户端向 server 发送 request 这种基本模型不会变
- 老的 scheme 不会变,没有 http2://
- 使用 http/1.x 的客户端和服务器可以无缝的通过代理方式转接到 http/2 上
- 不识别 http/2 的代理服务器可以将请求降级到 http/1.x
5.HTTP/2的应用情况
- 截止 2015.5.17 号,互联网上使用 HTTP/2协议的站点已经达到 37.2%
- 快速推广的原因:未改变 HTTP/1.1 的语义,基于 TCP,仅在应用层变动
6.HTTP/2 主要特性
- 传输数据量的大幅减少:以二进制方式传输,标头压缩
- 多路复用及相关功能:消息优先级
- 服务器消息推送:并行推送
7.Chrome 浏览器检测 HTTP/2 插件
- HTTP/2 and SPDY indicator
8.TLS1.2 的加密算法
-
常见加密套件。
-
对称加密算法:AES_128_GCM:每次建立连接后,加密密钥都不一样。
-
密钥生成算法 ECDHE:客户端与服务器通过交换部分信息,各自独立生成最终一致的密钥。
9.Wireshark 如何解密 TLS 消息?
- 原理:获得
TLS
握手阶段生成的密钥,通过Chrome
浏览器DEBUG
日志中的握手生成密钥 - 步骤:1.配置
Chrome
输出DEBUG
日志,配置环境变量SSLKEYLOGFILE
,在Wireshark
中配置解析DEBUG
日志,编辑->首选项->Protocols->TLS/SSL
。
步骤1:打开环境变量
步骤2:新建用户变量 SSLKEYLOGFILE
,路径如 C:\www\chrome\mytestssl.txt
:
步骤3:打开 Wireshark
中的 编辑->首选项->Protocols->TLS->(Pre)-Master-Secret log filename
浏览选择上述生成的文件:
步骤4:以抓取浏览器访问 sina.com.cn
首页为例,抓取到的报文如下:
10.HTTP/2 是不是必须基于 TLS/SSL 协议?
IETF
标准不要求必须基于TLS/SSL
协议。- 浏览器要求必须基于
TLS/SSL
协议。 - 在
TLS
层ALPN(Application Layer Protocol Negotiation)
扩展作协商,只认HTTP/1.x
的代理服务器不会干扰HTTP/2
。 schema:http://
和https://
默认基于80
和443
端口。h2
:基于TLS
协议运行的HTTP/2
被称为h2
。h2c
:直接在TCP
协议之上运行的HTTP/2
被称为h2c
。
扫码关注爱因诗贤