HTTP 1.1 比 HTTP1.0 多了什么?(详尽版)

news2025/4/15 22:49:26

相较于HTTP 1.0,1.1 版本增加了以上特性:

1. 新增了连接管理即 keepalive,允许持久连接。

定义:

Keepalive允许客户端和服务器在完成一次请求-响应后,保持连接处于打开状态,以便后续请求复用同一连接,而无需重新建立连接。

工作原理:

  1. 客户端通过TCP三次握手与服务器建立连接。
  2. 客户端发送HTTP请求,服务器处理后返回响应。
  3. 服务器不会立即关闭连接,而是保持空闲状态,等待后续请求。
  4. 如果客户端在预设时间内发送新的请求,服务器将复用此连接。
  5. 超过空闲时间后,服务器会关闭连接以节省资源。

优势:

  1. 减少连接开销: 避免了频繁的TCP连接建立和关闭,节省时间和带宽。
  2. 提升性能: 特别适用于需要多个小请求的场景,如加载多张图片或脚本。

2. 支持pipeline,无需等待前面的请求响应,即可发送第二次请求。

定义:

Pipeline允许客户端在一个连接中连续发送多个HTTP请求,而无需等待前一个响应。

工作原理:

  1. 客户端在同一个连接中发送多个请求。
  2. 服务器按顺序处理请求,并依次返回响应。
  3. 客户端在发送完所有请求后,等待服务器按顺序返回响应。

优势:

  • 减少延迟: 减少等待时间,尤其在高延迟网络中效果显著。
  • 提高吞吐量: 客户端可以并行发送请求,提高整体传输效率。

注意事项:

  • 服务器处理顺序: 响应必须按请求顺序返回,服务器无法重新排序。
  • 潜在问题: 管道中的任何一个请求失败可能导致后续请求处理延迟或失败。

3. 支持分块传输编码(Chunked Transfer Coding)

在HTTP协议中允许服务器将响应分成多个块发送,而无需提前知道内容的总长度。这在处理大型文件时特别有用,因为它提高了传输效率,减少了客户端等待时间。

以下是一个简明的示例:客户端请求从服务器下载一个10GB的视频文件。

传统方法(无分块传输):

  1. 客户端发送HTTP GET请求到服务器。
  2. 服务器处理请求,开始读取视频文件。
  3. 服务器计算整个文件的大小,并在响应头中设置Content-Length: 10737418240(10GB)。
  4. 服务器将整个文件一次性发送给客户端。
  5. 客户端等待接收完整个文件后,才能开始播放。

分块传输方法:

  1. 客户端发送HTTP GET请求,支持接受分块传输。
  2. 服务器开始处理请求,并将视频文件分割成多个块(例如,每块1MB)。
  3. 服务器在响应头中设置Transfer-Encoding: chunked,指示使用分块传输,不设置Content-Length。
  4. 服务器开始发送第一个块,包含块的大小(以十六进制表示)和块数据。
  5. 客户端接收到每个块后,立即开始处理(如播放视频),无需等待所有块传输完成。
  6. 服务器发送完最后一个块后,发送一个0大小的块,表示传输结束(EOF)。
  7. 客户端完成接收,处理完成。

优点:

客户端可以边下载边处理,提升用户体验。
服务器无需预先计算总长度,减少延迟。
节省内存,适用于大数据传输。

总结:

分块传输编码在处理大文件时显著提升了效率,减少了等待时间,适用于流媒体、大型文件下载等场景。

4. 新增缓存的控制和管理。

HTTP/1.1中,缓存控制和管理主要通过以下机制实现:

1. Cache-Control头部(用于控制缓存行为,如缓存有效期、缓存范围等。)

  • max-age=[seconds]:指定资源在缓存中的有效时间。
  • s-maxage=[seconds]:针对共享缓存(如CDN)的有效时间
  • no-cache:强制每次请求都验证资源是否过期。
  • no-store:禁止缓存任何内容。
  • public和private:分别允许或限制第三方缓存。

2. ETag头部(提供资源的唯一标识,用于验证资源是否更改。)

  • 工作原理:当客户端再次请求资源时,会发送If-None-Match头部,服务器通过ETag判断资源是否过期,若未变化则返回304状态码。

3. Last-Modified头部(指示资源的最后修改时间。)

  • 工作原理:客户端在请求中包含If-Modified-Since头部,服务器比较时间戳,若资源未更改则返回304状态码。

4. 缓存验证机制

  • 强缓存:直接使用缓存内容,无需服务器验证。
  • 协商缓存:客户端携带缓存验证信息(如ETag或Last-Modified),服务器确认资源是否过期后,决定是否返回新内容。

