当前位置: 首页 > article >正文

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

巨人的肩膀
3.1 HTTP 常见面试题 | 小林coding

HTTP1.0与HTTP1.1

HTTP1.1在HTTP1.0上的改进:

  • 使用长连接的方式改善了HTTP1.0中短连接造成的性能开销
  • 支持管道网络传输,不必等到上一个的响应,就可以接着发送第二个请求,减少整体响应时间

HTTP1.1的缺点:

  • HTTP报文中的头部信息未经压缩就发送,首部信息开销较大
  • 服务器响应是按照请求达到的顺序进行响应的,如果某个响应很慢,就会导致队头阻塞
  • 没有请求优先级控制
  • 请求只能从客户端开始,服务器只能被动响应
  • 明文传输,不安全

HTTP2.0

Http2.0是基于HTTPS的,所以在安全性上得到了保障。
HTTP2.0在HTTP1.1上的改进:

  • 头部压缩,头部信息压缩(HPACK算法),传输量减少,性能得到提高
  • 采用二进制格式,头信息和body都是二进制,增加了传输效率
  • 并发传输,HTTP1.1是基于“请求-响应”方式的,处理完一个事务(请求-响应),才会处理下一个事务,这也是导致队头阻塞的原因。
    引入Stream的概念,多个Stream复用一个TCP连接,一个Stream中有多个Message,一个Message 就是一个请求或响应
  • 服务器推送,可以主动向客户端发送信息

HTTP2.0的缺点:

  • 引入Stream,虽然解决了HTTP层的队头阻塞,但是又导致了TCP层的阻塞
    (TCP的滑动窗口中,TCP必须保证接收到的字节数据是完整且连续的,这样才会将接收到的数据上交给上层)

HTTP3.0

HTTP3.0将运输层改成了UDP,(基于UDP的QUIC协议实现最大努力的可靠性交付)
基于UDP的好处:

  • 无队头阻塞
  • 更快的连接建立
  • 连接迁移

http://www.kler.cn/a/16158.html

相关文章:

  • Mybatis配置文件的增删改查功能
  • C++内存池实现
  • 数据结构Python版
  • 华为机试HJ41 称砝码
  • 第12章 系统部署
  • 解决VsCode无法跳转问题
  • 《企业级Linux高可用负载均衡集群实践真传》目录
  • LeetCode:面试题 02.07. 链表相交
  • 数据结构基础day9
  • 书接上回,接着研究当今世上缓存第一人
  • pnpm 实现 Monorepo 一些操作命令
  • Java 异常处理、日志
  • Linux od命令
  • ESP32-CAM:TinyML 图像分类——水果与蔬菜
  • 【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】
  • 浅谈Kubernetes集群外部通信—Ingress方式
  • 【Java笔试强训 2】
  • Python 练习实例希望这些例子可以帮助您
  • 网络编程 总结二
  • sql注入(三)绕过方法及防御手段
  • 【软件测试】自动化测试日志问题该怎么解决?测试老鸟总结方案...
  • javascript 设计模式
  • java版本企业电子招投标采购系统之项目说明和开发类型源码
  • 【KVM虚拟化】· 命令行KVM安装linux
  • PostgreSQL14.6主从模式配置
  • python工具方法 39 大图裁剪为小图|小图还原成大图(含生成大图伪标签)