第3章 HTTP报文信息

Qt|大小端数据转换 我的机器cpu,如果不采取任何处理,这里输出的确实是小端数据,如果是大端那么就会输出对应的“1234567843218756”。如果上文中举例的协议定的就是小端数据传输那么就是这样写,无需做任何处理。后面打算写Qt关于网络编程的博客,网络编程就绕不开字节流数据传输,字节流数据的传输一般是根据协议来定义对应的报文该如何组包,那这就必然牵扯到了大端字节序和小端字节序的问题了。回到关于大小端的问题,代码里面采用的是结构体转QByteArray,这样就牵扯到了依靠系统自己的大小端来处理了,代码不灵活。 阅读详情

1. HTTP报文结构

问:什么是HTTP报文?

答:使用HTTP协议进行交互的信息被称为HTTP报文

客户端发送的叫 请求报文(request);服务器发送的叫 响应报文(response)


问:HTTP报文长什么样?

答:HTTP报文其实就是多行字符串文本(由CR+LF作为换行符)

HTTP报文大致可以分为 报文首部 和 报文主体 两块,报文主体 非必要

报文首部
空行(CR+LF)
报文主体

问:请求报文与响应报文的首部结构一样吗?

答:你看:

请求报文首部:

请求行:GET /dir/index.html HTTP/1.1 (method + request-URI + HTTP version)

+首部字段:请求首部字段 + 通用首部字段 + 实体首部字段

+其他:HTTP RFC中未定义的首部(如Cookie等)


响应报文首部:

状态行:HTTP/1.1 200 OK (HTTP version + status code + reason-phrase)

+首部字段:响应首部字段 + 通用首部字段 + 实体首部字段

+其他:HTTP RFC中未定义的首部(如Cookie等)


2. HTTP内容编码

问:为什么需要编码啊?

答:HTTP是可以将数据原样传输的,但编码/压缩可以提升传输速率,这样能处理的请求不就更多了吗?但是,编码是需要计算机来完成的,因此会消耗更过的CPU资源。


问:那编码/压缩的是HTTP报文的那一部分呢?

答:编码的是实体主体部分(什么是实体主体部分?)

报文主体与实体主体的差异:

just as what I said above: HTTP报文 = 报文首部 + 报文主体

what is 实体? 实体作为请求/响应的有效载荷数据(Payload)被传输

实体 = 实体首部 + 实体主体


问:那什么是HTTP内容编码?

答:HTTP内容编码是HTTP协议中一种编码功能

       它指明应用在实体主体上的编码格式,并保持实体信息的原样压缩

       内容编码后的实体由客户端接受并负责解码

追问:那HTTP内容编码支持哪些编码格式啊?

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

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

3. 分块传输编码

问:为什么需要分块传输?

答:在HTTP通信过程中,请求的编码实体资源在未全部传输完成之前,浏览器无法显示请求页面

       在传输大容量数据时,通过把数据分隔成多块,浏览器能够逐步显示页面

这种把实体主体分块的功能,就被称作:分块传输编码(Chunked Transfer Coding)


问:HTTP是怎样实现分块传输的呢?

答:分块传输编码会将实体主体分割成多个部分(块),每块都会使用十六进制来标记其大小

       实体的最后一块会使用"0(CR+LF)"来标记

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


4. 多部分对象集合

发送的一份报文主体内可含有多类型实体,通常是在图片或者文本文件等上传时使用

多部分对象集合(Multipart)包含的对象如下:

mutipart/form-data:在web表单文件上传时使用

multipart/byteranges:响应报文(206部分内容)包含多个范围内容时使用

5. 范围请求

问:什么是范围请求?

答:指定请求数据范围的请求叫做范围请求


问:为什么需要范围请求?/范围请求的应用场景

答:断点续传 恢复下载


问:怎样做到范围请求?

答:你看

使用首部字段Range来指定资源的byte范围

请求5001-10000字节

Range: bytes=5001-10000

请求5001之后全部字节

Range: bytes=5001-

请求多重范围

Range: bytes=0-1000, 5000-8000

        针对范围请求,服务器会返回状态码为206 Partial Content的响应报文

        对于多重范围的范围请求,响应会在首部字段Content-Type字段标明multipart/byteranges


6. 内容协商

问:什么是内容协商?What is Content Negotiation?

答:  内容协商机制是指:客户端和服务端就响应的资源内容进行交涉,服务端提供给客户端最合适的资源

       内容协商会以语言、字符集、编码方式等为基准判断响应的资源

举个栗子:服务器中同一个网页有多种语言版本,浏览器可以根据自己的默认语言与服务器协商返回对应网页版本


