文章目录

    • 从单行到新纪元:HTTP/0.9、1.0、1.1、2.0与3.0的核心区别
      • HTTP/0.9:协议的黎明 (1991)
      • HTTP/1.0:功能扩展与标准化 (1996)
      • HTTP/1.1:持久连接与性能优化 (1997)
      • HTTP/2.0:二进制与多路复用 (2015)
      • HTTP/3.0:切换赛道,拥抱QUIC (2022)
      • 各版本对比一览表
      • 推荐阅读

从单行到新纪元:HTTP/0.9、1.0、1.1、2.0与3.0的核心区别

超文本传输协议(HTTP)是支撑万维网(World Wide Web)数据通信的基石。从其最初仅用于传输简单文档的形态,到如今为复杂交互式应用提供动力,HTTP经历了多次关键迭代。了解从0.9到3.0版本的演进,就是理解整个Web技术发展史的核心脉络。

它们之间的核心区别可以概括为:连接效率的提升、传输格式的优化、以及底层协议的革命


HTTP/0.9:协议的黎明 (1991)

HTTP/0.9是协议的起点,其设计极度简化,目标单一。

  • 单行协议:请求只有一个 GET 方法,后面直接跟资源路径,没有版本号,也没有请求头(Header)。
  • 响应纯粹:服务器的响应内容只有HTML文档本身,不包含任何元数据(如状态码或内容类型)。
  • 无状态码:如果请求出错,服务器会返回一个特殊的HTML页面来描述问题。
  • 短暂连接:每个请求都需要建立一个新的TCP连接,请求完成后连接立即关闭,效率低下。

一句话总结:一个只能获取HTML文档的“原始”协议,是后续所有版本的基础。


HTTP/1.0:功能扩展与标准化 (1996)

为满足日益丰富的网页内容需求,HTTP/1.0引入了众多至今仍在使用的核心概念。

  • 引入版本号和头信息:请求和响应都包含了版本号和HTTP头,使得传输元数据成为可能。
  • 丰富的元数据
    • 状态码:引入了200 OK, 404 Not Found等标准状态码,客户端可以明确得知请求结果。
    • 内容类型 (Content-Type):允许传输图片、视频、CSS等任意类型的文件。
  • 增加请求方法:除了GET,还增加了POSTHEAD方法,功能更为强大。
  • 连接管理:默认仍是“短连接”,每个请求响应后断开。虽然引入了非标准的Connection: keep-alive头来尝试复用连接,但并非默认行为。

一句话总结:一个标准化的、能传输多种媒体类型、但连接效率依然低下的协议。


HTTP/1.1:持久连接与性能优化 (1997)

HTTP/1.1是统治Web长达近20年的经典版本,其核心目标是解决1.0的性能瓶颈。

  • 默认持久连接 (Persistent Connection):这是最重要的改进。TCP连接默认保持打开(Keep-Alive),允许多个请求在同一连接上完成,极大减少了连接建立的开销。
  • 管道化 (Pipelining):允许客户端在同一连接上连续发送多个请求,而无需等待前一个响应。但服务器必须按序响应,如果第一个请求处理慢,后续响应会被阻塞,这就是著名的“队头阻塞 (Head-of-Line Blocking)”。
  • Host头字段:请求头中必须包含Host字段,使得一台物理服务器能托管多个网站(虚拟主机)。
  • 更精细的缓存控制:引入了ETag, If-Match等更多缓存头,提升了缓存效率。

一句话总结:通过持久连接大幅提升了性能,是现代Web应用的基础,但仍受“队头阻塞”问题困扰。


http1.1队头阻塞
在这里插入图片描述

HTTP/2.0:二进制与多路复用 (2015)

HTTP/2是对HTTP/1.1的重大革新,旨在从根本上解决性能问题,专为现代复杂网页设计。

  • 二进制分帧 (Binary Framing):HTTP/2将所有传输信息分割为更小的消息和帧,并采用二进制格式编码。解析更高效、紧凑且不易出错。
  • 多路复用 (Multiplexing)核心特性。允许在单个TCP连接上同时、并行地发送和接收多个请求和响应流,它们可以交错传输。这彻底解决了HTTP/1.1的应用层“队头阻塞”问题。
  • 头部压缩 (Header Compression):使用HPACK算法对重复的请求头进行压缩,显著减少了网络开销。
  • 服务器推送 (Server Push):服务器可以主动将客户端未来可能需要的资源(如CSS、JS)推送到客户端缓存中,减少请求延迟。

一句话总结:通过二进制和多路复用技术,解决了应用层队头阻塞,大幅提升了传输效率和并发能力。


http2.0的TCP层阻塞
在这里插入图片描述

HTTP/3.0:切换赛道,拥抱QUIC (2022)

