HTTP 协议的发展历程:从 HTTP/1.0 到 HTTP/2.0

HTTP 协议的发展历程:从 HTTP/1.0 到 HTTP/2.0

HTTP(HyperText Transfer Protocol,超文本传输协议)是 Web 的基础协议,用于客户端和服务器之间的通信。从 HTTP/1.0 到 HTTP/2.0,HTTP 协议经历了多次重大改进,每一次升级都旨在解决前一版本的局限性并提升性能。以下是 HTTP 协议的发展历程及其关键改进。


1. HTTP/1.0(1996 年)

HTTP/1.0 是第一个广泛使用的 HTTP 版本,定义了基本的请求-响应模型。

特点:
  • 简单性:每个请求都需要建立一个单独的 TCP 连接,请求完成后连接立即关闭。
  • 无状态性:HTTP/1.0 是无状态的,服务器不会保留客户端的状态信息。
  • 支持有限的请求方法:如 GETPOSTHEAD
  • 响应格式:响应包含状态行、头部和可选的正文。
示例请求:
GET /index.html HTTP/1.0
Host: www.example.com
示例响应:
HTTP/1.0 200 OK
Content-Type: text/html
Content-Length: 1234<html>...</html>
局限性:
  • 性能问题:每个请求都需要建立和关闭 TCP 连接,导致高延迟。
  • 无连接复用:无法复用连接,增加了网络开销。
  • 不支持 Host 头部:无法支持虚拟主机(一个 IP 地址只能对应一个域名)。

2. HTTP/1.1(1997 年)

HTTP/1.1 是 HTTP/1.0 的改进版本,解决了 HTTP/1.0 的许多问题,并引入了许多新特性。

关键改进:
  1. 持久连接(Keep-Alive)

    • 默认启用持久连接,允许在同一个 TCP 连接上发送多个请求和响应,减少了连接建立和关闭的开销。
    • 通过 Connection: keep-alive 头部启用。
  2. 管道化(Pipelining)

    • 允许客户端在收到上一个响应之前发送多个请求,减少了延迟。
    • 但由于实现复杂性和队头阻塞问题,管道化并未被广泛采用。
  3. Host 头部

    • 支持虚拟主机,允许一个 IP 地址托管多个域名。
  4. 分块传输编码(Chunked Transfer Encoding)

    • 支持流式传输,服务器可以在不知道内容长度的情况下发送数据。
  5. 缓存控制

    • 引入了 Cache-ControlETag 等头部,提供了更强大的缓存机制。
  6. 更多请求方法

    • 新增了 PUTDELETEOPTIONSTRACE 等方法。
示例请求:
GET /index.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
示例响应:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Connection: keep-alive<html>...</html>
局限性:
  • 队头阻塞(Head-of-Line Blocking)
    • 在同一个连接上,如果前面的请求处理较慢,后续请求会被阻塞。
  • 头部冗余
    • 每个请求都会发送完整的头部信息,增加了带宽消耗。
  • 并行连接限制
    • 浏览器通常对同一个域名限制最多 6-8 个并发连接,限制了并行请求的数量。

3. HTTP/2.0(2015 年)

HTTP/2.0 是 HTTP/1.1 的重大升级,旨在解决 HTTP/1.1 的性能瓶颈,并引入了一系列新特性。

关键改进:
  1. 二进制协议

    • HTTP/2 使用二进制格式传输数据,取代了 HTTP/1.x 的文本格式,提高了解析效率。
  2. 多路复用(Multiplexing)

    • 允许在同一个连接上并行发送多个请求和响应,彻底解决了队头阻塞问题。
  3. 头部压缩(HPACK)

    • 使用 HPACK 算法压缩头部信息,减少了数据传输量。
  4. 服务器推送(Server Push)

    • 服务器可以在客户端请求之前主动推送资源,减少延迟。
  5. 流优先级(Stream Prioritization)

    • 允许客户端为请求设置优先级,确保重要资源优先加载。
  6. 改进的安全性

    • 虽然 HTTP/2 不强制使用 HTTPS,但主流浏览器只支持基于 TLS 的 HTTP/2。
示例请求:

HTTP/2 的请求和响应格式与 HTTP/1.1 类似,但底层使用二进制帧传输。