问:判断基准是首部的哪些字段呢?

答:Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Language


问:内容协商有几种实现方式?

答:3种

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

        服务器以请求的首部字段为参考自动处理,取决于浏览器返送的信息,用户无操作权

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

        给用户提供可选列表,或者使用Javascritp脚本在页面自动选择

  • 透明协商(Transparent Negotiation)

        上述两者的结合体,是由服务器端和客户端各自进行内容协商的一种办法(我也没理解)

Gradient Accumulation 梯度累加/梯度累积 (Pytorch) 我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响。一定条件下,batch_size设置的越大,模型就会越稳定。batch_size的值通常设置在 8-32 之间,但是当我们做一些计算量需求大的任务(例如语义分割、GAN等)或者输入图片尺寸太大的时候,我们的batch size往往只能设置为2或者4,否则就会出现 “CUDA OUT OF MEMORY” 的不可抗力报错。 那么如何在有限的计算资源的条件下,训练时采用更大的batch size... 阅读详情

相关推荐

ISP-全局色调映射(GTM)算法简单实现

色调映射算法,色彩空间转换LAB

notgoodenouf的博客 2238

C/C++ Qt 常用数据结构

Qt是一个跨平台的图形化类库,它在数据结构和算法方面常用的模块对C++标准模板库(STL)进行了二次封装,以提供更加便捷和直观的使用方式。这些常用的数据结构和算法包括QString、QList、QLinkedList、QVector、QStack、QQueue、QMap、QMultiMap、QHash、QMultiHash和QSet等。

微软技术分享 9191

寒假实训笔记day01——认识M4单片机之STM32F405RGT6

认识M4单片机之STM32F405RGT6(含义、规格、参数)

weixin_47200070的博客 8550

java boundary_HTTP多部分(POST)请求中的boundary参数是什么?

小编典典引用RFC 1341的7.2.1节,我认为是标头boundary参数的相关位Content-Type(对于MIME):“ multipart”的所有子类型都具有相同的语法…多部分实体的Content-Type字段需要一个参数“边界”,该参数用于指定封装边界。封装边界定义为一行,该行完全由两个连字符(“-”,十进制代码45)组成,后跟来自Content-Type标头字段的边界参数值。然后澄清...

weixin_34348050的博客 5844

【maxENT】从数据到地图:R语言实现最大熵物种分布建模全流程解析

本文详细解析了如何使用R语言实现最大熵模型(MaxEnt)进行物种分布建模的全流程。从数据准备、环境变量处理到模型训练与参数调优,再到模型评估与结果可视化,提供了实用的代码示例和避坑指南。特别适合生态学研究者利用最大熵模型处理物种分布数据,提升研究效率。

weixin_27244795的博客 214

LabVIEW实战:基于DAQmx的实时正弦波生成、采集与波形图动态显示

本文详细介绍了如何使用LabVIEW和DAQmx驱动实现实时正弦波的生成、采集与动态显示。通过USB-6008数据采集卡,结合队列缓冲机制和动态波形图显示技术,构建了一个完整的信号处理系统。文章包含硬件连接、软件配置、任务设置及常见问题排查,适合LabVIEW初学者和硬件控制开发者参考。

weixin_30872337的博客 124

java 响应http请求_[Java教程]Http请求与响应

[Java教程]Http请求与响应0 2015-11-13 14:00:03Http协议对浏览器发出的Request格式以及对Web服务器发出的Response格式有具体的规定。请求部分由三部分组成:Requset line:请求行,位于第一行Request headers:请求消息头,从第二行开始至第一个空行结束Requestbody:请求正文,从第一个空行之后的都是正文响应部分...

weixin_35079144的博客 651

机器人视觉仿真软件:PCL (Point Cloud Library)_(8).点云分割技术

点云分割技术在机器人视觉处理中起着至关重要的作用,通过不同的分割方法可以有效地将点云数据中的不同物体或区域分离出来。PCL提供了丰富的分割算法,包括基于平面的分割、基于聚类的分割、基于模型的分割和基于条件的分割等。每种方法都有其适用的场景和优缺点,选择合适的方法可以显著提高点云处理的效率和准确性。希望本节的内容能够帮助读者更好地理解和应用点云分割技术。

kkchenjj的博客 819

Java工具类:HttpUtil(HttpClient实现http的请求,获取响应)

(1)maven 依赖: <!-- HttpClinet 核心包 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5....

小白一个 2万+

YoloV8改进策略:主干网络篇|MobileNetV4主干替换YoloV8的BackBone(独家原创)

