HTTP/2 和 HTTP/3 是 HTTP 协议的升级版本,主要为了解决 HTTP/1.x 协议的性能瓶颈和安全性问题。以下是它们的主要目标和解决的问题:

HTTP/2 的主要目标和解决的问题

1. 性能优化

  • 多路复用(Multiplexing):

    • HTTP/1.x 中,每个请求需要单独建立一个 TCP 连接,或者使用持久连接(Keep-Alive)但仍然是串行处理请求。
    • HTTP/2 允许在同一个 TCP 连接上并行发送多个请求和响应,减少了延迟。
  • 头部压缩(Header Compression):

    • HTTP/1.x 的头部信息是纯文本,且每次请求都会重复发送相同的头部(如 User-Agent、Cookie 等)。
    • HTTP/2 使用 HPACK 算法对头部进行压缩,减少了数据传输量。
  • 服务器推送(Server Push):

    • HTTP/2 允许服务器在客户端请求之前主动推送资源(如 CSS、JavaScript 文件),减少了额外的请求延迟。

2. 安全性

  • HTTP/2 通常基于 HTTPS(TLS/SSL)运行,强制加密传输数据,提高了安全性。

3. 二进制协议

  • HTTP/1.x 是基于文本的协议,解析效率较低。
  • HTTP/2 使用二进制格式传输数据,解析效率更高,减少了错误。

HTTP/3 的主要目标和解决的问题

1. 基于 QUIC 协议

  • HTTP/3 使用 QUIC 协议代替 TCP,解决了 TCP 的一些固有缺陷:**

    • 队头阻塞(Head-of-Line Blocking):

      • 在 HTTP/2 中,如果 TCP 连接中的一个数据包丢失,整个连接会被阻塞,直到丢失的数据包重传成功。
      • QUIC 基于 UDP,每个流(Stream)独立处理,避免了队头阻塞。
    • 连接迁移:
      • QUIC 使用连接 ID 而不是 IP 地址和端口来标识连接,当用户切换网络(如从 Wi-Fi 切换到移动数据)时,连接可以无缝迁移。

2. 更快的连接建立

  • QUIC 集成了 TLS 1.3,减少了握手次数,连接建立速度更快。
  • 在 HTTP/2 中,TCP 和 TLS 需要分别握手,增加了延迟。

3. 改进的拥塞控制

  • QUIC 提供了更灵活的拥塞控制机制,能够更好地适应不同的网络环境。

4. 安全性

  • HTTP/3 强制使用 TLS 1.3,确保数据传输的安全性。

总结

  • HTTP/2 主要解决了 HTTP/1.x 的性能瓶颈,通过多路复用、头部压缩和服务器推送提高了性能。
  • HTTP/3 进一步优化了性能,通过基于 QUIC 协议解决了 TCP 的队头阻塞问题,并提供了更快的连接建立和连接迁移功能。

http2和http3的更多相关文章

  1. HTTP1.1、HTTP2、HTTP3 演变

    推荐阅读:https://www.cnblogs.com/zwtblog/tag/计算机网络/ 目录 HTTP 基本概念 HTTP/1.1 相⽐ HTTP/1.0 提⾼了什么性能? HTTP/1.1如 ...

  2. QUIC/HTTP3 协议简析

    从 HTTP 的进化历史讲起,细说使用协议的变迁,了解原因发现问题,解码 QUIC 在 HTTP3 中的支撑作用,共同探讨 HTTP3 的未来. HTTP.HTTP2 和 HTTP3 先和大家来回顾一 ...

  3. 初识——HTTP3

    目录 初识--HTTP3 HTTP HTTP1.0和HTTP1.1的主要区别 HTTP2 HTTP3 相关链接 初识--HTTP3 想了解HTTP3??那我们就得先知道为啥会出现HTTP3,因此我们需 ...

  4. Httpd2.2常见配置及功能

    Httpd 2.2常见配置 要配置http服务的配置文件,先备份一下,养成良好习惯,如果误操作导致http服务起不来,就可以将备份的主配置文件重新覆盖一下 httpd配置文件的组成:有三大部分组成,其 ...

  5. 图文详解互联网根基之HTTP

    这是本人对<图解HTTP>和<HTTP权威指南>阅读后总结的大家常用的.重要的知识点,前端.后端同学居家必备! 一.概述 HTTP是Hyper Text Transfer Pr ...

  6. 【转】使用Jmeter录制web脚本

    1.web性能测试以及web http请求基本原理. 再介绍录制jmeter脚本之前,我们先谈一下web性能测试.web就是调用http/https接口, 其实没有是什么复杂度可言.只是我们必须清楚, ...

  7. 7.HTTP协议

    1.什么是url? 1.1 URL是统一资源定位符,表示的是一个资源,(图片 文字 视频 音频 等等) 单个资源介绍--图片 那URL的组成部分是由协议, 域名:端口, 路径和文件名 1.2 url组 ...

  8. HTTP/2和Python的支持现状-2019-10

    背景: 大概2019年9月份,天猫全面升级了HTTP/2的支持,并且加强了HTTP/1的访问限制,也可能很早前就这么做了, 但之前一直没限制HTTP/1的访问.之所以发现这个问题,是因为写的爬虫突然失 ...

  9. 7.Jmeter 快速入门教程--录制复杂web测试脚本

    Jmeter的功能简单,不需要有脚本语言的编写经验,纯图形界面添加测试场景, 用起来上手很快.但是如果手动添加每一个web(http/https)请求,费时又费力.而且有可能最后手动编写的和实际发的请 ...

  10. 浅谈 k8s ingress controller 选型

    大家好,先简单自我介绍下,我叫厉辉,来自腾讯云.业余时间比较喜欢开源,现在是Apache APISIX PPMC.今天我来简单给大家介绍下 K8S Ingress 控制器的选型经验,今天我讲的这些内容 ...

