全面探讨HTTP协议从0.9到3.0版本的发展和特点
前言:
最近的几场面试都问到了http的相关知识点,博主在此结合书籍和网上资料做下总结。本篇文章讲收录到秋招专题,该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。
如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~
小威在此先感谢各位小伙伴儿了😁

以下正文开始

文章目录
- HTTP 0.9
- HTTP 1.0
- HTTP 1.1
- HTTP/2
- HTTP/3
- 本篇总结
HTTP 0.9
谈到HTTP,首先能想到的就是它的基础版,也是最先发布的版本。
HTTP 0.9版本出现在1991年,这个版本的主要特点是简单和原始,它只支持简单的请求-响应模式,不支持复杂的HTTP头部和消息体。此外,HTTP 0.9不支持持久连接,每个请求都需要建立一个新的连接。因为有了这些限制,So,HTTP 0.9已经不再被广泛使用。
HTTP 1.0
HTTP 1.0是继0.9版本后的丰富版,也是HTTP的第二个版本。
HTTP 1.0是在1996年发布的,它对HTTP 0.9进行了重要的改进。
HTTP 1.0引入了更多的特性和功能,比如支持更复杂的HTTP头部、消息体和请求方法(如GET和POST),以及持久连接。这些改进使得HTTP 1.0能够更好地支持Web开发,为我们的应用所用。
HTTP 1.0的一个主要限制的就是它的性能问题。由于每个请求都需要建立一个新的连接,并且每个连接只能处理一个请求,因此HTTP 1.0在处理大量并发请求时可能会变得非常慢。为了解决这个问题,后来引入了HTTP 1.1和持久连接。
HTTP 1.1
前面说到1.0的不足,现在我们再来聊聊1.1版本的特点,这块也是面试中经常问到的。
HTTP 1.1于1997年发布,这个版本引入了更多的特性和功能,以改善Web性能和可用性。其中最重要的改进是引入了持久连接。
持久连接允许客户端和服务器保持一个或多个打开的连接,以便在多个请求和响应之间重用它们。这可以减少建立连接所需的资源和时间,提高请求处理速度和并发性。除此之外,HTTP 1.1还引入了分块传输编码,允许在不知道内容长度的情况下发送响应体。
另一个重要的改进是引入了缓存。HTTP 1.1提供了几种缓存机制,包括条件请求和实体标签 ,以减少不必要的网络传输和提高响应速度。除此之外,HTTP 1.1还引入了其他一些功能,如范围请求和管道化。

HTTP/2
HTTP/2是HTTP的高效版,相较于HTTP/1有很大改进,
HTTP 1.1相比HTTP 1.0有了很大的改进,但它仍然存在一些性能和安全问题。为了解决这些问题,HTTP/2于2015年发布。HTTP/2引入了一些关键的改进,包括二进制传输、头压缩、多路复用和服务器推送等。
- 二进制传输:HTTP/2使用二进制协议而不是文本协议,这使得传输更加高效和可靠。二进制协议更加紧凑,易于解析和处理。
- 头压缩:HTTP/2引入了头压缩机制,使用Huffman编码对HTTP头部进行压缩。这可以减少头部的大小和传输时间,提高请求处理速度。
- 多路复用:HTTP/2引入了多路复用机制,允许在同一个连接上同时发送多个请求和响应。这可以减少阻塞和等待时间,提高并发性和性能。
- 服务器推送:HTTP/2允许服务器向客户端推送资源,而无需客户端明确请求它们。这可以减少延迟和提高响应速度。
HTTP/3
HTTP/3是现代版,也是目前HTTP的最强版本,是现代互联网的版本之子。
尽管HTTP/2相比HTTP 1.1有了很大的改进,但它仍然基于TCP协议,而TCP协议在某些场景下可能存在性能瓶颈和安全问题。为了解决这些问题,HTTP/3于2019年发布。HTTP/3是基于QUIC协议的,它是一种新型的传输层协议,具有更好的性能和安全性。
QUIC协议使用的是UDP而不是TCP作为传输层协议。与TCP不同,UDP不需要三次握手建立连接,并且可以在不等待确认的情况下发送数据。这使得QUIC具有更低的延迟和更高的吞吐量。此外,QUIC使用TLS 1.3加密通信,提供了更好的安全性。
本篇总结
从HTTP 0.9到HTTP/3,HTTP协议经历了多个版本的演进和改进。这些版本在支持Web发展方面发挥了重要作用,并解决了不同时期面临的挑战和问题。
从简单的文本协议到高效的二进制协议,从单一的请求-响应模式到支持多路复用和服务器推送等先进特性,HTTP协议不断适应着互联网的发展需求和技术进步。当前最新版本的HTTP/3基于QUIC协议提供了更好的性能和安全性,将继续在未来的Web发展中发挥关键作用。
同时也祝愿各位小伙伴儿在面试的过程中这块知识点答得都对,看完全会!
文章到这里就先结束了,感兴趣的可以订阅专栏哈,后续会继续分享相关的知识点。