今年,轻量级王者MobileNetV4闪亮登场!在我们这篇文章里,我们把MobileNetV4加入到了YoloV8中,替换原有的BackBone。哈哈,你猜怎么着?效果超赞!文章里详细记录了改进过程,给那些正在为创新点子发愁的小伙伴们提供了满满的灵感。嘿,想要发表关于轻量级改进的论文?这篇文章绝对是你的首选参考!

m0_47867638的博客 3188

30、航空公司调度问题的数学模型解析

本文详细解析了航空公司调度问题中的核心数学模型,包括航班时刻表生成、机组人员排班和飞机调度的建模方法与求解技术。通过定义变量、约束条件及目标函数,结合线性规划、整数规划等方法,帮助航空公司实现高效调度。文章还探讨了模型的优化策略、简化方法以及实际应用案例,为提升航空运营效率提供了理论支持和实践指导。

beer8的博客 258

第3章——HTTP报文内的HTTP信息

​ 用于HTTP协议交互的信息被称为HTTP报文,分为请求报文和响应报文。分为Head,Body请求行:包含用于请求的方法,请求URI和HTTP版本。状态行:包含表明响应结果的状态码,原因短语和HTTP版本。首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。其他:可能包含HTTP的RFC里未定义的首部(Cookie等)

sjmbahczdszjj666的博客 1220

Triton server的部署、构建、backend插件机制代码梳理、模型加载、自定义C++backend流程

Triton inference server的部署、构建、backend机制代码详细梳理、模型加载过程、自定义C++backend流程.

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 471

第 3 章 HTTP 报文内的 HTTP 信息

3.1 HTTP 报文 http报文 用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。HTTP 报文本身是由多行(用 CR+LF 作换行符)数据构成的字符串文本。 ...

chuokai1228的博客 170

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

第3章 HTTP 报文内的HTTP 信息

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

wokuxiao的博客 151

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

第 3 章 HTTP 报文内的 HTTP信息

比如英语版和中文版的 Web 页面,它们内容上虽相同,但使用的语言却不同。当浏览器的默认语言为英语或中文,访问相同 URI 的 Web 页面时,则会显示对应的英语版或中文版的 Web 页面。请求端(客户端)的HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。是 HTTP 通信中的基本单位,由 8 位组字节流(octet sequence,其中 octet 为 8 个比特)组成,通过 HTTP 通信传输。

weixin_73953279的博客 126

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

文章目录3.1 HTTP 报文3.2 请求报文及响应报文的结构3.3 编码提升传输速率3.3.1 报文主体和实体主体的差异3.3.2 压缩传输的内容编码3.3.3 分割发送的分块传输编码3.4 发送多种数据的多部分对象集合3.5 获取部分内容的范围请求3.6 内容协商返回最合适的内容 3.1 HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。 HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的

bm1998 509

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

1.HTTP报文 用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫做请求报文,响应端的HTTP报文叫做响应报文。 HTTP报文大致可分为报文首部和报文主体两块,两者由空行划分。通常,并不一定要有报文主体。 报文首部:服务器端或客户端需处理的请求或响应的内容及属性 报文主体:应被发送的数据 2. 请求报文及响应报文的结构 请求报文和响应报文的首部内容由一下数据组成: 请求行 包含用于请求的方法,请求的URI和HTTP版本。 状态行 包含表明响应...

qq_54780782的博客 1126

第3章HTTP报文内的HTTP信息

一、请求报文和响应报文的结构     二、编码提升传输效率   HTTP在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多的CPU等资源。   (1) 报文主体和实体主体的区别   报文 HTTP通信中的基础单位,由8位字节流组成,通过HTTP通信传输 ...

u011028179的专栏 281

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

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

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

第3章 HTTP报文内的HTTP信息

3.1 HTTP报文 3.2 请求报文及相应报文的结构 3.3 编码提升传输速率 3.3.1 报文主体和实际主体的差异 3.3.2 压缩传输的内容编码 3.3.3 分割发送的分块传输编码 3.4 发送多种数据的多部分对象集合 3.5 获取部分内容的范围请求 3.6 容协商返回最合适的内容 HTTP通信过程包括从客户端发往服务器端的请求以及从服务器端返回客户端的响应 3.1 HTTP报文 基于H...

像Storm一样飞 438

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

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

lunziFly的博客 512

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

记录知识,形成体系

阿正的梦工坊 657

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

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

WWW54111392的博客 180

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

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

Frank的技术小栈 792

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

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

weixin_33860147的博客 175
上一篇: 第2章 HTTP协议基础
下一篇: 第4章 HTTP状态码
zyan_cn
博客等级 码龄9年 4粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值