浏览器中的网络
HTTP1
HTTP/0.9
被称为超文本传输协议
- 只有一个请求行,没有请求头和请求体
- 服务器没有返回头信息
- 以 ASCll 字符流来传输
HTTP/1.0
引入了请求头和响应头
响应头信息文件类型、服务器文件压缩、语言、文件编码类型
引入状态码
Cahe 机制
用户代理字段
HTTP/1.1
- 为每个域名最多同时维护6个TCP持久连接
- 虚拟主机支持,增加 host 字段
- 提供了对动态内容的支持,引入Chunk transfer机制
- 客户端 cookie 支持、安全机制
HTTP2
http/1.1 的问题
- TCP 启动慢
- 多个 TCP 会竞争固宽
- 队头阻塞问题
多路复用机制
一个域名只使用一个TCP长连接和消除队头阻塞问题
通过引入二进制分帧层,就实现了HTTP的多路复用技术
HTTP/2 其他特性
- 可以设置请求优先级
- 服务器推送
- 头部压缩
HTTP3
RTT
网络延迟又称为RTT(Round Trip Time)。从浏览器发送一个数据包到服务器,再从服务器返回数据包到浏览器的整个往返时间称为RTT。
HTTP/2中所存在的一些问题
主要包括了TCP的队头阻塞、建立TCP连接的延时、TCP协议僵化
QUIC 协议
HTTP3 的挑战
- 服务器和浏览器端都没有对HTTP/3提供比较完整的支持
- 系统内核对UDP的优化远远没有达到TCP的优化程度,这也是阻碍QUIC的一个重要原因
- 中间设备僵化的问题。这些设备对UDP的优化程度远远低于TCP
HTTP3 的未来
- 从标准制定到实践再到协议优化还需要走很长一段路;
- 因为动了底层协议,所以HTTP/3的增长会比较缓慢,这和HTTP/2有着本质的区别。