1. HTTP部署指的是什么?
- Web浏览器(pc & mobile)
- 非浏览器(HTTP API)
- Web服务
- 中间介质(代理、公司防火墙、反向代理、CDN)
2. HTTP/2.0支持哪些新特性?
- 请求/响应的多路复用
- 请求优先级
- 首部压缩
- 服务器推送
- 二进制分帧数据层
- 流量控制
3. 检查是否支持HTTP/2.0?
- HTTPS 使用ALPN协商
- HTTP 使用Upgrade机制
4. 多路复用是什么?
- 通信过程都是在一个TCP连接上完成的
- 该连接可以承载任意数量的双向数据流
- 每个数据流有一个唯一的整数标识符
- 每个数据流以消息的形式发送
- 消息由一个或多个帧组成
- 这些帧可以乱序发送
- 接收方根据帧首部的流标识符重新组装
5. 请求优先级是什么?
- 浏览器在发现资源时分派请求,指定每个流的优先级
- 服务器决定最终响应次序
- HTTP/2.0并没有规定处理优先级的具体算法
6. 首部压缩是什么?
- 客户端/服务器使用“首部表”来跟踪和存储之前发送的键-值对
- 通过追加/替换的方式发送差异数据
7. 服务器推送的特点?
- 推送资源遵守同源策略
- 客户端可以缓存推送过来的资源
- 推送资源可以由不同的页面共享
- 服务器可以按照优先级推送资源
8. 服务器推送的过程?
- 服务端推送PUSH_PROMISE帧,该帧只包含资源的HTTP首部
- 客户端接收到后,选择接受/拒绝推送
- (服务器推送应遵循请求--附加响应模型,且PUSH_PROMISE帧必须在返回响应前发送)
9. 使用二进制分帧数据层通信的过程是什么?
- 创建新流
- 发送HTTP首部
- 发送DATA数据帧
10. 数据帧的组成是怎样的?
- 数据帧共享一个8字节的首部,该首部包含一个16位的长度、一个8位的类型、一个8位的标志、一个1位的保留位、一个31位的流标识符。
11. 创建新流的方式有哪些?
- 客户端发送HEADERS帧
- 服务器端发送PUSH_PROMISE帧
- (客户端流ID为偶数,服务器端流ID为基数,且各自ID递增)
12. 流量控制的特点是什么?
- 可以控制连接中每个流占用的资源
- 接收方可以针对特定的流广播较低的窗口大小,以限制其传输速度
- 接收方可限定推送数量、限定双向并发流的最大数量
- 客户端和服务器使用SETTING帧设置