直接汇报特性太 low 了, 要有逻辑, 有延伸, 有底层知识, 我就选择一个从 HTTP 演进路线的逻辑回答这个问题
-
HTTP2 是什么
-
HTTP 0.9
-
HTTP 1.0
-
HTTP 1.1
-
HTTP 2.0
-
未来 HTTP 发展
HTTP2 是对历史超文本传输协议的几点不足而改进的解决方案.
HTTP/0.9 最初被设计为仅仅用来获取 HTML 文档的协议, 非常简单且局限.
HTTP/1.0 增加了版本号, HTTP 首部, 一些额外的方法, 多媒体数据处理, 但不能不支持长连接和缓存等特性
HTTP /1.1 中引入了 keep-alive, 管线化技术, 缓存控制机制, 内容协商机制, Host 字段
而 HTTP/2.0 将 HTTP /1.1 进一步优化, 把解决方案下方到传输层,
- 带来了二进制分帧传输代替文本传输
- 而这种传输方式又带来了多路复用的, 可以在一个连接中传递任意数据块, 解决了 keep-alive 中 队头阻塞的问题
- 以及 header 压缩 原理是采用 HPACK 算法, 服务端和客户端维护一个字典, 只传递索引, 以及采用哈夫曼编码, HTTP/2还彻底解决了
- 请求 - 应答模式,实现了服务端推送
未来还要解决 TCP 和 TCP+TLS 建立连接的延时的问题, 于是 采用了 基于 UDP 的 QUIC
素材
QUIC 它的流控功能在用户空间而不在内核空间
0RTT 0RTT 是指双方通信的第一个数据包就可以携带有效的业务数据。