相关文章:
全面探讨HTTP协议从0.9到3.0版本的发展和特点
前言: 最近的几场面试都问到了http的相关知识点,博主在此结合书籍和网上资料做下总结。本篇文章讲收录到秋招专题,该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮…...
中通快递查询入口,根据物流更新量筛选出需要的单号记录
批量中通快递单号的物流信息,根据物流更新量将需要的单号记录筛选出来。 所需工具: 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主…...
Arraylist案例
Arraylist是使用最频繁的一个集合,它与数组类似,不同之处在于它可以动态改变长度,不够了可以扩容。 案例: 我的思考: 首先多个菜品信息可以用Arraylist 来存储,那我们需要再创建一个菜品类Food࿰…...
『heqingchun-Ubuntu系统+x86架构+配置编译安装使用yolov5-6.0+带有TensorRT硬件加速+C++部署』
Ubuntu系统x86架构配置编译安装使用yolov5-6.0带有TensorRT硬件加速C部署 一、准备文件 1.yolov5-6.0.zip 官网下载 网址: https://github.com/ultralytics/yolov5/tree/v6.0操作: 点击"Code"下的"Download ZIP" 下载得到yolov5…...
优秀的员工成为公司的管理者之后,为何表现平庸?因为他们缺乏这些思维
在企业的实践中,我们发现平时能力最强的员工,在被提拔到管理层之后就慢慢变得平庸了,再也不是以前那个无所不能的“企业能人”了,甚至在一些事情的处理上还会有些笨拙。面对这种情况,我们一定会感觉很疑惑,…...
MySQL简单介绍
简单了解MySQL MySQL语句分类 SQL语句分类 DDL:数据定义语句 create表,库.….] DML:数据操作语句 [增加insert,修改 update,删除delete] DQL:数据查询语句 [select] DCL:数据控制语句 …...
【开源】基于JAVA的天然气工程业务管理系统
项目编号: S 021 ,文末获取源码。 \color{red}{项目编号:S021,文末获取源码。} 项目编号:S021,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四…...
虚幻学习笔记—点击场景3D物体的两种处理方式
一、前言 本文使用的虚幻引擎为5.3.2,两种方式分别为:点击根物体和精准点击目标物体。 二、实现 2.1、玩家控制器中勾选鼠标点击事件:这一步很重要,如图2.1.1所示:在自定义玩家控制器中勾 图2.1.1 选该项,…...
AIGC|LangChain新手入门指南,5分钟速读版!
如果你用大语言模型来构建AI应用,那你一定不可能绕过LangChain,LangChain是现在最热门的AI应用框架之一,去年年底才刚刚发布,它在github上已经有了4.6万颗星的点赞了,在github社区上,每天都有众多大佬,用它…...
探索 Linux vim/vi 编辑器:介绍、模式以及基本操作演示
💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…...
Centos 7 在线安装(RPM) PostgreSQL 14 15 16
目录 一、官网下载地址二、检查系统是否安装其他版本PostgreSQL数据库三、安装数据库四、配置数据库(默认方式一)4.1初始化用户密码4.2修改postgresql.conf文件4.3修改pg_hba.conf文件五、修改默认存储路径六、配置防火墙七、生产环境优化(待完善)八、启用SSL加密(待验证)九…...
如何在gitlab上使用hooks
参考链接:gitlab git hooks 1. Git Hook 介绍 与许多其他版本控制系统一样,Git 有一种方法可以在发生某些重要操作时,触发自定义脚本,即 Git Hook(Git 钩子)。 当我们初始化一个项目之后,.git…...
【点云surface】 凹包重构
1 处理过程可视化 原始数据 直通滤波过滤后 pcl::ProjectInliers结果 pcl::ExtractIndices结果 凹包结果 凸包结果 2 处理过程分析: 原始点云 ---> 直通滤波 --> pcl::SACSegmentation分割出平面 -->pcl::ProjectInliers投影 --> pcl::ConcaveHull凹包…...
Linux sed命令
目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符,整合数据为一行 一. 去除单个指定文本的换行符 👉 info.txt …...
Nginx反向代理实现负载均衡+Keepalive实现高可用
目录 实现负载均衡 实现高可用 实现负载均衡 Nginx的几种负载均衡算法: 1.轮询(默认) 每个请求按照时间顺序逐一分配到下游的服务节点,如果其中某一节点故障,nginx 会自动剔除故障系统使用户使用不受影响。 2.权重…...
实用高效 无人机光伏巡检系统助力电站可持续发展
近年来,我国光伏发电行业规模日益壮大,全球领先地位愈发巩固。为解决光伏电站运维中的难题,浙江某光伏电站与复亚智能达成战略合作,共同推出全自动无人机光伏巡检系统,旨在提高发电效率、降低运维成本,最大…...
Django框架之csrf跨站请求
目录 一、csrf跨站请求伪造详解 二、csrf跨域请求伪造 【1】正常服务端 【2】钓鱼服务端 三、csrf校验 【介绍】 form表单中进行csrf校验: 【1】form表单如何校验 【2】ajax如何校验 四、csrf相关装饰器 【1】csrf_protect装饰器: 【…...
[系统移植] 移植主线Buildroot(2023.02-rc3)到RK3399
文章目录 一、编译环境二、Git环境三、克隆源代码四、编译源代码五、烧录固件六、系统启动一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev \ exube…...
自动语音识别 支持86种语言 Dragon Professional 16 Crack
从个体从业者到全球组织,文档密集型行业的专业人士长期以来一直依靠 Dragon 语音识别来更快、更高效地创建高质量文档,减少管理开销,以便他们能够专注于客户。了解 Dragon Professional v16 如何通过单一解决方案提高标准,为各个业…...
i社为什么不出游戏了?
I社,即国际知名的游戏公司,近来为何鲜有新游问世?曾经风靡一时的游戏开发者,如今为何陷入了沉寂?这其中的种种原因,值得我们深入剖析。 首先,I社近期的沉寂可能与其内部管理层的调整和战略规划…...
Youtu-VL-4B-Instruct生产环境:银行柜台业务凭证OCR+合规字段校验流水线
Youtu-VL-4B-Instruct生产环境:银行柜台业务凭证OCR合规字段校验流水线 1. 引言 想象一下,银行柜员每天要处理成百上千张业务凭证——开户申请书、转账单、存款凭条。每一张都需要人工核对姓名、身份证号、金额、日期等关键信息,确保填写规…...
C# OnnxRuntime 部署 RMBG-2.0 实现高精度背景去除
目录 说明 RMBG-2.0 是什么 BiRefNet 架构的核心思想 效果 模型信息 项目 代码 下载 模型下载 说明 背景去除是图像处理中的一个经典难题。从早期的颜色键控、GrabCut,到如今基于深度学习的分割模型,技术的演进让抠图这件事变得越来越智能。而…...
写程序相册内页分隔卡,复古做旧风,输出:纪念册/影楼增值项目。
构建一个矢量图形生成算法,模拟激光切割/雕刻出的复古质感分隔卡,作为影楼的增值项目。项目名称:VintageSeperator (复古相册分隔卡生成器)一、 实际应用场景描述场景设定为高端婚纱影楼或独立摄影工作室的后期制作部门。为了提升客单价&…...
Synopsys Multivoltage Flow User Guide(汉化笔记)
1 Low-Power Design Strategies 1.1 Increasing Challenges of Power 早期的IC设计中EDA工具更多的优化方向是性能和面积,功耗考虑的比较少,但是,现在的设计CMOS器件密度和时钟频率都在提升,功耗重要性也更加明显,供电电压和晶体管阈值电压也在降低,漏电电流也成为无法忽…...
dateutil高级用法:如何自定义解析器、扩展时区功能和创建复杂规则
dateutil高级用法:如何自定义解析器、扩展时区功能和创建复杂规则 【免费下载链接】dateutil Useful extensions to the standard Python datetime features 项目地址: https://gitcode.com/gh_mirrors/da/dateutil dateutil是Python中一个强大的日期时间处理…...
模型微调进阶:让百川2-13B-4bits更好适配OpenClaw的3个技巧
模型微调进阶:让百川2-13B-4bits更好适配OpenClaw的3个技巧 1. 为什么需要专门微调百川模型? 去年我在尝试用OpenClaw自动化处理日常办公流程时,发现一个有趣的现象:同样的任务描述,不同的大模型在拆解步骤时消耗的T…...
一文学习 工作流开发 BPMN、 Flowable参
一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景: …...
如何划分接口文档?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快1、首先最主要的就是要分析接口测试文档,每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定,里面缺少的内容自己需要与开…...
LeetCode 3655. 区间乘法查询后的异或2 解题报告(Python)
LeetCode 3655. 区间乘法查询后的异或2 解题报告(Python) 前言 本题是 LeetCode 第 3655 号问题,属于一道结合了根号分治、差分思想与模运算的综合应用题。题目要求在一个数组上执行大量区间“跳跃式”乘法操作,并最终返回所有元素…...
GLM技术复盘:篇论文深度解读智谱模型家族菏
开发个什么Skill呢? 通过 Skill,我们可以将某些能力进行模块化封装,从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践:创建一个用于自动生成 Skill 的 Skill,一是用…...
