【HTTP图解】3-HTTP报文内的HTTP信息

HTTP报文

HTTP报文大致可分为报文首部报文主体两块,以空行分割。

image-20200723170135625

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

image-20200723170242729

image-20200723170506447

编码提升传输速率

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

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

image-20200723171736682

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

都是抽象的概念,没必要扣那么细,会抓包分析就可以了

压缩传输的内容编码

类似ZIP压缩文件。常用的内容编码有以下几种:

  • gzip
  • compress
  • deflate
  • identity(不进行编码)

分割发送的分块传输编码

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

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

image-20200723172419654

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

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

邮件中含有文字还有各种各样的附件,HTTP采纳了多部分对象集合,发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。

在HTTP报文中使用多部分对象集合时,需要在首部字段加上Content-type。多部分对象集合的每个部分类型中,都可以含有首部字段。

获取部分内容的范围请求

在下载中断处恢复下载处恢复下载,要实现该功能需要指定下载的实体范围。image-20200723173214706

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

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

同一个Web页面有可能存在着多份相同的页面。

当浏览器的默认语言是中文或者英文的时候,访问同一个页面,显示对应语言的版本,这种机制称为内容协商(Content Negotiation)。

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

请求报文中的某些首部字段就是判断的基准:

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

内容协商技术有以下3中类型。

  1. 服务器驱动协商(Server-driven Negotiation):服务器根据客户端发送的请求的首部字段,自动处理,返回响应的内容。
  2. 客户端驱动协商(Agent-driven Negotiation):浏览器手动选择
  3. 透明协商(Transparent Negotiation):客户端和服务器端各自进行内容协商。
posted @ 2020-07-23 17:42  zjy4fun  阅读(174)  评论(0编辑  收藏  举报