《图解 HTTP》笔记——第3章 HTTP 报文内的 HTTP 信息

《图解HTTP》 一、了解web及网络基础1.1 使用HTTP协议访问WebWeb 使用一种名为 HTTP(HyperText Transfer Protocol, 超文本传输协议1) 的协议作为规范, 完成从客户端到服务器端等一系列运作流程。 1.2 HTTP诞生1989 年 3 月 CERN(欧洲核子研究组织) 的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士提出了一种能让远隔两地的研究者们共享知... 阅读详情

声明:

本博客是本人在学习《图解 HTTP》后整理的笔记,旨在方便复习和回顾,并非用作商业用途。

本博客已标明出处,如有侵权请告知,马上删除。

3.1 HTTP 报文

用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。

HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。

在这里插入图片描述

3.2 请求报文及响应报文的结构

我们来看一下请求报文和响应报文的结构,请求报文(上)和响应报文(下):

在这里插入图片描述

请求报文和响应报文的首部内容由以下数据组成:

  • 请求行

    包含用于请求的方法,请求 URI 和 HTTP 版本。

  • 状态行

    包含表明响应结果的状态码,原因短语和 HTTP 版本。

  • 首部字段

    包含表示请求和响应的各种条件和属性的各类首部。一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。

  • 其他

    可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等)。

请求报文(上)和响应报文(下)的实例:

在这里插入图片描述

3.3 编码提升传输速率

HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多的 CPU 等资源。

3.3.1 报文主体和实体主体的差异

  • 报文(message)

    是 HTTP 通信中的基本单位,由 8 位组字节流(octet sequence,其中 octet 为 8 个比特)组成,通过 HTTP 通信传输。

  • 实体(entity)

    作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

HTTP 报文的主体用于传输请求或响应的实体主体。

通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

报文和实体这两个术语在之后会经常出现,请事先理解两者的差异。

3.3.2 压缩传输的内容编码

向待发送邮件内增加附件时,为了使邮件容量变小,我们会先用 ZIP 压缩文件之后再添加附件发送。HTTP 协议中有一种被称为内容编码的功能也能进行类似的操作。

内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。

在这里插入图片描述

常用的内容编码有以下几种:

  • gzip(GNU zip)
  • compress(UNIX 系统的标准压缩)
  • deflate(zlib)
  • identity(不进行编码)

3.3.3 分割发送的分块传输编码

在 HTTP 通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面。在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。

这种把实体主体分块的功能称为分块传输编码(Chunked Transfer Coding)。

在这里插入图片描述

分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记。

使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编码前的实体主体。

HTTP/1.1 中存在一种称为传输编码(Transfer Coding)的机制,它可以在通信时按某种编码方式传输,但只定义作用于分块传输编码中。

3.4 发送多种数据的多部分对象集合

在这里插入图片描述

发送邮件时,我们可以在邮件里写入文字并添加多份附件。这是因为采用了 MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)机制,它允许邮件处理文本、图片、视频等多个不同类型数据。例如,图片等二进制数据以 ASCII 码字符串编码的方式指明,就是利用 MIME 来描述标记数据类型。而在 MIME 扩展中会使用一种称为多部分对象集合(Multipart)的方法,来容纳多份不同类型的数据。

相应地,HTTP 协议中也采纳了多部分对象集合,发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。

多部分对象集合包含的对象如下。

  • multipart/form-data

    在 Web 表单文件上传时使用。

    在这里插入图片描述

  • multipart/byteranges

    状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时使用。

    在这里插入图片描述

在 HTTP 报文中使用多部分对象集合时,需要在首部字段里加上 Content-type。有关这个首部字段,我们稍后讲解。

3.5 获取部分内容的范围请求

以前,用户不能使用现在这种高速的带宽访问互联网,当时,下载一个尺寸稍大的图片或文件就已经很吃力了。如果下载过程中遇到网络中断的情况,那就必须重头开始。为了解决上述问题,需要一种可恢复的机制。所谓恢复是指能从之前下载中断处恢复下载。

