读书笔记_图解HTTP(二) 简单HTTP协议及HTTP报文内的

2019-05-24  本文已影响0人  我是李小米

读《图解HTTP》记录

上一篇 读书笔记_图解HTTP(一) Web及网络基础

HTTP方法

持久连接节省通信量

使用Cookie的状态管理

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务器端发送的响应报文内一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端自动会在请求报文中加入Cookie值后发送出去。
服务端发现客户端发过来的Cookie后,会去检查到底是从那个客户端发过来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。


Cookie技术1 Cookie技术2

HTTP请求报文和响应报如下
1、请求报文(没有Cookie信息的状态)

GET /reader/ HTTP/1.1
Host: hackr.jp *
首部字段内没有Cookie的相关信息

2、响应报文(服务器端生成Cookie信息)

HTTP/1.1 200 OK 
Date: Thu, 12 Jul 2012 07:12:20 GMT 
Server: Apache 
<Set-Cookie: sid=1342077140226724; path=/; expires=Wed, 10-Oct-12 07:12:20 GMT> 
Content-Type: text/plain; charset=UTF-8

3、请求报文(自动发送保存着的Cookie信息)

GET /image/ HTTP/1.1 
Host: hackr.jp 
Cookie: sid=1342077140226724

HTTP请求报文以及响应报文

Http报文结构 Http报文实例

编码提升传输速率

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

1、压缩传输的内容编码

HTTP 协议中有一种被称为内容编码的功能来完成压缩后传输的操作。
内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后由实体客户端接收并负责解码。

常用的内容编码有以下几种。

内容编码的原理

由服务器将要传输的内容进行压缩,然后传递给客户端,并且告诉客户端编码格式,由客户端接收后,再解压缩,拿到原来的内容。

2、分隔发送的分块传输编码

在Http通信过程中,请求的编码实体资源在尚未全部传输完成之前,浏览器无法显示请求页面。在传输大内容数据时,通过把数据分隔成多块,能过让浏览器逐步显示页面。
这种把实体主体分块的功能称为分块传输编码。

分块传输编码

分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六 进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标 记。
使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编 码前的实体主体。

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

在http协议中发送的一份报文主体内,可包含多类型实体(图片,文件等)。通常在图片或者文本文件上传时使用。多部分对象集合包含的对象如下:

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

关于范围内容的说明
在下载大文件过程中,网络中断,需要重头重新下载。则还是很需要一种可以恢复的机制,从断开出恢复下载。像这种,需要发送范围请求,只请求目标资源中的一部分。执行范围请求时,回用到首部字段Range来指定资源的byte范围。
byte范围的指定形式如下。

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

HTTP的响应状态码

状态码如200 OK,以3位数字和短语组成,第一位数字指定了响应类别。分为一下五种。

类别 原因短语
1xx Informational(信息性状态码) 接受的请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向状态码) 需要进行附加操作以完成请求
4xx Client Error(客户端错误代码) 服务器无法处理的请求
5xx Server Error(服务器错误状态码) 服务器处理请求出错

常用状态码

1XX

1xx表示临时性消息

2XX

2xx的响应结果表明请求被正常处理了。

3XX

3xx的响应结果表明浏览器需要执行某些特殊的处理以正确处理该请求。
就是重定向到某个其他的地址,比如

4XX 客户端错误

4XX 的响应结果表明客户端是发生错误的原因所在。

5XX 服务器错误

5XX 的响应结果表明服务器本身发生错误。

下一篇 读书笔记_图解HTTP(三) Web服务器以及HTTP首部

上一篇 下一篇

猜你喜欢

热点阅读