你可以说一下 http 版本的发展过程吗

总结:0.9:只能发送 get,无状态。1.0:新增 post,请求头,状态码,cookie。1.1:新增 put/delete/options/patch,keep-alive,pipeline。2.0:二进制协议,多路复用,头部压缩。3.QUIC 协议,彻底解决TCP队头阻塞问题。


总体演进概述

版本主要特性
HTTP/0.9最基础版本,仅支持 GET 请求,无状态。
HTTP/1.0引入 POST、请求头、状态码、Cookie 等,功能初步完善。
HTTP/1.1支持更多方法(PUT/DELETE/PATCH 等),引入长连接和管道机制。
HTTP/2.0基于二进制协议,支持多路复用、头部压缩,性能大幅提升。
HTTP/3.0使用 QUIC 协议(基于 UDP),彻底解决 TCP 队头阻塞问题。

各版本详细说明

HTTP/0.9

  • 特点
    • 只允许客户端发送 GET 请求。
    • 没有请求头(Headers)和状态码。
    • 返回的内容只有 HTML 文档,没有元数据。
  • 缺点:功能极其有限,现已淘汰。

HTTP/1.0

  • 新增特性
    • 支持 POST 方法。
    • 引入请求头(如 User-AgentContent-Type)。
    • 增加状态码(如 200 OK, 404 Not Found)。
    • 支持 Cookie,实现简单会话跟踪。
  • 缺点:每次请求都需要建立新的 TCP 连接,效率较低。

HTTP/1.1

  • 改进点
    • 新增请求方法:PUT, DELETE, OPTIONS, PATCH 等。
    • 引入 keep-alive 实现持久连接,减少连接开销。
    • 支持请求管道化(pipelining),多个请求可一次性发出。
  • 现状:目前仍广泛使用,兼容性好。

HTTP/2.0

  • 核心技术
    • 使用二进制协议替代文本协议,解析更高效。
    • 支持多路复用,多个请求共用一个 TCP 连接。
    • 头部压缩(HPACK)减少传输体积。
  • 优势:显著提升加载速度和资源传输效率。
  • 常见实现:基于 TLS 的 ALPN 扩展。

HTTP/3.0

  • 核心变化
    • 底层协议由 TCP 改为 UDP,使用 Google 提出的 QUIC 协议
    • 彻底解决 TCP 中的队头阻塞问题
  • 优点
    • 更低延迟。
    • 更快连接建立。
  • 缺点
    • 兼容性差,部分中间设备不支持。
    • 部署成本高,尚未大规模普及。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87945.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87945.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87945.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04-Linux驱动模块的自动加载

概述 上一节,我们讲述了Linux驱动开发的基本的模块代码编写和手动执行模块加载的操作, 这一节,我们讲述嵌入式设备上使用Sysvint引导方式下如何开机自动加载模块的步骤。感兴趣的同学看下使用systemd引导方式的开启自动加载模块的步骤 操作…

【牛客算法】游游的整数切割

文章目录 一、题目介绍1.1 题目链接1.2 题目描述1.3 输入描述1.4 输出描述1.5 示例二、解题思路2.1 核心算法设计2.2 性能优化关键2.3 算法流程图三、解法实现3.1 解法一:基础遍历法3.1.1 初级版本分析3.2 解法二:奇偶预统计法(推荐)3.2.1 优化版本分析四、总结与拓展4.1 关…

笔记本电脑忽亮忽暗问题

关于笔记本电脑忽亮忽暗的问题这个问题困扰了我大半年,最后忽然找到解决方法了---主要的话有三种可能性1.关闭显示器自动调亮的功能2.关闭节能模式自动调亮功能3.调整显卡的功率,关闭自动调亮功能一开始一直都是尝试的第一种方法,没解决。。。…

Qt的顶部工具栏在多个界面使用

Qt的工具栏在多个界面使用1、前言2、创建一个工具栏类2.1 新建一个工具栏类3、提升工具栏类3.1登录界面添加工具栏3.2 创建工具栏对象4、总结1、前言 今天遇到了个问题,顶部的工具栏,像软键盘,时间显示和退出按钮那些,想在多个界…

C#和SQL Server连接常用通讯方式

C#和SQL Server连接通讯 在 C# 中与 SQL Server 建立数据库连接,主要通过 ADO.NET 技术实现。以下是几种常见的连接方式及相关实践: ADO.NET 全面指南:C# 数据库访问核心技术 ADO.NET 是 .NET Framework 中用于数据访问的核心组件&#xf…

安卓10.0系统修改定制化____实现自动开启 USB 调试​的步骤解析 列举常用的几种修改方法

对于安卓开发者、测试人员,甚至是喜欢折腾手机的数码爱好者来说,USB 调试是一个非常重要的功能。它能让手机与电脑相连,实现应用安装、系统调试、数据传输等操作。但每次连接手机都要手动去设置里开启 USB 调试,实在麻烦。其实,通过修改安卓 10.0 的 ROM,就能让手机自动开…

Redisson详细教程 - 从入门到精通

