HTTP1.0、1.1、2.0、3.0的区别

HTTP 1.0

在这里插入图片描述

短连接: 每次请求都要重新建立tcp请求,即三次握手,性能较差
无host头域: 也就是http请求头里的host’
不允许断点传输: ,而且不能只传输对象的一部分,需要传输整个对象

HTTP 1.1

引入更多缓存策略:在HTTP1.0中主要使用header里的If-Modefied-Since,expires来做为缓存判断的标准,HTTP1.1则引入更多的缓存控制策略例如Entity tag,if-ynmodified-Since,if-match等更多可供选择的缓存头控制策略
在请求头引入range头域: 它允许只请求资源的某个部分,即返回码是206,这样就方便开发者自由选择以便于充分利用带宽和连接
Host头处理: 在HTTP 1.0中认为每台服务器都绑定唯一一个IP地址,因此,请求消息中的URL并没有传递主机名,但随着虚拟主机技术的发展,在一台服务器上可以存在多个虚拟主机,并且他们共享一个IP地址
长连接支持: HTTP 1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求,减少建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection:keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点

HTTP 2.0

新的二进制格式: HTTP1.X的解析是基于文本,基于文本协议的格式解析存在天然的缺陷,文本的表现形式有多样性,要做到健壮性考虑的考虑必然很多,二进制则不同,只认0,1的组合,基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮
多路复用: 即连接共享,一个连接上可以有多个request,一个request对应一个id,每个连接的request可以随机的混杂在一起,接收方可以根据request的id将request再归属到各自不同的服务端请求里面
HTTP 2.0的多路复用和HTTP 1.1中的长连接复用有什么区别?
HTTP/1.1 Pipeling解决方式为,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某个请求超时等,后续请求只能被阻塞,这就是常说的线头阻塞
HTTP/2多个请求可同时在一个连接上并行执行,某个请求任务耗时严重,不会影响其它连接的正常执行
header压缩: HTTP1.X的header中带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields,避免重复的header的传输,又减少了需要传输的大小
服务端推送: HTTP2.0也具有server push功能

HTTP 3.0

基于google的QUIC协议,而quic协议是使用udp实现的减少了tcp三次握手以及tls握手时间
解决了http 2.0中前一个stream丢包导致后一个stream被阻塞的问题(TCP层的对头阻塞)
优化了重传策略,重传包和原包的编号不同,降低后续重传计算的消耗
连接迁移,不在用tcp四元组确定一个连接,而是用一个64位随机数来确定这个连接
更合适的流量控制

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白羽uou

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

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

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

打赏作者

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

抵扣说明:

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

余额充值