HTTP1.0HTTP2.0HTTP 3.0区别

Posted 醋酸菌HaC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP1.0HTTP2.0HTTP 3.0区别相关的知识,希望对你有一定的参考价值。

众所周知,建立起一个TCP连接需要经过“三次握手”,而HTTP协议是建立在TCP协议之上的一种应用。

TCP建立连接时三次握手有1.5个RTT(round-trip time)的延迟,为了避免每次请求的都经历握手带来的延迟,应用层会选择不同策略的http长链接方案;TCP在建立连接的初期有慢启动(slow start)的特性,所以连接的重用总是比新建连接性能要好。

HTTP 0.9

http0.9只是一个简单的协议,只有一个GET方法,没有首部,目标用来获取html

HTTP 1.0

在 HTTP/1.0 中,HTTP 1.0规定浏览器与服务器只保持短暂的连接,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。但是这样每次请求都会重新建立和断开 TCP 连接,代价过大。

HTTP 1.1

HTTP 1.1支持持久连接(HTTP/1.1的默认模式使用带流水线的持久连接),在一个TCP连接上可以传送多个HTTP请求和响应。

HTTP 1.1的 request和reponse头中都有可能出现一个connection的头,此header的含义是当client和server通信时对于长链接如何进行处理。

Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。HTTP 1.1还支持文件断点续传,传送文件不用从头开始。

总结就是:浏览器再也不用为每个请求重新发起TCP连接了。HTTP 1.1引入cookie以及安全机制

HTTP 2.0

HTTP2.0中所有加强性能的核心是二进制传输,在HTTP1.x中,我们是通过文本的方式传输数据。

HTTP2.0 使用了HPACK(HTTP2头部压缩算法)压缩格式对传输的header进行编码,减少了header的大小。

HTTP2.0,可以在一个连接里,客户端和服务端都可以同时发送多个请求或回应,而且不用按照顺序一对一对应。

因为http 1.1 管道化特性可以让客户端一次发送所有的请求,但是有些问题阻碍了管道化的发展,即是某个请求花了很长时间,那么队头阻塞会影响其他请求。

总结就是:解决了http1.1中的队头阻塞问题,用户体验的感知多数延迟的效果有了量化的改善,以及提升了TCP连接的利用率

参考:

https://zhuanlan.zhihu.com/p/61423830

https://www.jianshu.com/p/52d86558ca57

https://mp.weixin.qq.com/s/MHYMOYHqhrAbQ0xtTkV2ig

以上是关于HTTP1.0HTTP2.0HTTP 3.0区别的主要内容,如果未能解决你的问题,请参考以下文章

一文搞懂HTTP2.0和HTTP1.0的区别

详解HTTP协议版本(HTTP/1.01.12.03.0区别)

详解HTTP协议版本(HTTP/1.01.12.03.0区别)

计算机网络_HTTP1.0HTTP1.1和HTTP2.0的区别

计算机网络_HTTP1.0HTTP1.1和HTTP2.0的区别

前端面试八股文_HTTP1.0HTTP1.1和HTTP2.0的区别