示例响应:
HTTP/2 200
content-type: text/html<html>...</html>
优势:
  • 性能显著提升:多路复用和头部压缩减少了延迟和带宽消耗。
  • 更好的资源管理:服务器推送和流优先级优化了资源加载顺序。
  • 兼容性:HTTP/2 完全兼容 HTTP/1.1 的语义,无需修改应用逻辑。
局限性:
  • 实现复杂性:HTTP/2 的二进制协议和流控制机制增加了实现的复杂性。
  • 依赖 HTTPS:主流浏览器要求 HTTP/2 必须基于 TLS,增加了服务器配置的复杂性。

总结:HTTP 协议的演进

版本发布时间关键特性局限性
HTTP/1.01996简单请求-响应模型,无状态性每个请求需要单独连接,性能差
HTTP/1.11997持久连接、管道化、Host 头部、分块传输、缓存控制队头阻塞、头部冗余、并行连接限制
HTTP/2.02015二进制协议、多路复用、头部压缩、服务器推送、流优先级实现复杂,依赖 HTTPS

从 HTTP/1.0 到 HTTP/2.0,HTTP 协议的每一次升级都旨在解决前一版本的性能瓶颈和功能缺陷。HTTP/2.0 通过引入二进制协议、多路复用和头部压缩等特性,显著提升了 Web 性能,为现代 Web 应用提供了更高效的通信机制。

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

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

相关文章

apload-lab打靶场

1.提示显示所以关闭js 上传<?php phpinfo(); ?>的png形式 抓包&#xff0c;将png改为php 然后放包上传成功 2.提示说检查数据类型 抓包 将数据类型改成 image/jpeg 上传成功 3.提示 可以用phtml&#xff0c;php5&#xff0c;php3 4.先上传.htaccess文件&#xff0…

金融支付行业技术侧重点

1. 合规问题 第三方支付系统的平稳运营&#xff0c;严格遵循《非银行支付机构监督管理条例》的各项条款是基础与前提&#xff0c;其中第十八条的规定堪称重中之重&#xff0c;是支付机构必须牢牢把握的关键准则。 第十八条明确指出&#xff0c;非银行支付机构需构建起必要且独…

Cherry Studio + 火山引擎 构建个人AI智能知识库

&#x1f349;在信息化时代&#xff0c;个人知识库的构建对于提高工作效率、知识管理和信息提取尤为重要。尤其是当这些知识库能结合人工智能来智能化地整理、分类和管理数据时&#xff0c;效果更为显著。我最近尝试通过 Cherry Studio 和 火山引擎 来搭建个人智能知识库&#…

LeetCode 2 - 两数相加

LeetCode 2 - 两数相加 是一道经典链表操作问题&#xff0c;经常作为面试中基础题的变体被考察。掌握多种解法及其变体&#xff0c;并熟悉其核心思路和模板代码&#xff0c;可以快速备战相关链表或大数计算问题。 题目描述 给定两个非空链表&#xff0c;它们代表两个非负整数&…

Qt之QStateMachine等待

在项目中经常需要等待&#xff0c;我们模拟0-30的数&#xff0c;假如我们其中5&#xff0c; 25的数需要进行等待&#xff0c;等待用户处理完自己事情后&#xff0c;按下按钮继续&#xff0c;找Qt的项目中有一个 QStateMachineqstatemmachine类提供了一个分层有限状态机。 QSta…

elpis全栈课程学习之elpis-core学习总结

elpis全栈课程学习之elpis-core学习总结 核心原理 elpis-core是全栈框架elpis的服务端内核&#xff0c;主要应用于服务端接口的开发以及页面的SSR渲染&#xff0c;elpis-core基于约定优于配置的原理&#xff0c;通过一系列的loader来加载对应的文件&#xff0c;大大节约用户的…

ChatGPT与DeepSeek:开源与闭源的AI模型之争

目录 一、模型架构与技术原理 二、性能能力与应用场景 三、用户体验与部署灵活性 四、成本与商业模式 五、未来展望与市场影响 六、总结 随着人工智能技术的飞速发展&#xff0c;ChatGPT和DeepSeek作为两大领先的AI语言模型&#xff0c;成为了行业内外关注的焦点。它们在…

在笔记本电脑上用DeepSeek搭建个人知识库

最近DeepSeek爆火&#xff0c;试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下&#xff0c;在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库&#xff0c;实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…

DeepSeek蒸馏TinyLSTM实操指南