要实现该功能需要指定下载的实体范围。像这样,指定范围发送的请求叫做范围请求(Range Request)。

对一份 10 000 字节大小的资源,如果使用范围请求,可以只请求 5001~10 000 字节内的资源。

在这里插入图片描述

执行范围请求时,会用到首部字段 Range 来指定资源的 byte 范围。 byte 范围的指定形式如下。

在这里插入图片描述

针对范围请求,响应会返回状态码为 206 Partial Content 的响应报文。另外,对于多重范围的范围请求,响应会在首部字段 Content-Type 标明 multipart/byteranges 后返回响应报文。

如果服务器端无法响应范围请求,则会返回状态码 200 OK 和完整的实体内容。

3.6 内容协商返回最合适的内容

同一个 Web 网站有可能存在着多份相同内容的页面。比如英语版和中文版的 Web 页面,它们内容上虽相同,但使用的语言却不同。

当浏览器的默认语言为英语或中文,访问相同 URI 的 Web 页面时,则会显示对应的英语版或中文版的 Web 页面。这样的机制称为内容协商(Content Negotiation)。

在这里插入图片描述

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。

包含在请求报文中的某些首部字段(如下)就是判断的基准。

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language

内容协商技术有以下 3 种类型:

  • 服务器驱动协商(Server-driven Negotiation)

    由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不一定能筛选出最优内容。

  • 客户端驱动协商(Agent-driven Negotiation)

    由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。还可以利用 JavaScript 脚本在 Web 页面上自动进行上述选择。比如按 OS 的类型或浏览器类型,自行切换成 PC 版页面或手机版页面。

  • 透明协商(Transparent Negotiation)

    是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法。

《图解HTTP》完整彩色版1 背景的同时也能了解当初制定HTTP的初衷,这样有助于我们更好地理解。1.2.1 为知识共享而规划 Web1989 年 3 月,互联网还 立即下载

相关推荐

Matlab信号处理——基于BP神经网络的调制信号分类与识别

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!对信号进行采样和处理,得到了一系列特征参数,包括幅度均值、频率峰值、频率平方均值以及相位标准差、修正后的相位标准差。

小嘤熊的博客 1308

(图解 HTTP)一篇文章带你深入了解 HTTP 协议

文章目录一、了解客户端和服务器通讯的过程 一、了解客户端和服务器通讯的过程 HTTP协议和TCP/IP协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。 在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。 有时候,按实际情况,两台计算机作为客户端和服务器端的角色有可能会互换。但就仅从一条通信路线来说,服务器端和客户端的角色是确定的,而用HTTP协议能够明确区分哪端是客户端,哪

南淮北安的博客 5749

STM32CubeMX定时器进阶玩法:用编码器模式实现电机转速测量(附避坑清单)

本文详细介绍了如何使用STM32CubeMX配置定时器的编码器模式实现电机转速测量,包括硬件连接、CubeMX配置关键步骤、转速计算算法及常见问题解决方案。特别针对工业控制和机器人开发中的高精度需求,提供了实用的避坑清单和优化技巧,帮助开发者高效完成项目。

joy55的博客 203

图解HTTP

图解HTTP

NRWHF的博客 3758

从RTL到GDSII:DC综合里那些没人告诉你的时钟约束冷知识(附真实工程示例)

本文深入探讨数字IC设计中DC综合阶段的时钟约束冷知识,包括无毛刺时钟切换、寄存器分频时钟约束、虚拟时钟应用等关键技巧。通过真实工程示例,揭示常见约束误区及解决方案,帮助工程师提升时序收敛效率。特别针对input_delay和output_delay在多时钟域场景下的设置陷阱提供实用指南。

weixin_29306317的博客 429

树莓派驱动步进电机

步进电机一般由电机、驱动器构成,树莓派连接驱动器控制电机。 一、接线 DIR+/- 用于控制方向,PUL+/- 用于控制转动; 正极DIR+ 和 PUL+ 接到GPIO口,两个负极接到GPIO口或地线均可,控制的时候不使用。 实验中,DIR+ 接35口,PUL+ 接38口。 树莓派4B GPIO口如图所示 远离树莓派USB的一侧 是 1、2、3号口 二、驱动 DIR控制方向,使用高电平或低电平控制; PUL控制转动,使用脉冲驱动。 三、代码 import RPi.GPI.

