[TOC]
1、HTTP/1.1 发展中遇到的问题
1.1、发生的变化
1.2、高延迟问题
1.3、巨大的头部
1.4、HTTP1.1的优化
1.5、HTTP/1.1 不支持服务器推送消息
2、HTTP2特征概述
2.1、提出背景
- http2协议可以在http协议下,也可以在TLS-SSL协议下使用。
- 浏览器强制要求HTTP2只能被HTTPS解析,也就是使用TLS-SSL协议。
2.2、特性
3、在TCP上从HTTP1升级到HTTP2
3.1、HTTP/2 是不是必须基于TLS/SSL 协议?
3.2、h2与h2c
3.3、H2C:不使用 TLS 协议进行协议升级
4、h2如何建立会话?
4.1、通讯过程
4.2、服务器端选择协议
5、Stream、Message、Frame 间的关系
5.1、定义
5.2、Stream、Message、Frame 间的关系
5.3、传输中无序
- 同一个stream必须是有序的
- 跨越stream可以是无序的
6、帧格式:Stream流ID的作用
6.1、对比websocket
6.2、作用
7、帧格式:帧类型及设置帧的子类型
7.1、定义
7.2、帧的类型
7.3、setting设置帧
8、HPACK 如何减少HTTP 头部的大小?
8.1、定义
8.2、静态字典
8.3、动态字典
动态表包含以先进先出的顺序维护的 header 字段列表。动态表中的第一个条目和最新条目在最低索引处,而动态表的最旧条目在最高索引处。
动态表最初是空的。当每个 header 块被解压缩时,将添加条目。动态表可以包含重复的条目(即,具有相同名称和相同值的条目)。因此,解码器不得将重复的条目视为错误。
编码器决定如何更新动态表,因此可以控制动态表使用多少内存。为了限制解码器的存储需求,动态表的 size 受到严格限制。
解码器在处理 header 字段表示列表时更新动态表。
9、HPACK 中如何使用Huffman树编码?
9.1、原理
## 9.2、构造过程
10、HPACK 中整型数字的编码
这里编码的是索引位置,即使下文11章节所说的索引表下标
10.1、小于31
10.2、大于31
11、HPACK 中HEADER 的编码格式
11.1、HEADER帧的格式
11.2、动态表
11.3、字面编码
11.4、格式
11.5、动态表控制
12、服务器端的主动消息推送
12.1、价值
12.2、帧格式
12.3 可以禁用
13、stream的状态变迁
13.1、stream特性
13.2、message特性
13.3、发送例子
13.4、stream状态的变化
14、RST_STREAM帧及常见错误码
14.1、定义
14.2、常见的错误码
15、不同请求的优先级
15.1、Priority 优先级设置帧
15.2、优先级
16、不同于 TCP 的流量控制
16.1、为什么需要?
16.2、如何进行?
16.3、流量控制帧
16.4、流控制窗口
16.5、并发流
17、HTTP/2 的问题
17.1、TCP 以及 TCP+TLS 建链握手过多的问题
17.2、多路复用与 TCP 的队头阻塞问题
17.3、TCP的问题
18、七层负载均衡做了些什么?
18.1、四层负载均衡
18.2、七层负载均衡协议转换举例
18.3、协议转换
18.4、WAF 防火墙
18.5、负载均衡算法
18.6、缓存功能