第三章>>HTTP报文内的保文信息

202 阅读4分钟

大纲

image.png

HTTP报文

分类

HTTP报文:用于HTTP协议交互的信息

请求报文:请求端(客户端)的HTTP报文

响应报文:响应端(服务器端)的HTTP报文

结构

image.png

报文可分为报文首部、空行(CR+LF)、报文主体,通常,不一定要有报文主体。

请求报文>>请求行:包含用于请求的方法,请求URI和HTTP版本

响应报文>>状态行:包含表明响应结果的状态码,原因短语和HTTP版本

首部字段:包含表示请求和响应的各种条件和属性的各类首部

首部字段分类:通用首部、请求首部、响应首部和实体首部

提升传输速率

报文主体和实体主体

报文:HTTP通信的基本单位,由8位组字节流组成,通过HTTP通信传输

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

HTTP报文的主体:用于创数请求或响应的实体主体

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

压缩传输的内容编码

概念:类似于邮件的发送,为了减少邮件容量,通常使用ZIP压缩文件后以附件的形式发送。这种方法在HTTP中称为内容编码

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

内容编码分类:gzip、compress、deflate、identity

image.png

分割发送的分块传输编码

原由:在HTTP通信过程中,请求的编码实体资源没有全部传输完成之前,浏览器无法显示请求页面。
传输编码
Chunked Transfer Coding
    主题实体分块功能:在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面
    

image.png

过程:
    分块传输编码:将实体主体分成多个部分。每一部分都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记
    
    使用分块传输编码的实体主体会由接受的客户端负责解码,恢复编码前的实体主体
 HTTP/1.1中存在的传输编码机制只定义作用于分块传输编码中

多种数据的多部份对象集合

MIME(多用途因特网邮件扩展):允许邮件处理文本、图片、视频等多个不同类型的数据
例子:图片等二进制数据以ASCII码字符串编码的方式指明,就是利用MIME来描述标记数据类型。
    而MIME扩展中会使用一种称为多部份对象集合的方法,来容纳多份不同类型的数据。

分类

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

multipart/byteranges:状态码206响应报文包含了多个范围的内容时使用

multipart/form-data

image.png

multipart/byteranges

image.png

image.png

在HTTP报文中使用多部分对象集合时,需要在首部字段里加上Content-type

获取部分内容的范围请求

原由:网络速度慢,下载大容量文件时遇到网络中断问题,需要重头开始
解决方案:需要一种客回复的机制。从之前下载中断处恢复下载
实现:指定下载的实体范围,使用Range来指定资源的byte范围
    从x到y
    Range:bytes = x - y
    从x之后
    Range:bytes = x -
    从一开始到x和y-z的多重范围
    Range:bytes = -x, y - z
    针对范围请求,响应会返回状态码为206Partial Content的响应报文。对于多重范围的范围请求,响应会在首部Content-Type标明multipart/byteranges后返回响应报文。
    如果服务器端无法响应范围请求,则会返回状态码200 OK和完整的实体内容

返回内容协商

 原由:同一个web网站存在多份相同内容的页面,例如英文版和中文版
 内容协商:当浏览器的默认语言为英语或中文,访问相同的URI的WEB页面则会显示相应的语言版本WEB页面
 内容协商机制:客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源,内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准
 判断的基准:包含在请求报文中某些首部字段
     Accept
     Accept-Charset
     Accept-Encoding
     Accept-Language
     Content-Language

类型

image.png