目录 1. 什么是Redisson 2. 为什么要用Redisson 3. 环境准备和配置 4. 基础使用方法 5. 分布式数据结构 6. 分布式锁详解 7. 分布式服务 8. 实际应用场景 9. 最佳实践 10. 常见问题解答 总结 1. 什么是Redisson 简单理解 想象一下,Redis就像一个超级强大的"内…

动态规划VS记忆化搜索(2)

luoguP1434滑雪 题目描述 Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由…

如何将服务守护进程化

进程组 什么是进程组 之前我们提到了进程的概念, 其实每一个进程除了有一个进程 ID(PID)之外 还属于一个进程组。进程组是一个或者多个进程的集合, 一个进程组可以包含多个进程。 每一个进程组也有一个唯一的进程组 ID(PGID), 并且这个 PGID …

【跟着PMP学习项目管理】项目管理 之 范围管理知识点

目录 一、收集需求 1、知识点汇总 2、输入 3、工具 4、输出 二、定义范围 1、知识点汇总 2、输入 3、工具 4、输出 三、创作工作分解结构 1、知识点汇总 2、输入 3、工具 4、输出 四、核实范围 1、知识点汇总 2、输入 3、工具 4、输出 五、控制范围 1、知…

AIX 环境磁盘空间管理指南

AIX 环境磁盘空间管理指南 在AIX环境中,磁盘空间的监控、管理与扩展是运维人员必备的技能。本文通过实际案例,系统地介绍如何查询磁盘信息、卷组(VG)、逻辑卷(LV)信息,以及在磁盘空间不足时的扩容方案,帮助读者掌握磁盘空间管理的…

k8s将service的IP对应的不同端口分配到不同的pod上

在Kubernetes中,Service是一种抽象层,它将请求路由到一组Pod。当你需要将Service的不同端口映射到不同的Pod时,可以通过以下两种主要方式实现: 方法一:使用单个Service的多端口配置 如果不同的Pod提供不同的服务&…

aic8800M40低功耗sdio wifi在arm-linux平台调试经验

背景 好多年没有搞过wifi相关的内容了,最近也被安排上了,把一颗低功耗aic8800M40的芯片在arm-linux开发板上做bring up,记录一下SDIO wifi调试的过程和经验,SDIO驱动这里需要改动一些linux内核HOST驱动代码,会在文章中贴出来: AIC8800M40芯片简介 这个wifi芯片是一颗低…

Redis基础(1):NoSQL认识

SQL和NoSQL数据库可以分为关系型数据库和非关系型数据库,SQL(Structured Query Language)相信大家并不陌生,这是用于操作关系型数据库的语言,而NoSQL,顾名思义,它对应的就是非关系数据库,它是操作非关系型数…

QT6 源(153)模型视图架构里的表格窗体视图 QTableWidget 篇三:源码及其元素 QTableWidgetItem 的源代码带注释

&#xff08;14&#xff09;本源代码定义于头文件 qtablewidget . h 头文件 &#xff1a; #ifndef QTABLEWIDGET_H #define QTABLEWIDGET_H#include <QtWidgets/qtableview.h> #include <QtWidgets/qtwidgetsglobal.h> #include <QtCore/qlist.h> #include …

SSL证书是网络安全的一把利刃

SSL证书&#xff08;安全套接层证书&#xff0c;现普遍升级为TLS证书&#xff09;确实是网络安全领域中一把至关重要的“利刃”&#xff0c;它在保护数据传输安全、建立用户信任、防范网络攻击等方面发挥着不可替代的作用。以下是其核心价值与作用的详细分析&#xff1a;一、SS…

Apache 配置文件提权的实战思考

在 Linux 系统中&#xff0c;如果普通用户被授予以 sudo 执行 Apache 并加载自定义配置文件的权限&#xff08;如 sudo apache2 -f /home/user/user.conf&#xff09;&#xff0c;那么该权限极可能被滥用为本地提权路径。 虽然 Apache 默认采用了更严格的权限限制机制&#xff…

代码随想录算法训练营第四十四天|动态规划part11

1143.最长公共子序列 题目链接&#xff1a;1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 文章讲解:代码随想录 思路&#xff1a; 其实就是求两个字符串的最长公共子序列的长度 与公共子数组的区别是可以不连续 &#xff0c;顺序对就可以 状态转移方程不一样 …

部署mysql

# 环境: 操作系统window11 安装了vagrant 通过vagrant部署、启动虚拟机(centos7) # 准备安装mysql8 # 添加 MySQL 官方 YUM 源 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm # 安装 MySQL Server sudo yum install -y mysql-s…

SQL分析与打印-p6spy组件

有性能消耗&#xff0c;只推荐在非生产环境下使用 SpringBoot3MybatisPlushttps://baomidou.com/guides/p6spy/ MyBatis-Plus提供了SQL分析与打印的功能&#xff0c;通过集成p6spy组件&#xff0c;可以方便地输出SQL语句及其执行时长。本功能适用于MyBatis-Plus 3.1.0及以上版本…