weixin_42337765的博客 1万+

图解HTTP+彩色版 pdf版学习(更新中)

当我们在网页浏览器(Web browser)的地址栏中输入 URL时,Web 页面是如何呈现的在浏览器地址栏输入URL之后,信息会被送往某处,然后从某处获得的回复,内容就会显示在Web页面上。Web 页面当然不能凭空显示出来。根据 Web 浏览器地址栏中指定的URL,Web 浏览器从 Web 服务器端获取文件资源(resource)等信息,从而显示出 Web 页面。

太阳照耀我走四方 6800

有限元之有限元空间的构造

主要介绍有限元的空间构造方法。

欢迎各位大佬光临“寒舍”!请多多指点,共同进步! 762

【笔记】【HTTP】《图解HTTP》第3章 HTTP报文内的HTTP信息

当浏览器的默认语言为英语或中文,访问相同 URI 的 Web 页面时, 则会显示对应的英语版或中文版的 Web 页面。使用场景:状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时。使用[多部分对象集合](# 2. 多部分对象集合)方法,来容纳多份不同类型的数据。客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。指明应用在实体内容上的编码格式,并保持实体信息原样压缩。以响应资源的语言、字符集、编码方式等作为判断的基准。及响应报文首部的结构。

Code for fun !!! 【博客主要为本人服务】 248

TC3XX - MCAL知识点(二十七):SENT Mcal配置及代码实战(单边半字节传输协议)

SENT协议只有一根线,异步传输!Sent协议的全称为Single Edge Nibble Trans .isson,单边半字节传输协议,是一种单线异步串行通信协议。Sent报文包含8个Nibble和一个校准位如图1所示,每一个Nibble数据被编码成PWM方式。设计这种协议的目的是用在与汽车ECU快速交互信息的传感器上,以此来取代低精确度的10bit AD和PWM。Sent是一种点对点的单方向从传感器到控制端的协议,控制器不需要同步信号。

梦想技术家 2271

基于Slim-Neck架构的YOLOv11轻量化特征融合方案(实现超轻量级与高精度的双重突破)

购买即可解锁800+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,每日更新。

m0_64661770的博客 250

《图解HTTP》读书笔记--第3章HTTP报文内的HTTP信息

记录知识,形成体系

阿正的梦工坊 657

am62x A53与R5F通信

AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。

鹰之翔 1358

《图解HTTP》第3章HTTP报文内的HTTP信息 读书笔记

  第三章:HTTP报文内的HTTP信息 1.HTTP通信过程就是从客户端发往服务器端的请求报文以及服务器端返回客户端的响应报文。 2.HTTP报文是字符串文本,用于HTTP协议信息交互。 3.HTTP报文结构:   一、报文首部;         ①、请求行(请求报文中):包含请求方法,请求URI,HTTP版本;或者状态行(响应报文中):包含HTTP版本,响应结果状态码,原因...

WWW54111392的博客 180

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

图解HTTP协议 第3章 HTTP报文内的HTTP信息学习笔记

3.1HTTP报文 用于HTTP协议交互的信息称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,相应端(服务器端)的叫做响应报文。HTTP报文本身是由多行(用CR+LF作换行符)数据构成的字符串文本。 HTTP报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。 CR+LF:CR(Carriage Return,回车符:16

Frank的技术小栈 792

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

图解HTTP-阅读笔记 第3章 HTTP报文内的HTTP信息

1、HTTP报文 用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,响应端(服务端)的叫做响应报文。 2、请求报文及响应报文的结构 数据组成: 请求行:包含用于请求的方法,请求URI和HTTP版本 状态行:包含表明响应结果的状态码,原因短语和HTTP版本 首部字段:包含表示请求和响应的各种条件和属性的各类首部(一般有4种首部,分别是:通用首部、请求首部、响...

weixin_33860147的博客 175

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

《图解HTTP》读书笔记(3)第3章HTTP报文内的HTTP信息(关键词:HTTP/)

第3章 HTTP报文内的HTTP信息3.1 HTTP报文用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。 HTTP报文本身是由多行(用 CR+LF 作换行符)数据构成的字符串文本。HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。报文首部:服务

Henry1991back的博客 295

【笔记】【HTTP】《图解HTTP》第2章 简单的HTTP协议

虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了[Cookie技术](# 2.8 使用Cookie的状态管理)。在两台计算机之间使用 HTTP 协议通信时, 在一条通信线路上必定有一端是客户端, 另一端则是服务器。在大量资源加载请求时,每次的请求都会造成无所谓的TCP连接建立和断开,【通信出现的问题】——每进行一次HTTP通信就要断开一次TCP连接。实现:建立1次TCP连接后进行多次请求和响应的交互。多个请求,而不需要一个接一个地等待响应了。,则保持TCP连接状态。来控制客户端的状态。

Code for fun !!! 【博客主要为本人服务】 587

《图解HTTP》--第3章 HTTP报文内的HTTP信息

摘要:《图解HTTP》第3章详解HTTP报文结构,将通信比作快递流程。报文由首部(标签)和主体(内容)组成,通过空行分隔。核心内容包括:1)请求/响应报文结构差异;2)内容编码(如gzip压缩)提升传输效率;3)分块传输编码处理大文件;4)multipart格式实现文件上传;5)范围请求支持断点续传;6)内容协商机制匹配最佳资源。实践部分演示了curl命令查看报文、模拟文件上传和断点下载。本章强调首部字段的元数据作用,区分内容编码与传输编码,并指出这些技术在API设计、文件传输等场景的关键应用。(149字)