5. 缓存有效期管理

  • 过期时间:通过Cache-Control设置资源的缓存时长,过期后客户端会重新请求资源。
  • 服务器处理:服务器在接收到过期缓存请求时,会重新生成响应,确保客户端获得最新内容。

6. 缓存控制策略

  • 合理设置缓存时间:根据资源更新频率,设置适当的max-age值,平衡缓存和更新需求。
  • 使用ETag提升效率:避免频繁的全响应,通过ETag快速判断资源是否变化。
  • 灵活运用Cache-Control指令:根据资源类型(如公开或私有)选择合适的缓存策略。

通过以上机制,HTTP/1.1有效地管理了缓存,提升了资源加载速度,减少了服务器负载。合理配置这些头部和机制,可以显著优化网站性能和用户体验。

5. 加入host头

在HTTP/1.1协议中,Host头字段的作用非常重要,主要体现在以下几个方面:

标识目标服务器:

Host头字段指定了请求的目标服务器的域名和端口号(如果端口号非默认)。例如,Host: www.example.com表示请求的目标是www.example.com服务器。这使得服务器能够根据域名确定请求的来源,特别是在虚拟主机环境中,多个网站可以共享同一个IP地址,但通过不同的Host头来区分不同的域名。

支持虚拟主机:

通过Host头,服务器可以托管多个网站,每个网站使用不同的域名。当一个请求到达服务器时,服务器会解析Host头,从而确定应该将请求路由到哪个虚拟主机上,提供相应的资源。这极大提高了服务器资源的利用率。

路由和定位资源:

服务器根据Host头来确定请求的目标资源。这有助于服务器正确地路由请求,确保请求能够到达正确的应用程序或服务。例如,一个服务器可能托管多个应用程序,每个应用程序对应不同的域名,通过Host头可以实现精准的路由。

安全性:

Host头还用于防止某些类型的攻击,如HTTP头注入攻击。通过验证Host头的值,服务器可以确保请求的来源是合法的,从而增强安全性。

区分大小写:

虽然域名通常以小写显示,但Host头是区分大小写的。理论上,不同的大小写可能指向不同的资源,但大多数情况下,服务器会将大小写视为不敏感。

不包含路径信息:

Host头只包含域名和端口号,不包含请求的路径信息。路径信息在URI中指定,Host头的作用是明确请求的目标服务器,而路径则用于定位具体资源。

总结:

Host头在HTTP/1.1中起到了至关重要的作用,它不仅帮助服务器识别请求的目标,还支持虚拟主机的实现,提高资源利用率,同时增强安全性。正确配置和使用Host头是确保HTTP通信正常进行的关键。

6. 名词解释

EOF:End of File,这是一个关键的信号,用于指示文件传输的结束。

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

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

相关文章

【C++初学】C++核心编程(一):内存管理和引用

前言 在C的世界里,面向对象编程(OOP)是核心中的核心。它不仅是一种编程范式,更是一种思考问题的方式。本文将带你从C的内存分区模型出发,深入探讨引用、函数、类和对象、继承、多态以及文件操作等核心概念。通过丰富的…

(PC+WAP)大气滚屏网站模板 电气电力设备网站源码下载

源码介绍 (PCWAP)大气滚屏网站模板 电气电力设备网站源码下载。PbootCMS内核开发的网站模板,该模板适用于滚屏网站模板、电气电力设备网站源码等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;PCWAP&#xff0c…

笔试专题(九)

文章目录 十字爆破(暴力)题解代码 比那名居的桃子(滑动窗口/前缀和)题解代码 分组(暴力枚举 优化二分)题解代码 十字爆破(暴力) 题目链接 题解 1. 暴力 预处理 2. 如果单纯的暴…

3 VS Code 配置优化与实用插件推荐:settings.json 详解、CodeGeeX 智能编程助手及插件离线安装方法

1 优化 settings.json 文件 1.1 settings.json 简介 settings.json 是 VS Code 的核心配置文件,用于存储用户的个性化设置和偏好。通过该文件,用户可以自定义和覆盖 VS Code 的默认行为,包括但不限于以下方面: 编辑器外观&#…

TA学习之路——1.6 PC手机图形API介绍

1前言 电脑的工作原理:电脑是由各种不同的硬件组成,由驱动软件驱使硬件进行工作。所有的软件工程师都会直接或者间接的使用到驱动。 定义:是一个图形库,用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序接口(API)。…

Matlab 调制信号和fft变换

1、内容简介 Matlab 194-调制信号和fft变换 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

100M/1000M 以太网静电浪涌防护方案

