前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP1.0、HTTP2.0、HTTP 3.0区别

HTTP1.0、HTTP2.0、HTTP 3.0区别

作者头像
HaC
发布2021-12-07 13:31:33
1.1K0
发布2021-12-07 13:31:33
举报
文章被收录于专栏:HaC的技术专栏HaC的技术专栏

众所周知,建立起一个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,可以在一个连接里,客户端和服务端都可以同时发送多个请求或回应,而且不用按照顺序一对一对应。

HTTP2.0与HTTP3.0
HTTP2.0与HTTP3.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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTP 0.9
  • HTTP 1.0
  • HTTP 1.1
  • HTTP 2.0
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档