HTTP/2虽然解决了应用层的队头阻塞,但其底层的TCP协议本身也存在队头阻塞问题(一个数据包丢失,会导致整个TCP连接等待重传)。为了彻底解决这个问题,HTTP/3做出了颠覆性的改变。

  • 全新的底层协议QUIC:HTTP/3不再基于TCP,而是构建在Google开发的**QUIC (Quick UDP Internet Connections)**协议之上。QUIC运行在UDP上。
  • 解决TCP队头阻塞:QUIC在内部实现了自己的多路复用和流量控制。单个数据流的丢包不会影响在同一QUIC连接上的其他流,从而彻底解决了传输层的队头阻塞问题
  • 更快的连接建立:QUIC将传输层握手(类似TCP三次握手)和加密握手(TLS 1.3)结合在一起,大大减少了连接建立所需的往返时间(RTT),可以实现0-RTT或1-RTT连接。
  • 连接迁移 (Connection Migration):当用户的网络环境变化时(如从Wi-Fi切换到4G),连接不会中断。QUIC使用连接ID来标识连接,而不是TCP的四元组(源IP、源端口、目标IP、目标端口),因此IP地址变化后连接依然可以保持。

一句话总结:通过切换到基于UDP的QUIC协议,解决了传输层队头阻塞,并带来了更快的连接建立和更稳定的移动网络体验,是为未来互联网设计的下一代协议。
http3.0彻底解决队头阻塞
在这里插入图片描述

各版本对比一览表

特性HTTP/0.9HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0
底层协议TCPTCPTCPTCPUDP (QUIC)
连接管理短连接默认短连接默认持久连接多路复用多路复用
队头阻塞不适用严重应用层存在应用层解决,TCP层存在彻底解决
协议格式纯文本纯文本纯文本二进制二进制
头部压缩HPACKQPACK (为QUIC优化)
连接建立延迟较高较高极低 (0/1-RTT)
网络切换连接断开连接断开连接断开连接断开连接保持 (连接迁移)

推荐阅读

  • (生活比喻)http2.0和http3.0的队头阻塞,http2.0应用层解决,TCP层存在,3.0就是彻底解决,到底怎么理解区别???
    https://hwg985.blog.csdn.net/article/details/149201081?fromshare=blogdetail&sharetype=blogdetail&sharerId=149201081&sharerefer=PC&sharesource=weixin_46028606&sharefrom=from_link
  • HTTP/3.0的连接迁移使用连接ID来标识连接为什么可以做到连接不会中断https://hwg985.blog.csdn.net/article/details/149200478?fromshare=blogdetail&sharetype=blogdetail&sharerId=149200478&sharerefer=PC&sharesource=weixin_46028606&sharefrom=from_link

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

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

相关文章

Java教程:JavaWeb ---MySQL高级

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:大数据开发、.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_…

Audio笔试和面试题型解析