随机推荐

  1. Luogu P3959 宝藏 题解 [ 紫 ] [ 状压 dp ] [ 二项式定理 ]

    宝藏:一个对着蓝书代码调都能调两个小时的大毒瘤,但是思路还是很值得借鉴的,有普通状压和三进制状压两种做法,或者暴搜剪枝也可以(这里不介绍暴搜剪枝做法). 普通状压做法 观察到 \(n\le 12\), ...

  2. Maven入门,读完这篇就够了

    Maven 项⽬⽣命周期 Maven从项⽬的三个不同的⻆度,定义了三套⽣命周期,三套⽣命周期是相互独⽴的,它们之间不会相互影响. 清理⽣命周期(Clean Lifecycle):该⽣命周期负责清理项⽬ ...

  3. python渗透脚本小子速成教程

    python代码即脚本,脚本小子即是python.python只有几个类:常量.字符串,API不可知的数,变量定义.常量是不变固定的,变量是可变的,字符串一般都是单引号''和双引号"&quo ...

  4. Vulnhub-kioptix2014靶机getshell及提权

    靶机搭建 点击扫描虚拟机 然后扫描文件夹即可 信息收集 扫描ip nmap扫描得到目标靶机ip nmap -sn 192.168.108.0/24 故 攻击机:192.168.108.130 目标靶机 ...

  5. 技术前瞻: ECMAScript 2025 已定稿特性解析:让 JavaScript 更优雅

    作为全球应用最广泛的编程语言之一,JavaScript 每年都在通过 ECMAScript 标准持续进化.2025 年,ECMAScript 再次带来多项重磅更新,本文将带你深入解读已正式定稿的核心特 ...

  6. [THUPC2017] 天天爱射击 题解

    俗话说的好,正难则反,既然不好想每一个子弹能打碎多少个木板,不如想每个木板被那枚子弹打碎. 然后就是显然的整体二分.由于可能木板不会被击碎,那些木板的分数会累加到最后一个子弹上,因此我们可以加一枚背锅 ...

  7. 《基于NLP内容理解》出书

    <基于NLP内容理解>出书初心: 1)情怀&梦想:记得自己高中的时候每次冲进我们县城的书店,都能看到书店中央摆放着白岩松老师的一本自传,当时的那种崇拜一直萦绕在自己的心里,想着自己 ...

  8. MySQL - [16] SSL

    MySQL8的SSL功能可以帮助用户更安全地管理数据库,提高数据安全性. 一.SSL概念 SSL(Secure Socket Layer:安全套接字)利用数据加密,身份验证和消息完整性验证机制,为基于 ...

  9. CF889E题解

    \(\text{Problem - 889E - Codeforces}\) \(\text{*3000}\) 修正 感谢学长 \(\text{fs}\) 指出状态数原因解释的错误. 题意 给一个序列 ...

  10. Ubuntu22.04双网卡调试

    最近捡起正点原子的linux开发板,又开始了linux的学习,这条路走走停停的,隔了一年时间很多积累的东西都忘了.打开VMware虚拟机发现网络也连接不上了,我的印象中去年是把虚拟机的双网卡配置好了, ...