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

HTTP3.0 和 HTTP2.0,HTTP1.0区别

用过塞班系统😄的都知道,最开始网络是2G/3G,之前对于速度十几kb,几十kb都已经感觉很快,流量都是按一月多少M,但随着视频,游戏,直播的热潮4G,5G接踵而至,人们对于速度的完美追求,促使着网络协议也在不断的更迭,今天要说的就是这个。

首先,聊一下http和https:

HTTP明文传输,数据都是未加密的,安全性较差。HTTPS(SSL+HTTP)数据传输过程是加密的,安全性较好。(HTTPS=HTTP+加密+认证+完整性保护)
HTTPS需要CA(数字证书认证机构)申请证书,HTTP不需要。
HTTP页面响应速度比HTTPS快,主要是因为HTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包,而HTTPS除了TCP的三个包,还要加上SSL握手需要的9个包,所以一共是12个包。
HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样。HTTP使用80端口,HTTPS默认使用443端口。
HTTPS其实就是建构在SSL/TLS之上的HTTP协议,所以,HTTPS比HTTP要更耗费服务器。

一、HTTP/1.1(1997年)

核心特性
  1. 文本协议:可读性高,但解析效率低

  2. 短连接:默认关闭连接(需手动设置Keep-Alive

  3. 队头阻塞(HOL):同一TCP连接中请求必须顺序处理

  4. 无压缩:重复传输头部数据(如Cookie)

典型问题
  • 高延迟:频繁建立TCP连接

  • 资源浪费:重复传输冗余头部

  • 并发限制:浏览器单域名6-8连接限制

二、HTTP/2(2015年)

核心改进
  1. 二进制协议:提升解析效率,减少错误

  2. 多路复用(Multiplexing):单连接并行处理多个请求

  3. 头部压缩(HPACK):减少头部体积(高达90%)

  4. 服务端推送(Server Push):主动推送关联资源(如CSS/JS)

  5. 流优先级:优先传输关键资源(如HTML)

局限
  • 仍基于TCP,TCP层队头阻塞问题未解决

  • 部署依赖TLS(非强制,但主流浏览器要求HTTPS)

HTTP1.1的报文为纯文本格式,而HTTP2.0的报文全面采用二进制格式,并将原始的报文拆分为头信息帧和数据帧。采用二进制格式有利于提升数据传输效率。

TCP是可靠的,面向字节流的协议。HTTP2的多个请求虽然可以跑在同一个TCP连接中,但如果出现丢包现象,TCP就需要进行重传,这可能就会导致整个TCP连接上的所有流阻塞,直到丢的包重传成功,这就是TCP的丢头阻塞问题。

总之,HTTP/2引入了多路复用,允许在同一个连接上并行处理多个请求,还增加了头部压缩,减少了开销。不过,HTTP/2仍然依赖于TCP,所以TCP层面的队头阻塞问题依然存在。

三、HTTP/3(2022年正式标准化)

颠覆性变革
  1. 基于QUIC协议:弃用TCP,改用UDP+QUIC(Quick UDP Internet Connections)协议栈

  2. 零RTT握手:首次连接即可复用先前会话密钥

  3. 彻底解决队头阻塞:每个请求独立流(Stream)

  4. 原生加密:QUIC强制使用TLS 1.3

  5. 网络切换优化:IP地址变更时连接不中断(如WiFi切4G)

QUIC协议优势
  • 抗丢包:前向纠错(FEC)技术减少重传

  • 低延迟:1-RTT建立加密连接(TCP+TLS需2-3 RTT)

HTTP/3.0 在一定程度上解决了队头阻塞问题,UDP是无连接的多个流互相独立,之间不再有依赖,因而即使某个流发生了丢包,只会对该流产生影响,并不会使得其他流阻塞一个连接建立多个不同的数据流,这些数据流之间独立互不影响,某个数据流发生丢包了,其数据流不受影响(本质上是多路复用+轮询)。

同时,HTTP/3.0 具有更好的错误恢复机制,出现丢包、延迟等网络问题时,可以更快地进行恢复和重传。

另外,CP中通过四元组确定一条唯一的TCP连接,当网络从4G切换到WIFI时,IP地址发生变化,就需要重新建立连接,而QUIC通过连接ID标记通讯的两个端点,客户端和服务器可以各自选择一组 ID 来标记自己,因此即使移动设备的网络变化后,导致 IP 地址变化了,只要仍保有上下文信息(比如连接 ID、TLS 密钥等),就可以“无缝”地复用原连接,消除重连的成本,没有丝毫卡顿感,达到了连接迁移的功能。


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

相关文章:

  • 前端存储方案全面对比:localStorage、sessionStorage、cookies与IndexedDB
  • 【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random
  • 第一届启航杯-web-misc(全)
  • 如何查看react的版本号
  • 如何长期保存数据(不包括云存储)最安全有效?
  • 决策树:机器学习中的分类与回归利器
  • LabVIEW 无法播放 AVI 视频的编解码器解决方案
  • Unclutter for Mac v2.2.12 剪贴板/文件暂存/笔记三合一 支持M、Intel芯片
  • jenkins使用插件在Build History打印基本信息
  • DeepSeek 开源周五个开源项目,引领 AI 创新?
  • leetcode---LCR 123.图书整理1
  • LabVIEW中交叉关联算法
  • ‘ts-node‘ 不是内部或外部命令,也不是可运行的程序
  • vue3中展示markdown格式文章的三种形式
  • 阿里云oss文件上传springboot若依java
  • 25新闻研究生复试面试问题汇总 新闻专业知识问题很全! 新闻复试全流程攻略 新闻考研复试调剂真题总结
  • 深度解读 AMS1117:从电气参数到应用电路的全面剖析
  • day02_Java基础
  • 网络安全技术与应用
  • C++题解(31) 2025顺德一中少科院信息学创新班(四期)考核:U537296 青蛙的距离 题解