lunziFly的博客 512

《图解HTTP》笔记:HTTP 报文内的 HTTP 信息

HTTP 通信过程包括从客户端发往服务器端的请求及从服务器端返回客户端的响应 3.1 HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文,它是由多行数据构成的字符串文本。 请求端(客户端)→ 请求报文 响应端(服务器端)→ 响应报文 HTTP 报文的结构 : 3.2 请求报文及响应报文的结构 请求报文: 响应报文:   请求行:包含用于请求的方...

每天进步一点点 256

《图解HTTP》读书笔记四:HTTP报文内的HTTP信息

HTTP通信过程包括从客户端发往服务端的请求及从服务器端返回客户端的响应。 用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫做请求报文,服务器端的叫做响应报文。HTTP报文本身是多行(CR+LF作换行符)数据构成的字符文本。 HTTP报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报...

caobaokang的专栏 601

《图解HTTP》学习笔记(三)-HTTP报文内的HTTP信息

1、HTTP报文用于HTTP协议交互的信息被称为HTTP报文,请求端的称之为请求报文,响应端的称之为响应报文。组成:HTTP报文本身是由多行(用CR+LF作换行符)数据结构构成的字符串文本,大致可以分为报文首部和报文主体两块。 请求报文和响应报文的首部内容由以下数据组成: 1)请求行:包含用于请求的方法,请求URI和HTTP版本2)状态行:包含表明响应结果的状态码,原因短语和HTTP版本3)首部

爱橙子的OK绷的专栏 2035

《图解HTTP》阅读笔记

《图解HTTP》

qz362228的博客 3207

《图解HTTP》笔记

图解HTTP [日]上野 宣 著 于均良 译 由于导入md格式会丢大量图片,我上传了pdf版本的。 文章目录图解HTTP第1章 了解web及网络基础1.1 使用http协议访问web1.2 HTTP的诞生1.3 网络基础TCP/IP1.4 与HTTP关系密切的协议:IP、TCP和DNS1.5 负责域名解析的DNS服务1.6 各种协议与http协议的关系1.7 URI和URL第2章 简单的H...

AlanRedsheep 1899
上一篇: 《图解 HTTP》笔记——第2章 简单的 HTTP 协议
下一篇: 《计算机网络》笔记——第3章 数据链路层
bm1998
博客等级 码龄9年 4214粉丝 287原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bm1998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值