http

定义

概述

组件系统

  1. 客户端:user-agent

  2. web服务端

  3. 代理(proxies)

本质

  1. http是简单的

  2. http是可扩展的

  3. http是无状态,有会话的

  4. http连接

控制

  1. 缓存

  2. 开放同源限制

  3. 认证

  4. 代理和隧道

  5. 会话

当客户端想和服务端进行信息交互时(服务端指的是最终服务器,或者是一个中间代理商 ),过程表现为下面几步:

  1. 打开一个tcp连接

  2. 发送一个http报文

  3. 读取服务端返回的报文信息

  4. 关闭连接或为后续请求重用连接

报文

请求

类型

回应

发展

万维网的发明

http/0.9 - 单行协议

http/1.0 - 构建可扩展性

http/1.1 - 标准化的协议

超过15年的扩展

  1. http用于安全运输(ssl -> tls)

  2. http用于复杂应用

  3. 放松web的安全模型

http/2 - 更优异的表现

与http/1.1的不同:

  1. http2是二进制协议而不是文本协议。不再可读和无障碍的手动创建,改善的优化技术现在可被实施。

  2. 这是一个复用协议。并行的请求能在同一个链接中处理,移除了http/1.x中顺序和阻塞的约束。

  3. 压缩了headers。headers在一系列请求中常常是类似的,移除了重复和传输重复数据的成本。

  4. 允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求。

http消息

http消息是服务器和客户端之间交换数据的方式。

两种类型消息:

http请求和响应具有相似的结构:

  1. 一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。

  2. 一个可选的http头集合指明请求或描述消息正文。

  3. 一个空行指示所有关于请求的元数据已经发送完毕。

  4. 一个可选的包含请求相关数据的正文

http请求

起始行

http请求是由客户端发出的消息,用来使服务器执行动作。

  1. 一个http方法,描述要执行的动作。

  2. 请求目标,以请求的环境为特征,通常是一个url。

headers

形式:健值对

  1. general headers:适用于整个报文

  2. request headers:进一步定义,给定上下文,进行有条件的限制。

  3. entity headers:请求的body

body

http响应

状态行

响应的起始行被称为状态行,example: HTTP/1.1 404 Not Found, contains:

  1. the protocal version, usually http/1.1

  2. a status code, indicating success or failure of request. like: 200, 204, or 302

  3. a status text. a brief description of the status code to help a human understand the http message.

headers and body is just like request

内网

tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下

状态码

更详细的状态码

http-connection

in http/1.x, there are several models: short-lived connections, persistent connections, and http pipelining.

http-session

establishing a connection

In client-server protocols, it is client which establishes the connection.means initiating a connection in the underlying transport layer, usually this is TCP(the default port is 80).

sending a client request

once the connection is established, the user-agent can send the request(a user-agent is typically a web browser).A client request consists of text directives, separated by CRLF(回车换行)

第一行包括请求方法及请求参数:

structure of a server response

当收到用户代理发送的请求后,Web 服务器就会处理它,并最终送回一个响应。与客户端请求很类似,服务器响应由一系列文本指令组成, 并使用 CRLF 分隔,它们被划分为三个不同的块: