前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >热点面试题:简述 http3.0~http1.0 分别有什么改进?

热点面试题:简述 http3.0~http1.0 分别有什么改进?

作者头像
Immerse
发布2024-03-13 15:02:14
1150
发布2024-03-13 15:02:14
举报
文章被收录于专栏:非同质前端札记

热点面试题:简述 http3.0~http1.0 分别有什么改进?

•http

1.带宽

2.延迟

3.浏览器阻塞(HOL blocking)

4.DNS 查询(DNS lookup)

5.建立连接(initial connection)

•http1.0

1.无法复用: 每次发送请求,都需要进行一次TCP连接,而TCP的连接释放过程又是比较耗时的。

2.队头阻塞:由于HTTP1.0规定下一个请求必须在前一个请求响应到达之前才能发送,假设前一个请求响应一直不到达,那么下一个请求就不发送,后面的请求就阻塞了。

•http1.1

1.缓存控制:新增了 e-tag 之类的缓存来控制缓存

2.长连接: 通过设置 keep-alive 保持http 连接可在一个TCP 连接上发送多个请求和响应。

3.分块传输

4.管线化:将多个 HTTP 请求(request)整批提交,而在发送过程中不需先等待服务器的回应

•http2.0

1.二进制分帧(Binary Format):http2.0 的基本单位是二进制,以前采用文本形式,健壮性不是很好,现采用二进制格式,更方便更健壮。

2.多路复用(MultiPlexing):http2.0 的多路复用,把多个请求当做多个流,请求响应数据分成多个帧,不同流中的帧交错发送,解决了TCP 链接数量多,TCP 连接慢的问题,所以,对于同一个域名只需要创建一个连接就可以了。

3.header 压缩(header compress):http2.0 压缩消息头,避免了重复请求头的传输,并减少了传输的大小

4.服务端推送(server push):http2.0 的服务端推送,浏览器发送请求后,服务端会主动发送与这个请求相关的资源,之后浏览器就不用再次发送后续的请求了。

5.请求优先级(request prioritization):http2.0 可设置请求的优先级,可按照优先级来解决阻塞问题

•http3.0

1.0RTT(就是数据包一来一回的时间消耗) 建立安全连接:基于DH秘钥交换算法,在第一个包就可以包含有效的应用数据,从而在连接延时有很大优势,可以节约数百毫秒的时间

•RTT包括三部分:往返传播时延、网络设备内排队时延、应用程序数据处理时延

2.连接迁移:http3.0 基于UDP实现,不依赖TCP 五元组,QUIC 使用自己的connection ID,即使网络五元组变化了,仍然可以维持连接。基于QUIC协议之下,我们在日常wifi和4G切换时,或者不同基站之间切换都不会重连,从而提高更好的体验

3.队头阻塞问题:TCP本身也有队头阻塞问题,QUIC协议是基于UDP协议实现的,在一条链接上可以有多个流,流与流之间是互不影响的,当一个流出现丢包影响范围非常小,从而解决队头阻塞问题。通俗来说就是:一个数据包影响了一堆数据包,它不来大家都走不了。

4.新的拥塞机制:因为替换成UDP了,所以需要提供新实现的基于UDP的拥塞控制能力

5.前向纠错:QUIC每发送一组数据就对这组数据进行异或运算,并将结果作为一个FEC包发送出去,接收方收到这一组数据后根据数据包和FEC包即可进行校验和纠错。

6.特性热插拔:因为核心能力都在用户态实现的,不依赖内核,调整拥塞控制算法等行为都变得更为简单

7.前向安全问题: 前向安全指的是密钥泄漏也不会让之前加密的数据被泄漏,影响的只有当前数据,对之前的数据无影响。

•补充:

•QUIC含义:Quick UDP Internet Connections的缩写,直译为快速UDP互联网连接。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非同质前端札记 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 热点面试题:简述 http3.0~http1.0 分别有什么改进?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档