HTTP通信过程包括从客户端发送请求到从服务器返回响应。
3.1 HTTP报文
用于HTTP协议的交互信息叫做http报文,分为报文首部和报文主体。报文首部分为请求报文首部和响应报文首部。HTTP协议大致可分为报文首报和报文主体。两者通过最先出现的空行(CR+LF)来划分。通常并不一定需要报文主体。
3.2 请求报文及响应报文的结构
请求报文首部
包含请求行、请求首部字段、通用首部字段、实体首部字段、其他。
请求行
包含请求的方法、请求uri、HTTP版本。
响应报文首部
包含状态行、响应首部、通用首部字段、实体首部字段、其他。
状态行
包含状态码、原因短语、HTTP版本。
其他
可能包含HTTP的RFC里未定义的首部(Cookie等)。
3.3 编码提升传输速率
HTTP在传输数据过程中对数据编码处理提升传输速率,能有效的处理大量的访问请求。但是编码要通过计算机完成,因此会消耗更多的CPU等资源。
3.3.1 报文主体和实体主体的差异
实体作为请求或响应中的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。
HTTP报文的主体用于传输请求或者响应的实体主体。
通常报文的主体等于实体主体,只有当传输中的数据进行编码操作时,实体主体的内容发生变化时,才导致了它和报文主体产生差异。
3.3.2 压缩传输的内容编码
我们传输文件的时候会通过压缩来缩小文件的容量。HTTP协议中也有一种被称为内容编码的功能也能进行类似的操作。
内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。
3.3.3 分割发送的分块传输编码
传输大容量数据的时,通过把数据分割成多块传输。(这边的数据也是一次性传输只不过可以分块逐步显示<个人理解,有误请指正>)
3.4 发送多种数据的多部分对象集合
发送邮件时,我们可以在邮件里写入文字并添加多份附件。这是因为采用了MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)机制,它允许邮件处理文本、图片、视频等多个不同类型的数据。