HTTP各版本的特点(1.0/1.1/2.0/3.0)
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)相关推荐
- 使用vSphere Host Update Utility 4.0升级ESX 3到4.0版本
在VMware ESX Server 4.0提供的组件中,VI Client包括的"vSphere Host Update Utility 4.0"组件,可以通过网络,直接将ESX ...
- 关于Android studio3.0的坑之butterknife 7.0.1(低版本)
关于Android studio3.0的坑之butterknife 7.0.1(低版本) 我们在AS3.0里面是无法直接使用butterknife 内库插件的,会报错,如下图: 接下来看看怎么设置呢? ...
- 努比亚连续按下android版本,虚惊一场!努比亚Z17的Android 9.0真的不远了
01努比亚Z17将推送安卓9.0 中关村在线消息:前不久,有消息传出努比亚Z17开发者版本系统将停止更新,并将永远停留在Android 7.0之后,引起了众多牛仔们的一篇叹息.大家纷纷在惋惜的同时,也 ...
- android glide 版本,Android Studio 第六十七期 - Android Glide3.7.0和3.8.0用法
一.前言:再优秀的开源库都有坑要填 手上的项目使用的图片加载框架是:Universal-Image-Loader+业务需要定制化的一些代码.Universal-Image-Loader 这个框架是一个 ...
- 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 ...
- tp5.0 php版本,ThinkPHP v5.0.2官方下载-ThinkPHP v5.0.2 完整版官方最新版-东坡下载
ThinkPHP是一个免费的PHP框架,性能优秀,可以开发稳定的商业门户,ThinkPHPv5.0.2版本已经正式发布,小编带来了ThinkPHP v5.0.2 完整版源码,欢迎来下载! ThinkP ...
- OpenCV各版本差异与演化,从1.x到4.0
最近因项目需要,得把OpenCV捡起来,登录OpenCV官网,竟然发现release了4.0.0-beata版本,所以借此机会,查阅资料,了解下OpenCV各版本的差异及其演化过程,形成了以下几点认识 ...
- 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 报错原因 ...
- z17原生Android系统,努比亚z17mini系统版本低了点,能升级到安卓7.0吗?
目前这款手机还没有安卓7.0系统,建议耐心等待. 目前努比亚只推出了z11的7.0开发版本. 努比亚Z17mini搭载了基于安卓6.0的nubia UI V4.0,可惜并没有升级为安卓7.0版本.nu ...
- oracle 11.2.0.4 mos,Oracle 11.2.0.4 最终版本发布以来的 Oracle PSU 列表
Oracle 11.2.0.4 最终版本发布以来的 Oracle PSU 列表 Oracle 11g R2 是目前客户的主流版本,这个版本后续发布了一系列的补丁,今天列表整理一下,供大家参考. 云和恩 ...
最新文章
- python伪造邮件发件地址_python写一个邮箱伪造脚本
- SQL 2005单用户启动实例
- 将文件中的参数读取成Map
- Python中 __init__的通俗解释是什么?
- 如何以及为什么序列化Lambda
- 经纬度绘图_用编程赋能工作系列——百度VS高德经纬度互转
- AutoCAD全面卸载的方法
- java 异或_Java异或详解
- 【数据分析方法论】关于思维、营销、咨询、绩效管理的一些经典分析框架
- 使用协成将异步转同步
- 肿瘤NGS的常规检测流程
- [乐意黎原创]hosts文件位置及说明
- 这场大雨还没把我浇醒吗?
- 【Serverless】云函数微信小程序
- EasyNVR流媒体直播之:零基础实现摄像头的全平台直播 (一)内网直播的实现...
- 2020-10《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布
- CryEngine的maya插件安装
- Oracle导入 1T 数据
- android圆角功能,非常好用,可以用在图片,视频,gif等上面
- 万字详解数据仓库、数据湖、数据中台和湖仓一体
热门文章
- [渝粤教育] 西南科技大学 建筑工程定额与预算 在线考试复习资料2021版(2)
- Some Questions about MapReduce
- Go语言小程序开发快速入门——一、用Gin框架实现简单的信息获取
- svn+ssh服务器与客户端配置方法
- 【自动化】国内自动化与信息化产业仍有十年以上的产业繁荣;非标自动化业务你离BOSS只差一个认知
- 关于瑞萨RL78系列单片机在线升级
- 计算机重启遇到你的账户已被停用,win10 administrator你的账户已被停用怎么办
- 安装程序包的语言不受系统支持
- 【树莓派C语言开发】实验01:双色LED
- js 正则校验——以J开头,以A结尾