http1.0,1.1,2.0的区别

本文介绍http1.0/1.1/2.0/3.0的演化过程和各自的特性及优缺点

1. HTTP/1.0

优点:

  • 简单易实现:HTTP/1.0设计非常简单,容易实现并广泛应用于早期的互联网。
  • 请求/响应模式:通过简单的请求/响应模式,能够高效地传输HTML文档和其他资源。

缺点:

  • 每个请求一个连接:HTTP/1.0中,每个请求都需要建立一个新的TCP连接,这导致了大量的连接开销(如TCP握手)。
  • 带宽利用率低:每次请求都需要一个独立的连接,并且连接往往在响应后立即关闭,无法有效利用带宽。
  • 无状态:HTTP/1.0是无状态协议,服务器无法识别是否是同一个客户端发起的连续请求,难以实现会话管理。

问题: HTTP/1.0的问题主要集中在连接管理和带宽利用率上。随着网络应用的复杂性增加,HTTP/1.0显得不足。

总结:http1.0适用于早期互联网,设计简单。缺点:1.短链接,导致大量连接开销(tcp连接过程和资源申请释放)2.无状态,每个请求一个连接,无法识别同一个客户端的多个连续请求,无法实现会话管理如购物车

2. HTTP/1.1

优点:

  • 持久连接:引入了持久连接(Keep-Alive),允许多个请求和响应通过同一个TCP连接传输,减少了连接建立和关闭的开销。
  • 管道化:HTTP/1.1支持请求管道化(Pipelining),即可以在收到前一个响应之前发送下一个请求,从而提高传输效率。
  • 缓存控制:增加了更细粒度的缓存控制头部字段(如Cache-Control),以更好地利用客户端和代理服务器的缓存。
  • 带宽优化:支持分块传输编码(Chunked Transfer Encoding),允许在传输过程中动态生成内容,减少了传输延迟。
  • 虚拟主机:通过Host头部字段支持同一IP地址托管多个域名(虚拟主机),提升了服务器资源利用率。

缺点:

  • 头部阻塞:服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞;虽然引入了管道化,但由于存在“队头阻塞”(Head-of-Line Blocking)问题,导致性能提升有限,特别是在高延迟网络中。
  • 复杂性增加:引入的多个新特性使得实现和调试变得更加复杂。
  • 头部冗长:请求/响应头部未经压缩直接发送,首部信息过长会造成延迟
  • 单向请求:请求只能由客户端开始,服务端被动响应

问题解决: HTTP/1.1解决了HTTP/1.0中每次请求都需要建立新连接的问题,显著提升了带宽利用率和传输效率。然而,队头阻塞问题仍然未能有效解决。

总结:1.http1.1改进了http1.0的短链接问题,支持长连接;2.支持pipline连续发送请求,性能优于一请求一响应模式;3.虽然支持pipline但服务器的响应是按顺序的,如果服务器响应慢,会造成‘队头阻塞’问题;4.仅支持压缩body,不能压缩头部,会造成网络延迟 5.单向请求,只能由客户端发起请求,服务器被动响应,不能灵活处理业务

3. HTTP/2.0

优点:

  • 二进制协议:HTTP/2.0改用二进制格式传输数据,而不是HTTP/1.x的文本格式,发送和解析都直接使用二进制,提高了解析效率和传输可靠性。
  • 多路复用:使用streamID,允许同一连接上并行发送多个请求和响应,彻底解决了队头阻塞问题,显著提升了传输性能。一个tcp连接可以包含多个stream,每个stream可以包含多个message(包含头部和包体),每个message包含多个frame,即http2最小单位;对于不同的http请求,根据streamID来区分,因此支持并行发送,服务端可以根据ID来进行消息的组装和回复
  • 头部压缩:通过HPACK算法对HTTP头部进行压缩,减少了带宽占用,尤其是在多次请求相似资源时。HPACK算法:客户端和服务端同时维护一张头部信息表,所有头部字段存入表,生成唯一索引号,当发送相同的头部时,只发送索引号
  • 服务器推送:允许服务器在客户端请求之前主动推送资源,减少了客户端等待时间,提升了页面加载速度。

缺点:

  • 实现复杂性:HTTP/2.0的实现更加复杂,对服务器和客户端的要求更高。
  • 不兼容旧设备:由于引入了新特性,部分旧设备或不支持HTTP/2.0,或需要降级到HTTP/1.1。

问题解决: HTTP/2.0主要解决了HTTP/1.1中的队头阻塞问题,并通过多路复用和头部压缩等技术显著提高了传输效率和用户体验。

推荐学习 https://xxetb.xetslk.com/s/p5Ibb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wjq++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值