热点面试题:简述 http3.0~http1.0 分别有什么改进?
发布时间:2023-01-11 11:47:33 323
相关标签: # 服务器# 数据# 服务器# 技术# 设备
热点面试题:简述 http3.0~http1.0 分别有什么改进?
- http
-
带宽
-
延迟
-
浏览器阻塞(HOL blocking)
-
DNS 查询(DNS lookup)
-
建立连接(initial connection)
- http1.0
-
无法复用
: 每次发送请求,都需要进行一次TCP连接,而TCP的连接释放过程又是比较耗时的。 -
队头阻塞
:由于HTTP1.0规定下一个请求必须在前一个请求响应到达之前才能发送,假设前一个请求响应一直不到达,那么下一个请求就不发送,后面的请求就阻塞了。
- http1.1
-
缓存控制
:新增了 e-tag 之类的缓存来控制缓存 -
长连接
: 通过设置 keep-alive 保持http 连接可在一个TCP 连接上发送多个请求和响应。 -
分块传输
-
管线化
:将多个 HTTP 请求(request)整批提交,而在发送过程中不需先等待服务器的回应
- http2.0
-
二进制分帧(Binary Format)
:http2.0 的基本单位是二进制,以前采用文本形式,健壮性不是很好,现采用二进制格式,更方便更健壮。 -
多路复用(MultiPlexing)
:http2.0 的多路复用,把多个请求当做多个流,请求响应数据分成多个帧,不同流中的帧交错发送,解决了TCP 链接数量多,TCP 连接慢的问题,所以,对于同一个域名只需要创建一个连接就可以了。 -
header 压缩(header compress)
:http2.0 压缩消息头,避免了重复请求头的传输,并减少了传输的大小 -
服务端推送(server push)
:http2.0 的服务端推送,浏览器发送请求后,服务端会主动发送与这个请求相关的资源,之后浏览器就不用再次发送后续的请求了。 -
请求优先级(request prioritization)
:http2.0 可设置请求的优先级,可按照优先级来解决阻塞问题
- http3.0
-
0RTT(就是数据包一来一回的时间消耗) 建立安全连接
:基于DH秘钥交换算法,在第一个包就可以包含有效的应用数据,从而在连接延时有很大优势,可以节约数百毫秒的时间
- RTT包括三部分:往返传播时延、网络设备内排队时延、应用程序数据处理时延
-
连接迁移
:http3.0 基于UDP实现,不依赖TCP 五元组,QUIC 使用自己的connection ID,即使网络五元组变化了,仍然可以维持连接。基于QUIC协议之下,我们在日常wifi和4G切换时,或者不同基站之间切换都不会重连,从而提高更好的体验 -
队头阻塞问题
:TCP本身也有队头阻塞问题,QUIC协议是基于UDP协议实现的,在一条链接上可以有多个流,流与流之间是互不影响的,当一个流出现丢包影响范围非常小,从而解决队头阻塞问题。通俗来说就是:一个数据包影响了一堆数据包,它不来大家都走不了。 -
新的拥塞机制
:因为替换成UDP了,所以需要提供新实现的基于UDP的拥塞控制能力 -
前向纠错
:QUIC每发送一组数据就对这组数据进行异或运算,并将结果作为一个FEC包发送出去,接收方收到这一组数据后根据数据包和FEC包即可进行校验和纠错。 -
特性热插拔
:因为核心能力都在用户态实现的,不依赖内核,调整拥塞控制算法等行为都变得更为简单 -
前向安全问题
: 前向安全指的是密钥泄漏也不会让之前加密的数据被泄漏,影响的只有当前数据,对之前的数据无影响。
- 补充:
- QUIC含义:Quick UDP Internet Connections的缩写,直译为快速UDP互联网连接。
最后:
- 公众号回复
加群
或 扫码
, 即可加入前端交流学习群,长期交流学习...... - 欢迎关注『前端进阶圈』,一起探索学习前端技术......
文章来源: https://blog.51cto.com/u_14399386/5995864
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报