HTTP 2.0
前提 HTTP 1.0 缺点
- 连接无法复用(TCP 三次握手,连接开销)
- head of line blocking(需要前一个完成,后面才能继续)
HTTP 2.0 二进制分帧
引用网络图片
- Length: 整个 frame 的开始到结束
- Type: frame 的类型
- Stream ID:流控制
- Payload: 请求正文
http2.0 把原来 http1.x 的 header 和 body 部分用 frame 重新封装了
HTTP 2.0 将请求和响应数据分割为更小的帧,采用二进制编码
1. 影响 HTTP 请求的因素
1.1 带宽
1.2 延迟
- 浏览器阻塞
浏览器所支持最大连接数量,超过之后将阻塞
- DNS 查询
- 建立连接(三次握手,慢启动)
2. HTTP 1.0 与 1.1 区别
- 缓存处理
http 1.1 缓存控制策略(缓存头)
- 带宽优化以及网络连接的使用
http 1.0 需要的包,服务器整个所有包都回应
http 1.1 需要的包,回应对应的包
- 错误通知管理
http 1.1 增加 24 中错误状态响应码
- Host 头处理
- 长连接
http 1.1 支持长连接
3. HTTP 1.0 与 2.0 区别
- http 2.0 使用新的二进制格式,http 1.x 使用文本格式
- 多路复用
http 2.0 支持同一个连接并发处理多个请求,并发处理数量多
- header 数据压缩
http 2.0 使用 HPACK 算法对 header 进行压缩,传输速度增加,通信两端有 header_fields 表,通过标差量更新
- 服务器推送,服务器端一并发送给客户端
4. HTTP 与 HTTPS 区别
HTTP -> SSL/TLS -> TCP
- HTTPS 需要 CA 请求证书
- HTTPS 密文
- 连接方式,端口不同
- HTTPS 防止被劫持
5. RPC 与 HTTP 区别
- 性能(序列化和反序列化)
RCP 通过 thrift 二进制传输,HTTP json 序列化更消耗性能
- 协议
RPC 可以基于 TCP 也可以基于 HTTP 协议
总结:
HTTP 1.0: 短连接
HTTP 1.1: 长连接
HTTP 2.0: 长连接 + IO 多路复用模型