HTTP/1.0:
存在的问题,不能复用 TCP 连接,很消耗资源。
HTTP/1.1
解决了 HTTP/1.0 不能复用 TCP 连接的问题,使用流水线请求复用 TCP 连接,但是流水线请求必须按照顺序请求,原因在于 HTTP/1.1 是一个文本协议,文本协议的解析必须等到上一个请求应答完成之后才会有下一个,这就有可能发生流水线头部阻塞。
HTTP/2.0
解决了 HTTP/1.0 流水线头部阻塞的问题,使文本协议变成二进制协议,在传输的过程中传输的是二进制的帧,根据二进制帧的格式,可以对乱序的请求结果进行拼接,解决了头部阻塞的问题。但是如果传输的过程中,有一个包丢了,请求还会等待重传,一次性把数据返回给用户层。
HTTP/2.0 + PUSH
优化了 HTTP/2.0 的响应速度,服务器根据浏览器的请求,直接把浏览器所需要的资源一次性全部 PUSH 过去,减少 RTP。
HTTP/3.0
使用 UDP,解决了数据包之间的阻塞,同时,还可以根据数据包之间的关系,根据 FEC(前向错误纠正) 包计算出丢的包的数据。
网友评论