首页 > 其他分享 >简述HTTP1.0,1.1,2.0,3.0的主要区别以及QUIC协议

简述HTTP1.0,1.1,2.0,3.0的主要区别以及QUIC协议

时间:2023-03-14 09:58:22浏览次数:36  
标签:HTTP1.0 协议 HTTP 1.1 QUIC 客户端 连接 请求

HTTP/1.0(构建可拓展性)

  • 请求中新增协议版本信息
  • 引入HTTP头概念
  • 响应中新增状态码
  • 默认使用短连接:浏览器每使用一个静态资源就会建立连接直到任务结束中断连接

HTTP/1.1(标准化协议)

  • 默认支持长连接:在一个网页打开期间,所有网络请求复用同一条建立的连接。
    • advantage:性能好,节省建立TCP,慢启动,关闭连接的时间
    • disadvantage:占用服务器资源
  • 引入额外的缓存控制机制。例如:Entity tag,If-None-Match等更多可供选择的缓存头
  • 新增24个错误状态相应码
  • 引入内容协商,允许通信双方约定语言(Accept-Language),编码(Accept-Encoding)等
  • 支持响应分块(断点续传)
  • 引入管线化:发送请求后需等待收到响应后,才能发送下一个—>允许客户端同时并行发送多个请求
    • advantage:收到上一个请求响应之前就可以发出下个请求,节省请求到达服务器的时间,降低通信延迟
    • disadvantage:服务器必须遵循HTTP/1.1协议,按照客户端发送的请求顺序返回响应;可能发生队头阻塞(上一个请求的响应若迟迟未处理完毕,后面的响应会阻塞)
  • Host头,允许不同域名配置在同一IP地址

HTTP/2.0(更优异的表现)

HTTP/2.0具有三大特性:Header压缩,服务端推送,多路复用。

Header压缩

  • HTTP/1.1每次通信携带的Header信息常常是相似的。HTTP/2.0中,对于每次通信Header中相同的信息,不会重复发送,而是采用追加替换的方式。
  • 具体实现为HTTP/2.0在客户和服务端共同维护一个Header表,存储之前发送的K/V键值对,并且此表在HTTP/2.0连接期间始终存在。
  • 优点:减少每次通信数据量,提高传输速度。

服务端推送

  • 服务器可对一个客户端的请求发送多个响应。并且服务端向客户端推送资源无需客户端明确的请求。
  • 服务端根据客户端的请求提前推送额外的资源。例如在发送页面HTML时主动推送其它CSS/JS资源,而不用等浏览器解析到相应位置。
  • 优点:减轻数据传输的冗余步骤,加快页面响应速度,提升用户体验。

多路复用

二进制分帧

  • HTTP/1.x使用文本格式传输数据—>HTTP/2.0将传输信息分割为若干,采用二进制格式编码。
  • 具体实现:应用层和传输层间增加一个二进制分帧层。每个请求都对应一个,并有一个唯一整数标识符。HTTP/1.x被拆分成多个帧并均有序列号,以及自己流的标识符,接收端自行合并。
  • 优点:采用更高效的编码协议,提升传输效率。为多路复用提供基础。

多路复用

HTTP/1.x有两大约束:

  • 顺序:服务端必须按照客户端请求的顺序串行返回数据
    • 即使HTTP/1.1允许同一连接发起多个请求也不是真正的并行传输
  • 阻塞:浏览器限制每个域名下最多同时发起6个连接,超过的会阻塞,常见优化如下
    • 使用多个域名(CDN)提高浏览器下载速度
    • 将多个CSS/JS文件打包成一个文件,多个小图片合并为雪碧图,减少HTTP请求
      HTTP2.0引入多路复用:
  • 同一连接发起的多个请求,服务端可并行传输数据。基于二进制分帧层,HTTP/2.0可同时交错发送多个信息中的帧,接收端根据帧的流标识符和序列号重新组装。
  • 多路复用使用同一TCP连接并发处理同一域名下所有请求,减少TCP建立连接的时延。并且代替了顺序和阻塞机制,实现真正并行传输,避免队头阻塞问题,极大提高传输效率。

HTTP3.0(舍弃的TCP以及先进的QUIC)

HTTP3.0 是一种基于 QUIC 协议的新的网络传输协议,它可以提供更高的安全性、效率和可靠性。

QUIC

