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

HTTP(HyperText Transfer Protocol,超文本传输协议)是位于OSI七层模型和TCP/IP四层模型中**应用层**的协议

HTTP(HyperText Transfer Protocol,超文本传输协议)是位于OSI七层模型和TCP/IP四层模型中应用层的协议。它主要用于客户端(如浏览器)与服务器之间传输超文本(如HTML页面、图片、视频等资源),依赖下层的传输层协议(通常是TCP)来保证可靠的数据传输。

HTTP本身是无状态、明文传输的协议(HTTP/1.1及之前),而HTTPS则是在HTTP基础上叠加TLS/SSL加密层,属于“HTTP over TLS”,仍属于应用层协议,但安全性由传输层之上的安全层保障。

常见HTTP方法包括:GET、POST、PUT、DELETE、HEAD、OPTIONS等;典型状态码如200(OK)、404(Not Found)、500(Internal Server Error)等也均由应用层定义和处理。

GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html

HTTP/1.1 与 HTTP/2 虽同属应用层协议,但它们在数据传输模型、性能优化机制和底层抽象方式上存在本质差异。关键区别如下(聚焦应用层实现层面,不涉及TLS等传输安全细节):

1. 通信模型:文本 vs 二进制帧(Frame-based)

  • HTTP/1.1:基于纯文本的请求/响应格式(如GET /path HTTP/1.1),每条消息独立、无结构化分帧,解析依赖换行符和空行,易受解析歧义和慢读攻击影响。
  • HTTP/2:完全二进制协议,所有通信被分解为最小单位——帧(Frame)(如 HEADERS、DATA、SETTINGS、PRIORITY 帧)。帧可交错、复用、优先级排序,由应用层协议栈直接编码/解码,更高效、健壮、无歧义。

2. 连接复用:队头阻塞(HOLB) vs 多路复用(Multiplexing)

  • HTTP/1.1:虽支持持久连接(Connection: keep-alive),但同一 TCP 连接上请求必须串行发送与响应(管道化 pipeline 支持差且未被广泛启用),一个慢响应会阻塞后续请求(队头阻塞)。
  • HTTP/2:原生多路复用——多个请求/响应可同时在单个连接上并行传输,每个流(Stream)有唯一 ID,帧按流标识交叉发送与重组,彻底消除应用层队头阻塞(TCP 层 HOLB 仍存在,HTTP/3 用 QUIC 解决)。

3. 头部处理:明文重复 vs HPACK 压缩

  • HTTP/1.1:每次请求/响应都重复发送大量冗余头部(如User-Agent,Cookie,Accept),无压缩,浪费带宽。
  • HTTP/2:引入HPACK 算法(静态表 + 动态哈夫曼编码 + 索引引用),对头部字段进行有状态压缩,显著减少头部开销(尤其对 Cookie 长、重复域名等场景效果突出)。

4. 服务器推送(Server Push,HTTP/2 特性,HTTP/3 已弃用)

  • HTTP/2 允许服务器在客户端未显式请求时,主动推送资源(如 HTML 中引用的 CSS/JS),通过PUSH_PROMISE帧预声明,减少往返延迟。
  • HTTP/1.1 完全无此能力,需客户端解析 HTML 后再次发起请求。
    ⚠️ 注:Server Push 在实践中因缓存难控、易滥用等问题,在 HTTP/2 后期逐渐被弃用,HTTP/3 明确移除。

5. 流量控制与优先级(应用层可控)

  • HTTP/1.1:无内置流控与优先级机制,依赖 TCP 拥塞控制和客户端/服务端自行调度。
  • HTTP/2:定义了应用层流量控制窗口(per-stream & connection-level)权重化依赖树(stream dependency tree),客户端可动态调整各流的相对优先级(如先加载首屏 HTML > 图片 > 广告 JS)。

📌 补充说明:

  • 二者语义兼容:HTTP/2不改变 HTTP 方法、状态码、URI、头部语义(如GET,200 OK,Content-Type含义完全一致),是“语法升级”而非“语义重构”,因此 Web 开发者无需修改业务逻辑即可受益于性能提升。
  • 升级机制:HTTP/2 通常通过 TLS 的 ALPN 协商(HTTPS 场景)或 HTTP/1.1 的Upgrade: h2c(明文,极少使用)完成协商。
// HTTP/2 示例(Wireshark 解析后示意,非原始文本) STREAM 1 (headers): GET /index.html → :method=GET, :path=/index.html STREAM 3 (headers): GET /style.css → :method=GET, :path=/style.css STREAM 1 (data): <html>...</html> STREAM 3 (data): body { color: red; }

http://www.jsqmd.com/news/1128860/

相关文章:

  • 终极Wand-Enhancer完全指南:5分钟解锁游戏修改器完整高级功能
  • 不同进程的线程切换**不一定引起进程切换**,但**必然涉及进程上下文切换(即进程切换)**——这里需要明确概念辨析
  • 55-LangChain核心概念-Chain-Agent-Tool-Memory关系
  • 从0到1用C#开发ABB机器人上位机:PC SDK通信+运动控制+状态监控
  • PyTorch 2.0+ 实战:Fashion MNIST 图像分类从 91% 到 95% 的 3 个调优技巧
  • XPS深度剖析概述
  • 2026全球汽车资本风向:为什么Tier 1供应商正在比主机厂赚得更多?
  • 测试框架体系 TDD DDT BDD ATDD 介绍
  • 2026年7月亲测,汽修引流这样干超有效!
  • 2026 AI 开发者生存指南(9):AI 产品的数据分析与增长方法——从流量到留存
  • WSL2 安装LeRebot开发环境
  • TVA在具身智能商业化部署中的技术突破(10)
  • 腾讯元宝复制内容带乱码怎么办?AI 导出鸭一键解决复制粘贴乱码难题,程序员高效办公必备
  • 论文学习:2.Semi-Supervised Classification with Graph Convolutional Networks(1)
  • Onekey Steam游戏解锁器:智能自动化DLC解锁的全面解决方案
  • Python练习题2
  • TPA3128D2音频放大器与PIC18F4458微控制器的集成应用
  • 26. 【C语言】编译前的“文本大师”:预处理器指令
  • 华盛顿邮报发文:中国企业正在改写全球 AI 竞争格局——不靠最顶尖,靠最实用
  • merge、concat、join:三张表合并搞崩你的不是语法是逻辑
  • 智慧职教自动化学习助手:让在线课程学习更高效
  • X射线光电子能谱(XPS)全元素深度剖析
  • 基于 Simulink 的双向 DC-DC 变换器效率 MAP 图自动化扫描仿真实
  • 医学图像分割神器TotalSegmentator:三步掌握100+解剖结构自动识别
  • 高效智能图像去重解决方案:ImageDedup 终极指南
  • STM32L433RC与MC6470 IMU的高精度姿态检测方案
  • Cangaroo:免费开源CAN总线分析软件的完整指南
  • ConvertToUTF8:终极指南 - 彻底解决Sublime Text中文乱码问题
  • TVA对具身智能领域的核心技术支撑(19)
  • 【QT】qt里的c++项目为啥不能用NULL