HTTP数据流

典型HTTP会话

在像 HTTP 这样的Client-Server(客户端-服务器)协议中,会话分为三个阶段:

  • 1.客户端建立一条 TCP 连接(如果传输层不是 TCP,也可以是其他适合的连接)。
  • 2.客户端发送请求并等待应答。
  • 3.服务器处理请求并送回应答,回应包括一个状态码和对应的数据。

从 HTTP/1.1 开始,连接在完成第三阶段后不再关闭,客户端可以再次发起新的请求。这意味着第二步和第三步可以连续进行数次。

(1)建立连接

通过TCP的三次握手进行连接;

(2)客户端发送请求

连接建立完成后,客户端就可以发送请求。典型的请求包括三部分:

1.第一行包括请求方法及请求参数:
文档路径,不包括协议和域名的绝对路径 URL

2.使用的 HTTP 协议版本
接下来的行每一行都表示一个 HTTP 首部,为服务器提供关于所需数据的信息(例如语言,或 MIME 类型),或是一些改变请求行为的数据(例如当数据已经被缓存,就不再应答)。这些 HTTP 首部组成以一个空行结束的一个块。

3.最后一块是可选数据块,包含更多数据,主要被 POST 方法所使用。

屏幕快照 2018-05-16 20.28.28.png

注意最后的空行,它把首部与数据块分隔开。由于在 HTTP 首部中没有 Content-Length,数据块是空的,所以服务器可以在收到代表首部结束的空行后就开始处理请求。

(3)服务器响应结构

1.第一行是 状态行
包括使用的 HTTP 协议版本,状态码和一个状态描述(可读描述文本)。

2.接下来每一行都表示一个 HTTP 首部

为客户端提供关于所发送数据的一些信息(如数据大小,使用的压缩算法,缓存指示)。与客户端请求的头部块类似,这些 HTTP 首部组成一个块,并以一个空行结束。

3.最后一块是数据块,包含了响应的数据 (如果有的话)。

屏幕快照 2018-05-16 20.33.58.png

你可能感兴趣的:(HTTP数据流)