HTTP协议的学习(二) HTTP协议的基本概念
本文总结自《图解HTTP》
一、HTTP协议的简单介绍
(1)HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。
注意: 应用 HTTP 协议时, 必定是一端担任客户端角色, 另一端担任服务器端角色,且请求必定由客户端发出, 而服务器端回复响应
HTTP 协议规定, 请求从客户端发出, 最后服务器端响应该请求并返回。也就是说先从客户端开始建立通信的, 服务器端在没有接收到请求之前不会发送响应。
(2)请求报文是由请求方法、 请求 URI、 协议版本、 可选的请求首部字段和内容实体构成的
接收到请求的服务器, 会将请求内容的处理结果以响应的形式返回。
其中, HTTP/1.1 表示服务器对应的 HTTP 版本, 200 OK 表示请求的处理结果的状态码和原因短语, 下一行显示了创建响应的日期时间, 是首部字段 内的一个属性。
响应报文基本上由协议版本、 状态码(表示请求成功或失败的数字代码) 、 用以解释状态码的原因短语、 可选的响应首部字段以及实体主体构成
(3) 为了更快地处理大量事务, 确保协议的可伸缩性,HTTP 被设计为一种无状态(stateless) 协议, HTTP 协议自身不对请求和响应之间的通信状态进行保存。 HTTP/1.1 虽然是无状态协议, 但为了实现期望的保持状态功能, 于是引入了 Cookie 技术。
(4) HTTP 协议使用 URI 定位互联网上的资源。 当客户端请求访问资源而发送请求时, URI 需要将作为请求报文中的请求 URI 包含在内。
注意:如果不是访问特定资源而是对服务器本身发起请求, 可以用一个 * 来代替请求 URI。
(5)HTTP协议中使用的方法
GET : 获取资源
GET 方法用来请求访问已被 URI 识别的资源。 指定的资源经服务器端解析后返回响应内容。
POST: 传输实体主体
一般不用 GET 方法传输实体的主体, 而是用 POST 方法。 POST 的主要目的并不是获取响应的主体内容。
PUT: 传输文件
PUT 方法用来传输文件。 就像 FTP 协议的文件上传一样, 要求在请求报文的主体中包含文件内容, 然后保存到请求 URI 指定的位置
HEAD: 获得报文首部
HEAD 方法和 GET 方法一样, 只是不返回报文主体部分。 用于确认URI 的有效性及资源更新的日期时间等
DELETE: 删除文件
DELETE 方法用来删除文件。 DELETE 方法按请求 URI 删除指定的资源。
OPTIONS: 询问支持的方法
OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。
TRACE: 追踪路径
TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法
(6) 向请求 URI 指定的资源发送请求报文时, 采用称为方法的命令
(7) HTTP持久连接
持久连接的特点是, 只要任意一端没有明确提出断开连接, 则保持 TCP 连接状态。
持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销, 减轻了服务器端的负载。 在 HTTP/1.1 中, 所有的连接默认都是持久连接.
持久连接使得多数请求以管线化(pipelining) 方式发送成为可能。 从前发送请求后需等待并收到响应, 才能发送下一个请求。 管线化技术出现后, 不用等待响应亦可直接发送下一个请求。 这样就能够做到同时并行发送多个请求, 而不需要一个接一个地等待响应了。
(8) Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息, 通知客户端保存 Cookie。 当下次客户端再往该服务器发送请求时, 客户端会自动在请求报文中加入 Cookie 值后发送出去。 服务器端发现客户端发送过来的 Cookie 后, 会去检查究竟是从哪一个客户端发来的连接请求, 然后对比服务器上的记录, 最后得到之前的状态信息