本专栏预计更新90期左右。当前第27期-音频部分. 音频硬件在消费电子(手机、电脑、耳机、智能音箱)、汽车、专业音响等领域是用户体验的关键组成部分。大厂(如苹果、三星、Google、华为、小米、各种汽车Tier 1供应商等)的硬件工程师在设计和优化音频系统时,需要对喇叭(扬…

DeepSeek俄罗斯方块网页版HTML5(附源码)

用DeepSeek生成一个俄罗斯方块游戏网页版的,基于HTML5,效果很棒。 提示词prompt 帮我做一个俄罗斯方块 网页版的 基于HTML5游戏功能说明 基本功能: 完整的俄罗斯方块游戏逻辑 7种不同形状的方块 分数计算系统 等级提升系统(速度会随等级提高)…

企业电商平台搭建:ZKmall开源商城服务器部署与容灾方案

企业级电商平台最核心的诉求,就是得让 “业务一直在线”—— 不管是平时运营要稳如磐石,还是突然出故障了能火速恢复,都离不开靠谱的服务器部署架构和周全的容灾方案。ZKmall 开源商城攒了 6000 多家企业客户的实战经验,琢磨出一套…

【软件运维】前后端部署启动的几种方式

.sh启动 #!/bin/bash# 解析软链接,获取真实脚本目录 SOURCE"${BASH_SOURCE[0]}" while [ -L "$SOURCE" ]; doDIR"$( cd -P "$( dirname "$SOURCE" )" && pwd )"SOURCE"$(readlink "$SOURCE&q…

[爬虫知识] DrissionPage:强大的自动化工具

相关爬虫实战案例:[爬虫实战] 使用 DrissionPage 自动化采集小红书笔记 相关爬虫专栏:JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 逆向知识点合集 前言: 在当今数据驱动的世界里,网络爬虫和自动化测试扮演着越来越重要的角…

数据分析师如何构建自己的底层逻辑?

目录 一、什么是“底层逻辑”? 二、底层逻辑的核心是什么?三句话讲清楚 1. 你到底在解决什么问题? 2. 你有没有一套“框架”来组织你的分析思路? 3. 你能不能用数据说出“结论 因果 建议”? 三、从 BI 视角出发…

残差连接+层归一化:Transformer训练稳定秘诀

什么是:残差连接+层归一化 残差连接 (Residual Connection):防止梯度消失 核心原理 简单理解:走楼梯时,既可以走楼梯,也可以坐电梯,最后在同一层汇合。 # 残差连接的数学表示 输出 = F(输入) + 输入 # ↑处理后 ↑原始输入具体数值例子 处理句子"我爱学习…

公网 IP 不稳定监控实战:用多点 Ping 策略实现高可达率保障

更多云服务器知识,尽在hostol.com 你有没有遇到过这种情况:明明服务器的监控系统说一切正常,服务状态绿油油一片,但用户那边却反馈“时好时坏”、“丢包严重”甚至“根本连不上”。你掏出手机连上公网去试试,诶&#…

uniapp类似抖音视频滑动

最近需求说要做个类似抖音那种视频的&#xff0c;我二话不说就用了swiper-view组件&#xff0c;但是效果不太理想&#xff0c;后面改用css属性先放效果图&#xff1a;<template><view class"video-scroll-container" touchstart"handleTouchStart"…

Umi-OCR 的 Docker(win制作镜像,Linux(Ubuntu Server 22.04)离线部署)

前置博客&#xff1a;Ubuntu-Server 22.04.4 详细安装图文教程 wget命令在windows终端下不能使用的原因及解决办法 在 Ubuntu 22.04 LTS 上离线安装 Docker 手把手教你在Win11下安装docker Umi-OCR 完整部署流程 第一步&#xff1a;在 Windows 上构建/获取 Umi-OCR Docker…

AI Agent革命:当大模型学会使用工具、记忆与规划

以下是针对Lilian Weng的AI Agent综述文章&#xff08;原文链接&#xff09;的深度解析与整理&#xff1a; AI Agent革命&#xff1a;当大模型学会使用工具、记忆与规划 ——解析LLM驱动的下一代智能体技术架构 一、核心范式转变 传统AI模型&#xff08;如ChatGPT&#xff09…

Claude Code:完爆 Cursor 的编程体验

前言 最近&#xff0c;听说Claude Code这款代码辅助编写产品很强&#xff0c;有人把Cursor比作实习生水平&#xff0c;Claude Code比作高级工程师水平。 起初不以为意&#xff0c;因为特殊原因&#xff0c;Claude 无法直接访问。然而&#xff0c;有人做了镜像站&#xff0c;可以…

ModbusTCP通讯

supply服务-ModbusTCP通讯&#xff1a; winForm-HZHControls-Sqllite本地小项目架构补充&#xff1a;

前端面试专栏-算法篇:23. 图结构与遍历算法

&#x1f525; 欢迎来到前端面试通关指南专栏&#xff01;从js精讲到框架到实战&#xff0c;渐进系统化学习&#xff0c;坚持解锁新技能&#xff0c;祝你轻松拿下心仪offer。 前端面试通关指南专栏主页 前端面试专栏规划详情 图结构与遍历算法 在计算机科学中&#xff0c;图&a…

渗透测试之木马后门实验

一、实验背景 根据CNCERT的监测数据显示&#xff0c;2018年位于美国的1.4万余台木马或僵尸网络控制服务器&#xff0c;控制了中国境内334万余台主机&#xff1b;2018年位于美国的3325个IP地址向中国境内3607个网站植入木马&#xff0c;根据对控制中国境内主机数量及控制中国境内…

【LeetCode 热题 100】24. 两两交换链表中的节点——(解法一)迭代+哨兵

Problem: 24. 两两交换链表中的节点 题目&#xff1a;给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 文章目录整体思路完整代码…

微积分核心考点全解析

一、微积分核心知识框架 1. 极限与连续&#xff08;重点&#xff01;&#xff09; 核心概念&#xff1a; 极限定义&#xff08;ε-δ语言&#xff09;重要极限&#xff1a;lim⁡x→0sin⁡xx1limx→0​xsinx​1&#xff0c;lim⁡x→∞(11x)xelimx→∞​(1x1​)xe连续性判定&am…

TypeScript---泛型

一.简介TypeScript 就引入了“泛型”&#xff08;generics&#xff09;。泛型的特点就是带有“类型参数”&#xff08;type parameter&#xff09;。在日常 TypeScript 编程中&#xff0c;我们经常会遇到这样的场景&#xff1a;函数的参数类型与返回值类型密切相关。此时&#…

手把手一起使用Miniforge3+mamba平替Anaconda(Win10)

Anaconda 开始对企业收费&#xff0c;目前急需平替Anaconda。这里采用Minforgemamba作为替代&#xff0c;可以避免Anaconda追责&#xff0c;并100%兼容原conda仓库及使用方式&#xff0c;如果各位小伙伴有更好的平替方式&#xff0c;欢迎分享。 Miniforge3安装 下载并安装Min…