HTTP/1.1协议的不足
1)同一时间,一个连接只能对应一个请求,大多数浏览器只允许同时并发6个连接,同一时间最多同时发送6个请求
2)客户端的一个请求对应于服务端的一个响应,请求由客户端发起
3)同一个会话的多次请求,头信息会被重复传输
SPDY
主要是想拿来提高网络速度,是一个基于TCP的应用层协议,且强制要求使用SSL/TLS协议,是HTTP/2的前身
HTTP/2
特性:
同一时间,所有通信都在一个TCP连接上完成,可承载任意数量的双向数据流(并发,多路复用)
来自不同数据流的帧可以交错发送,最后再根据标识符重新组装
优先级:每个数据流都有一个管理权重和依赖关系,可以传递优先级树
头部压缩:重复的头字段只发索引
服务器推送:服务器可以对客户端的一个请求发送多个响应(但还是需要C先发请求)
问题:
对头阻塞:因为是基于TCP协议的
握手延迟:比HTTP多几个RTT(往返延时一来一回的时间)
HTTP/3
基于UDP协议的QUIC协议实现
因为是基于UDP传输,所有可靠性由QUIC保证
特性:
连接迁移(QUIC不以TCP4要素作为标识,而是以Connection ID来标识一个连接)