QUIC 协议是谷歌推出的一套基于UDP的传输协议,它实现了 TCP + HTTPS + HTTP/2 的功能,目的是保证可靠性的同时降低网络延迟。QUIC 协议有以下几个优点:

  • 连接建立速度快:QUIC 协议只需要一个往返时间(RTT)就可以建立安全连接,而 TCP + TLS 需要三个 RTT。
  • 支持连接迁移:QUIC 协议引入了 Connection ID 的概念,使得客户端和服务器之间的连接不依赖于 IP 地址和端口号,而是由一个唯一的标识符来维持。这样,当客户端切换网络或者 IP 地址变化时,不会导致连接断开。
  • 支持多路复用:QUIC 协议支持在一个连接上并发发送多个数据流,避免了 TCP 中的队头阻塞问题。同时,QUIC 协议也支持对每个数据流进行单独的流量控制和拥塞控制。
  • 支持前向纠错:QUIC 协议可以在数据包中添加冗余信息,以便在丢包时恢复数据,减少重传次数和延迟。

QUIC 协议也有一些缺点:

  • 兼容性问题:由于 QUIC 协议是基于 UDP 的,而 UDP 在一些网络环境中可能会被阻断或者限速。因此,QUIC 协议需要在客户端和服务器之间进行协商,如果无法使用 QUIC,则降级为 TCP + TLS + HTTP/2。
  • 加密开销:由于 QUIC 协议在用户空间实现了加密功能,而不是利用内核提供的 TCP/IP 栈。这样虽然可以提高灵活性和更新速度,但也增加了 CPU 的消耗和内存的占用。

标签:HTTP1.0,协议,HTTP,1.1,QUIC,客户端,连接,请求
From: https://www.cnblogs.com/forlqy/p/jian-shuhttp10112030de-zhu-yao-qu-bie-yi-jiquic-xi.html

相关文章

  • SQLite 3.41.1 发布
    SQLite是一个C语言库,实现了一个小型、快速、独立、高可靠性、全功能的SQL数据库引擎。SQLite是世界上使用最多的数据库引擎。SQLite的源代码属于公共领域,每个人都......
  • 泰勒1.1概念
    泰勒皮亚诺泰勒拉格朗日余项带皮亚诺麦克劳林零x=\(x_0\)常见公式......
  • 银河麒麟KylinV10安装openoffice4.1.14
    使用步骤1.下载openoffice建议去官网下载,这里给出官网地址:https://www.openoffice.org/download/2.安装openoffice2.1、在cd/usr/local目录下创建openoffce文件夹......
  • 高性能、低功耗4口全速 USB1.1 HUB控制器DPU54 替代AU9254
    产品概述DPU54是一款高性能、低功耗4口全速USB1.1HUB控制器,上行端口兼容全速12MHz模式,4个下行端口兼容全速12MHz、低速1.5MHz两种模式。DPU54采用状态机单事务处......
  • 瓴羊Quick BI是一款成熟产品,数据可视化功能优势明显!
    对于现如今大多数企业未来的发展来说,不仅需要着重关注对外宣传力度,同时还需要大大提高对数据资产的重视程度,需要将企业各种各样的数字化内容全部展示在同一个屏幕之上,这样能......
  • kubeadm 安装1.16.2版本k8s
    环境介绍 环境准备#修改hostnamehostnamectlset-hostnameyour-new-host-name#查看修改结果hostnamectlstatus#设置hostname解析echo"127.0.......
  • golang 升级 1.16.3 之后,编译报错 missing go.sum entry for module providing packag
    问题现象在开发机上升级到了最新golang1.16.3版本,在为一个基于golang1.13的历史项目添加excel依赖包后gogetgithub.com/360EntSecGroup-Skylar/excelize/v2......
  • 银河麒麟v10 sp1 安装 PostgreSQL 11.16
    一、安装环境   操作系统:银河麒麟v10 sp3 x86_64   内核版本:   PostgreSQL版本:11.16二、安装过程2.1下载源码包创建目录mkdir-p/tools/postgresql......
  • 企业数据分析获得认可,瓴羊Quick BI通过中国信通院测评
    “互联网+”时代,企业数据分析成为了一种核心竞争力。在此背景下,瓴羊QuickBI等商业智能工具成为了不少企业提升内部企业数据分析的关键助手。现如今,面对海量的数据资产,一家......
  • Linux Mint 21.1 安装笔记
    LinuxMint21.1安装笔记V1.0 目录1.说明2.安装Linux系统2.1.下载LinuxMint安装包(ISO)2.2.下载/制作启动U盘工具(balenaEtcher)2.3.设置BIOS相关内容2.3.1.U......