一、硬件准备 阶段推荐配置最低要求训练阶段NVIDIA A100 80GB 4RTX 3090 24GB 1量化阶段Intel Xeon Gold 6248R CPUi7-12700K + 64GB RAM部署阶段Jetson Xavier NX开发套件Raspberry Pi 4B 8GB二、软件环境搭建 # 创建Python虚拟环境 conda create -n distil python=3.9 conda…

Linux ls 命令

Linux ls&#xff08;英文全拼&#xff1a; list directory contents&#xff09;命令用于显示指定工作目录下之内容&#xff08;列出目前工作目录所含的文件及子目录)。 语法 ls [-alrtAFR] [name...] 参数 : -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)-d 只列出目…

LeetCode 热题 100 53. 最大子数组和

LeetCode 热题 100 | 53. 最大子数组和 大家好&#xff0c;今天我们来解决一道经典的算法题——最大子数组和。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求我们找出一个具有最大和的连续子数组&#xff0c;并返回其最大和。下面我将详细讲解解题思路&#xff0c;并…

【计算机网络入门】初学计算机网络(九)

目录 1.令牌传递协议 2. 局域网&IEEE802 2.1 局域网基本概念和体系结构 3. 以太网&IEEE802.3 3.1 MAC层标准 3.1.1 以太网V2标准 ​编辑 3.2 单播广播 3.3 冲突域广播域 4. 虚拟局域网VLAN 1.令牌传递协议 先回顾一下令牌环网技术&#xff0c;多个主机形成…

Java 大视界 -- Java 大数据中的时间序列数据异常检测算法对比与实践(103)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

Android Activity栈关系解析

在 Android 系统中&#xff0c;这些类共同构成了 Activity 任务栈管理的核心架构。它们的关系可以类比为一栋大楼的管理体系&#xff0c;每个类负责不同层级的任务。以下是它们的详细解释和实际场景示例&#xff1a; 1. ActivityRecord&#xff08;活动记录&#xff09; 是什么…

【0011】HTML其他文本格式化标签详解(em标签、strong标签、b标签、i标签、sup标签、sub标签......)

如果你觉得我的文章写的不错&#xff0c;请关注我哟&#xff0c;请点赞、评论&#xff0c;收藏此文章&#xff0c;谢谢&#xff01; 本文内容体系结构如下&#xff1a; 本文旨在深入探讨HTML中其他的文本格式化标签&#xff0c;主要有<em> 标签、<strong> 标签、…

华为AP 4050DN-HD的FIT AP模式改为FAT AP,家用FAT基本配置

在某鱼买了两台华为AP 4050DN-HD , AP是二手的 , 在AC上上过线 , 所以就不能开机自选为FIP模式了 我没有AC无线控制器 , 就是买一个自己玩 , AP又是FIT瘦AP模式 ,所以我就想把AP的瘦AP模式改为FAT胖AP模式 1. 准备工作 1.1下载好对应软件&#xff0c;进入到 企业业务网站去下…

【Linux网络-HTTP协议】HTTP基础概念+构建HTTP

代码定位&#xff1a;南毅c/Linux - Gitee.com HTTP协议 介绍 虽然我们说&#xff0c;应用层协议是我们程序猿自己定的.但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用。HTTP(超文本传输协议)就是其中之一。 在互联网世界中&#xff0c…

SpringSecurity 实现token 认证

配置类 Configuration EnableWebSecurity EnableGlobalMethodSecurity(prePostEnabledtrue) public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { Bean Override public AuthenticationManager authenticationManagerBean() throws Exception {return s…

基于互联网协议的诊断通信(DoIP)

1、ISO 13400标准和其他汽车网络协议标准有何不同&#xff1f; ISO 13400 标准即 DoIP 协议标准&#xff0c;与其他常见汽车网络协议标准&#xff08;如 CAN、LIN、FlexRay 等&#xff09;有以下不同&#xff1a; 通信基础与适用场景 ISO 13400&#xff1a;基于互联网协议&a…

LabVIEW DataSocket 通信库详解

dataskt.llb 是 LabVIEW 2019 内置的核心函数库之一&#xff0c;位于 vi.lib\Platform\ 目录下&#xff0c;专注于 DataSocket 技术的实现。DataSocket 是 NI 提供的网络通信协议&#xff0c;支持跨平台、跨设备的实时数据共享&#xff0c;广泛应用于远程监控、分布式系统集成等…