HTTP图解读书笔记(第三章 HTTP报文内的HTTP信息)

目的:了解HTTP通信响应和请求时怎么运作的

一、HTTP报文

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

HTTP报文大致可分为报文首部和报文主体(应被发送的数据),两者由最初出现的空行来划分,通常,并不一定要报文主体

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

 请求行:包含请求URL、请求方法、HTTP版本

状态行:状态码、原因短语、HTTP版本

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

一般有四种首部:请求首部、通用首部、响应首部、实体首部,可能包含HTTP法人RFC未定义的其他首部,例如cookie

三、编码提升传输速率

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

  •  报文

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

  • 实体  

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

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

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

2. 压缩传输的内容编码

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

常见的内容编码:

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

3. 分割发送的分块传输编码

分块传输编码:HTTP通信过程中,请求的编码实体资源尚未传输完时,浏览器无法显示请求页面,在传输大容量数据时,通过把数据分成若干小块,每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记。让浏览器逐步显示页面

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

多部分对象集合:容纳多分不同类型的数据

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

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

  • multipart/form-data

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

  • multipart/byteranges

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

在HTTP报文中使用多部分对象集合时需要在报文首部添加Content-type

五、获取部分内容的范围请求

恢复机制:从上次下载中断处开始下载。要实现恢复机制则需要制定下载实体的范围,想这样制定范围发送的请求叫范围请求

 

针对范围请求,响应码为206。对于多重范围的范围请求,响应会在首部字段 ContentType 标明 multipart/byteranges 后返回响应报文。如果服务器端无法响应范围请求,则会返回状态码 200 OK 和完整的实体内容。

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

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

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

  • Accept
  • Accept-Chars
  • Accept-Encoding
  • Accept-Language
  • Content-Language

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

  • 服务器驱动协商
  • 客户端驱动协商
  • 透明协商

       是服务器驱动和客户端驱动的结合体,

猜你喜欢

转载自blog.csdn.net/qq_37200686/article/details/85045142