http1.1 和 http2.0、http3.0的区别

一、http1.1

特点

  • 明文传输:
    没有对报文进行加密,可以直接看到报文内容。

  • 报文压缩:
    只对报文主体压缩,不压缩报文首部

  • 持久连接(keep-alive):
    只握手一轮,不需要对每个请求进行一轮握手,请求和响应都可以放在一个连接里面,但是每个浏览器都对每个域持久连接数量有限制

  • 一次一份:
    一次只能请求一个,只有收到上一个请求响应才能进行下一个请求

  • 队头阻塞:
    如果在请求中有发生错误,之后的请求就无法接收了

管线化技术:单个连接可以发送多个请求,但是响应的时候必须按照发送的顺序接收,如果响应有失败的情况就会很难处理


二、http2.0

特点

  • 报文压缩
    引入了 HPACK的压缩算法对报文首部及报文主体全部压缩
    HPACK: 要求浏览器和服务器都保存一张静态只读的表,比如: HTTP/1.1 200 OK 起始行 在http2.0中变为 :status:200

    在这里插入图片描述

  • 多路复用
    1、主要解决 http1.1队头阻塞的问题
    2、单个TCP连接进行交错发送请求和响应,请求和响应之间互不影响
    3、请求和响应报文被划分为各个不同的帧,首部帧(报文首部)数据帧(报文实体),每帧上具有流标识符,正因为有流标识符,使得帧不用按照顺序抵达对方那里,即使没有按照顺序抵达,最终有这个流标识符就可以按照顺序进行组合成完整的内容,并且帧类型里可以设置优先级,这样来标注流的权重

  • 服务器推送
    将浏览器进行请求的时候,服务器可以不像以往一样等浏览器解析html时再一个一个的响应,而是把浏览器后续可能需要的文件一次性全部发送过去
    缺点:1、点错一个网页就会多出很多缓存;2、隐含安全性问题:造成DDos非对称攻击

http2只解决了HTTP层面的队头阻塞,还存在TCP层面的队头阻塞


三、http3.0

	1、使用 UDP 协议,并在 UDP 协议之上新增一个协议 QUIC 协议。 QUIC 是因为要能够广泛部署才只能使用 UDP 的, 实际上的机制大部分还是采用的TCP的
	
    2、将 TCP 握手和 TLS 握手整合到一起 变成 QUIC 握手

在这里插入图片描述

QUIC

1、http3.0 在应用层上并没有所谓的数据帧的概念,把数据帧移到了 QUIC 里面,相当于在传输层就有了数据帧,从源头解决了队头阻塞的问题, 实现多路复用。
2、QUIC协议会将从应用层过来的数据封装成 QUIC 帧(和http2.0的帧很像,也是加了流标识符)封装为 QUIC 数据包, QUIC 数据包会加上一些信息, 最重要的是加上了 Connection ID(连接ID),如果网络发生全面变化,比如从wifi变成 4G 网络,虽然IP 地址发生改变,但是 connection ID 是没有变化的,那么就可以使用 Connection ID 来识别为同一个连接,避免再次握手,这是QUIC 其中一个速度快的原因。
3、QUIC 数据包会把里面的QUIC帧加密,接着QUIC数据包会被UDP 封装成数据段,UDP 就会加上端口号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值