《图解HTTP》整理(2)

第2章 简单的HTTP协议

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

请求访问文本或图像等资源的一端称为客户端
提供资源响应的一端称为服务器端。

在两台计算机之间使用 HTTP 协议通信时,在一条通信线路上必定有
一端是客户端,另一端则是服务器端。
按实际情况,两台计算机作为客户端和服务器端的角色有可能会互换。但就仅从一条通信路线来说,服务器端和客户端的角色是确定的,而用 HTTP 协议能够明确区分哪端是客户端,哪端是服务器端。

2.2 通过请求和响应的交换达成通信

HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

请求报文的构成
《图解HTTP》整理(2)

响应报文的构成
《图解HTTP》整理(2)

2.3 HTTP是不保存状态的协议

HTTP 是一种不保存状态,即无状态(stateless)协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。

HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

2.4 请求URI定位资源

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

  • GET 获取资源
  • POST 传输实体主体
  • PUT 传输文件
  • HEAD 获得报文首部
    HEAD 方法和 GET 方法一样,只是不返回报文主体部分。
    用于确认URI 的有效性及资源更新的日期时间等。
  • DELETE 删除文件
  • TRACE 追踪路径(不常用)
  • CONNECT 要求用隧道协议连接代理

2.6 使用方法下达命令

2.7 持久连接节省通信量

2.7.1 持久连接

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

2.7.2 管线化

不用等待响应亦可直接发送下一个请求。这样就能够做到同时并行发送多个请求了。

2.8 使用Cookie 的状态管理

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

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
《图解HTTP》整理(2)
《图解HTTP》整理(2)
《图解HTTP》整理(2)