2.1 HTTP协议用于客户端和服务器端之间的通信

HTTP协议能够明确区分哪端是客户端,哪段是服务器端。

2.2 通过请求和响应的交换

image.png

2.3 HTTP是不保存状态的协议

HTTP是一种不保存状态,即无状态协议。HTTP对于发送过的请求或响应都不做持久化处理。

使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息

虽然HTTP是无状态协议,但是为了实现期望的保持状态功能(如:网站需要保存用户登录状态,以便用户不用每次访问都要登录),引入了Cookie技术,可以管理状态。

2.4 请求URI定位资源

HTTP协议使用URI定位互联网上的资源:image.png

2.5 告知服务器意图的HTTP方法

GET:获取资源

GET方法用于请求访问已被URI识别的资源。
image.png
image.png

POST:传输实体主体

虽然GET方法也可以传输实体的主体,但是一般不用GET方法传输,而是用POST方法。
image.png

PUT:传输文件

PUT方法用来传输文件:要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。image.png

HEAD:获得报文首部

和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间

DELETE:删除文件

DELETE方法用于删除文件,按照请求URI删除指定的资源。image.png

OPTIONS:询问支持的方法

查询针对请求URI指定的资源支持的方法
image.png

TRACE:追寻路径

让Web服务器端将之前的请求通信环回给客户端。

发送请求时,在Max-Forwards首部字段中填入数值,没经过一个服务器端就将该数字减1,当数值刚好减到0时,就停止继续传输,最后接收到请求的服务器端则返回状态码200 OK的响应。

CONNECT:要求用隧道协议连接代理

要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。

2.6 使用方法下达命令

向请求URI指定的资源发送请求报文时,采用称为方法的命令。image.png

2.7 持久连接节省通信量

HTTP协议的初始版本中,每进行一次HTTP通信,就需要断开一次TCP连接。但是当一个网页内包含多个图片或者其他资源的的时候,每次请求就会造成无谓的TCP连接建立和断开:
image.png

2.7.1 持久连接

持久连接的特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态。

减少了TCP连接的重复建立和断开造成的额外开销,减轻了服务器端的负载

在HTTP/1.1中,所有连接默认都是持久连接。image.png

2.7.2 管线化(pipelining)

持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前必须等待响应后才能发送下一个请求。管线化技术可以让多个请求并行发送,而不用一个一个等待响应。image.png

2.8 使用Cookie的状态管理

Cookie 技术通过在请求和响应报文中写入 Cookie 信息控制客户端状态

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息通知客户端保存
Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出
去。

服务器端收到客户端发送过来的 Cookie 后,会去检查究竟是从哪个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

image.png

  • 第二次以后(存有 Cookie 信息状态)的请求

image.png
上述两图的具体HTTP请求报文和响应报文如下:
image.png