1. HTTP-1.0

无状态无连接的应用层协议

  • 无法复用连接

    每次发送请求,都要重新建立连接。

  • 队头阻塞

    下个请求必须在上个请求响应到达后发送。如果上个请求响应丢失,则后面请求被阻塞

2. HTTP-1.1

HTTP1.1 继承了 HTTP1.0 的简单,克服了 HTTP1.0 性能上的问题。

  • 长连接

    新增Connection: keep-alive保持长连接

  • 管道化

    支持管道化请求,请求可以并行传输,但响应顺序应与请求顺序相同。实际场景中,浏览器采用建立多个TCP会话的方式,实现真正的并行,通过域名限制大会话数量。

  • 缓存处理

    新增Cache-control,支持强缓存协商缓存

  • 断点续传

  • 主机头

    新增Host字段,使得一个服务器创建多个站点。

3. HTTP-2.0

HTTP2.0进一步改善了传输性能。

  • 二进制分帧

    在应用层和传输层间增加二进制分帧层

  • 多路复用

    建立双向字节流,帧头部包含所属流 ID,帧可以乱序发送,数据流可设优先级和依赖。从而实现一个 TCP 会话上进行任意数量的HTTP请求,真正的并行传输。

  • 头部压缩

    压缩算法编码原来纯文本发送的请求头,通讯双方各自缓存一份头部元数据表,避免传输重复头。

  • 服务器推送

    服务端可主动向客户端推送资源,无需客户端请求。

4. HTTP-3.0

当一个 TCP 会丢包时,整个会话都要等待重传,后面数据都被阻塞。这是由于 TCP 本身的局限性导致的。HTTP3.0 基于 UDP 协议,解决 TCP 的局限性。

  • 0-RTT

    缓存当前会话上下文,下次恢复会话时,只需要将之前缓存传递给服务器,验证通过,即可传输数据。

  • 多路复用

    一个会话的多个流间不存在依赖,丢包只需要重发包,不需要重传整个连接

  • 更好的移动端表现

    移动端 IP 经常变化,影响 TCP 传输,HTTP3.0 通过 ID 识别连接,只要 ID 不变,就能快速连接。

  • 加密认证的根文

    TCP 协议头没有加密和认证,HTTP3.0 的包中几乎所有报文都要经过认证,主体经过加密,有效防窃听,注入和篡改。

  • 向前纠错机制

    每个包还包含其他数据包的数据,少量丢包可通过其他包的冗余数据直接组装而无需重传。数据发送上限降低,但有效减少了丢包重传所需时间。


参考:

《LeetBook》

