HTTP 1.0,1.1,2.0版本的区别

HTTP/1.0

1996年http1.0版本发布
1、为了提高系统的效率,http1.0协议规定浏览器与服务器只保持短暂连接,请求结束就断开连接。
2、这虽然减少了空连接的资源占用,但是增加了连接次数,连接的复用性降低,每次有新的请求就要重新建立一次连接。
3、TCP连接的建立和断开需要三次握手、四次挥手,是一个很耗费时间的过程,每个连接又只能解决一次请求的通信,所以效率十分低下。

HTTP/1.1

1999年http1.1版本诞生
1、在http1.0基础上默认开启了keepalive (长链接),客户端和服务器之间建立的连接可以复用,默认请求结束后保持连接一段时间,在这一段时间,对方都没有新的请求,就可以主动断开连接,或者客户端在最后一个请求时,主动告诉服务端要断开连接。大大节省了TCP连接频繁建立和断开的开销。
2、与http1.0相比,增加了管道机制,即在同一个 TCP连接中,客户端可以同时发送多个请求,但是服务端还是按序响应,并没有完全解决“队头阻塞”,依然是串行(客户端在收到前边请求的响应前,后边的请求都要堵塞等待响应,客户端收到响应也不递送)。
3、在http1.0的基础上,还添加了Host字段,这样就可以请求同一服务器的不同站点;增加了缓存机制、扩展了错误状态码、请求范围引入了range域.。

HTTP/2.0

1999年http1.1发布之后的首个更新
1、http1.1采用了长连接和管道技术,大大提高了效率,但是服务端还是按序响应,效率还是十分低下。
2、为了解决1.1中存在的效率问题,http2.0采用了多路复用,客户端和浏览器都可以同时发送多个请求或响应,并且不用按照顺序一一对应,这是因为http2进行了二进制分帧(应用层和传输层之间的二进制分帧层),将传输信息分为更小的多个不同类型的帧,并进行标记,确保请求和响应的有序重组。
3、相比http1.1,还做了header压缩,和服务端推送(预先把一些热点等推送到缓存)。

为什么http1.1不能实现多路复用?

http1.1是基于文本分割解析的协议,服务器需要不断读入字节直到遇到分隔符,因为以分隔符分割消息的数据在完成之前不能停止解析,所以一次只能处理一个请求或响应。而且服务器无法预知解析这样的数据需要多大的内存,在保证解析效率和速度的前提下,如何划分内存是一个问题。
http2.0是基于二进制帧设计的,帧是对消息的封装,每个帧都保存了一些信息,服务器读取这些信息就知道每个帧大概需要多少字节来处理信息。分帧设计后,可以同时发送请求和响应。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值