HTTP协议学习之HTTP报文内的HTTP信息




本文图片均来自书本《图解HTTP》

HTTP报文


用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。
HTTP报文分为报文首部和报文主体。
在这里插入图片描述



请求报文和响应报文的结构


在这里插入图片描述

其他里面可能包含HTTP未定义的首部(Cookie等)
在这里插入图片描述



编码提升传输速率


HTTP传输时可以通过编码来提升传输速率,但是也会消耗CPU资源。
报文由8bit组成,通过HTTP通信传输,实体是传输请求和响应数据的补充项,由实体首部和实体主体构成
HTTP报文主体用于传输请求或响应的实体主体,一般两者等同,编码时改变了实体主体才产生差异
内容编码

服务器端将内容应用指明的编码格式压缩发给客户端,客户端吧压缩的实体信息复原。
分割发送的分块传输编码

服务器未发送完实体资源浏览器无法显示请求页面,通过把数据分割,让浏览器逐步显示,把实体主体分块编码传输。
服务器分割后分块编码发送,每一块会用16进制标记大小,最后一块用0标记,客户端将解码其合起来复原。



发送多种数据


HTTP发送一份报文可能包含多种数据格式(图片、文本、视频等),这是需要多部分对象集合
HTTP使用多部分对象集合需要在首部字段加上 Contenr-type
Contenr-type字段的内容可以为:
multipart/form-data 在 Web 表单文件上传时使用。
multipart/byteranges 状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时使用。
在这里插入图片描述



获取部分内容


范围请求是指对于一份数据或资源,获取指定部分的数据和资源(列如10000字节的资源,只请求5001-10000字节内的资源)
执行指定范围的时候会用到首部字段Range来指定byte范围
5001-10000字节:Range:bytes=5001-10000
5001字节之后全部的:Range:bytes=5001-
多重范围:Range:bytes=0-3000,5001,10000



返回最合适的内容


内容协商机制就是为了提供给客户端最合适的资源,返回最合适的内容,内容协商以语言、字符集、编码方式等作为判断准则。
服务器驱动协商(Server-driven Negotiation)由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理。
客户端驱动协商(Agent-driven Negotiation)由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。利用 JavaScript 脚本在 Web 页面上自动进行选择。
透明协商(Transparent Negotiation)是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值