HTTP各版本的特点(1.0/1.1/2.0/3.0)相关推荐

  1. 使用vSphere Host Update Utility 4.0升级ESX 3到4.0版本

    在VMware ESX Server 4.0提供的组件中,VI Client包括的"vSphere Host Update Utility 4.0"组件,可以通过网络,直接将ESX ...

  2. 关于Android studio3.0的坑之butterknife 7.0.1(低版本)

    关于Android studio3.0的坑之butterknife 7.0.1(低版本) 我们在AS3.0里面是无法直接使用butterknife 内库插件的,会报错,如下图: 接下来看看怎么设置呢? ...

  3. 努比亚连续按下android版本,虚惊一场!努比亚Z17的Android 9.0真的不远了

    01努比亚Z17将推送安卓9.0 中关村在线消息:前不久,有消息传出努比亚Z17开发者版本系统将停止更新,并将永远停留在Android 7.0之后,引起了众多牛仔们的一篇叹息.大家纷纷在惋惜的同时,也 ...

  4. android glide 版本,Android Studio 第六十七期 - Android Glide3.7.0和3.8.0用法

    一.前言:再优秀的开源库都有坑要填 手上的项目使用的图片加载框架是:Universal-Image-Loader+业务需要定制化的一些代码.Universal-Image-Loader 这个框架是一个 ...

  5. oracle10g检测未通过,win64bit安装oracle 10g版本检查未通过解决 提示要求的结果: 5.0,5.1,5.2,6.0 之一 实际结果: 6.1...

    在WIN7上安装oracle 10g时,提示如下信息: 正在检查操作系统要求... 要求的结果: 5.0,5.1,5.2,6.0 之一 实际结果: 6.1 检查完成.此次检查的总体结果为: 失败 &l ...

  6. tp5.0 php版本,ThinkPHP v5.0.2官方下载-ThinkPHP v5.0.2 完整版官方最新版-东坡下载

    ThinkPHP是一个免费的PHP框架,性能优秀,可以开发稳定的商业门户,ThinkPHPv5.0.2版本已经正式发布,小编带来了ThinkPHP v5.0.2 完整版源码,欢迎来下载! ThinkP ...

  7. OpenCV各版本差异与演化,从1.x到4.0

    最近因项目需要,得把OpenCV捡起来,登录OpenCV官网,竟然发现release了4.0.0-beata版本,所以借此机会,查阅资料,了解下OpenCV各版本的差异及其演化过程,形成了以下几点认识 ...

  8. Cesium 1.02.0 及以上版本下自定义材质报错:[Cesium WebGL] ERROR: 0:1: ‘varying‘ : Illegal use of reserved word

    Cesium 1.02.0 及以上版本下自定义材质报错:[Cesium WebGL] ERROR: 0:1: 'varying' : Illegal use of reserved word 报错原因 ...

  9. z17原生Android系统,努比亚z17mini系统版本低了点,能升级到安卓7.0吗?

    目前这款手机还没有安卓7.0系统,建议耐心等待. 目前努比亚只推出了z11的7.0开发版本. 努比亚Z17mini搭载了基于安卓6.0的nubia UI V4.0,可惜并没有升级为安卓7.0版本.nu ...

  10. oracle 11.2.0.4 mos,Oracle 11.2.0.4 最终版本发布以来的 Oracle PSU 列表

    Oracle 11.2.0.4 最终版本发布以来的 Oracle PSU 列表 Oracle 11g R2 是目前客户的主流版本,这个版本后续发布了一系列的补丁,今天列表整理一下,供大家参考. 云和恩 ...

最新文章

  1. python伪造邮件发件地址_python写一个邮箱伪造脚本
  2. SQL 2005单用户启动实例
  3. 将文件中的参数读取成Map
  4. Python中 __init__的通俗解释是什么?
  5. 如何以及为什么序列化Lambda
  6. 经纬度绘图_用编程赋能工作系列——百度VS高德经纬度互转
  7. AutoCAD全面卸载的方法
  8. java 异或_Java异或详解
  9. 【数据分析方法论】关于思维、营销、咨询、绩效管理的一些经典分析框架
  10. 使用协成将异步转同步
  11. 肿瘤NGS的常规检测流程
  12. [乐意黎原创]hosts文件位置及说明
  13. 这场大雨还没把我浇醒吗?
  14. 【Serverless】云函数微信小程序
  15. EasyNVR流媒体直播之:零基础实现摄像头的全平台直播 (一)内网直播的实现...
  16. 2020-10《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布
  17. CryEngine的maya插件安装
  18. Oracle导入 1T 数据
  19. android圆角功能,非常好用,可以用在图片,视频,gif等上面
  20. 万字详解数据仓库、数据湖、数据中台和湖仓一体

热门文章

  1. [渝粤教育] 西南科技大学 建筑工程定额与预算 在线考试复习资料2021版(2)
  2. Some Questions about MapReduce
  3. Go语言小程序开发快速入门——一、用Gin框架实现简单的信息获取
  4. svn+ssh服务器与客户端配置方法
  5. 【自动化】国内自动化与信息化产业仍有十年以上的产业繁荣;非标自动化业务你离BOSS只差一个认知
  6. 关于瑞萨RL78系列单片机在线升级
  7. 计算机重启遇到你的账户已被停用,win10 administrator你的账户已被停用怎么办
  8. 安装程序包的语言不受系统支持
  9. 【树莓派C语言开发】实验01:双色LED
  10. js 正则校验——以J开头,以A结尾