方案简介 以太网是一种生产较早且广泛应用的局域网通讯方式,同时也是一种协议,其核 心在于实现区域内(如办公室、学校等)的网络互联。根据数据传输速度的不同,以 太网大致可以划分为几个等级:标准以太网…

C语言中while的相关题目

一、题目引入 以下程序中,while循环的循环次数是多少次? 二、代码分析 首先要明确的一点 while循环是当循环条件为真 就会一直循环 不会停止 while中i是小于10的 说明i可以取到0 1 2 3 4 5 6 7 8 9 进入第一个if判断i小于1为真时执行continue i0是为真的 执行continue 后…

「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题

如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾选,就会让图片导入设置中,不勾选Read/Write,就无法正确显示纹理的大小数字。 更进一步的问题是,使用Addressable打包的时候, 如…

Xcode为不同环境配置不同的环境变量

一般有三种方式: 一、通过多Target 二、通过scheme,也就是多configurations 三、通过.xcconfig文件 先来看第二种方式:通过scheme,也就是多configurations,包括自定义User-settings 第一步:增加configurations,Xcode默认为我们生成了…

阿里通义实验室发布图片数字人项目LAM,实现高保真重建

简介 LAM项目结合了3D Gaussian Splatting(高斯点云渲染)和大规模预训练模型的优势,解决了传统头部重建方法效率低、依赖多数据的痛点。其背景源于AI生成内容(AIGC)领域对实时、高保真3D头像生成的需求,尤其…

镜像端口及观察端口的配置

配好路由器的各个接口的IP PC1ping PC3的IP,在路由器中抓2/0/0端口的包,可观察到无结果 输入observe-port interface g 2/0/0 命令配置观察端口 输入mirror to observe-port both命令 (其中both表示接收来去的数据包,inboun…

STM32——I2C通讯(软件模拟)

I2C概念 I2C:Inter-Integrated Circuit(内部集成电路) Philps公司80年代初期开发的,引脚少,硬件实现简单,可扩展性广泛地使用在系统内多个集成电路(IC)间的低速通讯 简单的双向两线制总线协议…

JetBrains Terminal 又发布新架构,Android Studio 将再次迎来新终端

不到一年的时间,JetBrains 又要对 Terminal 「大刀阔斧」,本次发布的新终端是重构后的全新的架构,而上一次终端大调整还是去年 8 月的 v2024.2 版本,并且在「Android Studio Ladybug | 2024.2.1」也被引入。 不知道你们用不用内置…

论文:Generalized Category Discovery with Large Language Models in the Loop

论文下载地址:Generalized Category Discovery with Large Language Models in the Loop - ACL Anthology 1、研究背景 尽管现代机器学习系统在许多任务上取得了优异的性能,绝大多数都遵循封闭世界的设置,假设训练和测试数据来自同一组预定义…

第十六届蓝桥杯 省赛C/C++ 大学B组

编程题目现在在洛谷上都可以提交了。 未完待续,写不动了。 C11 编译命令 g A.cpp -o A -Wall -lm -stdc11A. 移动距离 本题总分:5 分 问题描述 小明初始在二维平面的原点,他想前往坐标 ( 233 , 666 ) (233, 666) (233,666)。在移动过程…

【计网】网络交换技术之分组交换(复习自用,重要1)

复习自用的,处理得比较草率,复习的同学或者想看基础的同学可以看看,大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记: 电路交换 报文交换 一、分组交换的定义 1.定义 分组交换&#x…

解密CHASE-SQL和XiYan-SQL多智能体AI如何最终实现TEXT2SQL的突破

想象一个世界,无论技术背景如何,任何人都能轻松查询海量数据库、挖掘深层洞察。比如:“我想知道安徽地区最畅销电子产品的第三季度销售额?”——只需一句话。“去年营销支出与客户获取成本之间的相关性如何?”——像聊天一样输入问题。这就是Text-to-SQL的承诺:将人类语言…

思考力提升的黄金标准:广度、深度与速度的深度剖析

文章目录 引言一、广度的拓展:构建多元知识网络1.1 定义与重要性1.2 IT技术实例与提升策略小结:构建多元知识网络,提升IT领域思考力广度 二、深度的挖掘:追求知识的精髓2.1 定义与重要性2.2 IT技术实例与提升策略小结:…

web自动化:下拉选择框、弹出框、滚动条的操作

web自动化:下拉选择框、弹出框、滚动条的操作 一、下拉选择框 1、导包 from selenium.webdriver.support.select inport Select 2、实例化对象 Select(element) 3、常用方法 通过option索引来定位,从0开始:select_by_index(index)通过…