HTTP的基本特性

HTTP的基本特性

  • HTTP是简单的
    虽然下一代HTTP/2协议将HTTP消息封装到了帧中,HTTP大体上还是被设计得简单易读。
    HTTP报文能够被人读懂,还允许简单测试,降低了门槛。
  • HT TP是可扩展的
    在HT TP/1.0中出现的HTTP headers让协议扩展变得非常容易。
  • HTTP是无状态,有会话的
    在同一个连接中,两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互。
  • HTTP和连接
    一个连接是由传输层来控制的,这从根本上不属于HTTP的范围。

HTTP能控制什么

以下是可以被HTTP控制的常见特性:

  • 缓存

  • 开放同源限制

  • 认证

    基本的认证功能可以直接通过HTTP提供,或用HTTP Cookies来设置指定的会话。

  • 代理和隧道
    通常情况下,服务器和/或客户端是处于内网的,对外网隐藏真实IP地址。因此HTTP请求就要通过代理越过这个网络屏障。

  • 会话

HTTP报文是什么

HTTP报文,又称为HTTP消息,是服务器和客户端之间交换数据的方式。有两种类型的消息:请求,
由客户端发送用来触发一个服务器上的动作;响应,来自服务器的应答。
HTTP消息由采用ASCI编码的多行文本构成。在HTTP/1.1及 早期版本中,这些消息通过连接公开地
发送。在HTTP/2中,为了优化和性能方面的改进,曾经可人工阅读的消息被分到多个HTTP帧中。

HTTP请求报文

请求报文由以下元素组成: 一个HTTP的method、要获取的资源的路径、HTTP协议版本号、为服
务端表达其他信息的可选头部headers以及对于一些像POST这样的方法。

HTTP的基本特性

HTTP响应报文

响应报文由以下元素组成: HTTP协议版本号、一个状态码、一个状态信息、HTTP headers以及包
含获取的资源body。

HTTP的基本特性

HTTP消息结构

HTTP请求消息和响应消息具有相似的结构,由以下部分组成:

  1. start line:一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总
    是单行的。
  2. HTTP headers: 一个可选的HTTP头集合指明请求或描述消息正文。
  3. empty line:一个空行指示所有关于请求的元数据已经发送完毕。
  4. body: 一个可选的包含请求相关数据的正文(比如HTML表单内容),或者响应相关的文档。正文
    的大小有起始行的HT TP头来指定。
    起始行和HT TP消息中的HTTP头统称为“请求头”,而其有效负载被称为“消息正文”

起始行

起始行(start-line) 包含三个元素:

  1. 请求方法:描述要执行的动作。例如GET表示要获取资源,POST表示向服务器推送数据。
  2. 请求地址:通常是一个URL,或者是协议、端口和域名的绝对路径。
  3. HTTP版本: 定义了剩余报文的结构,作为对期望的响应版本的指示符。
    GET /home.html HTTP/1.1

请求方法

HTTP协议定义了一组请求方法,以表明要对给定资源执行的操作,指示针对给定资源要执行的期望动作。

HTTP的基本特性

状态行

HTTP响应消息的起始行被称作状态行(status line),包含以下信息:
1.协议版本: 通常为HTTP/1.1。.
2.状态码: 表明请求是成功或失败。常见的状态码是200, 404,或302。
3.状态文本: 一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们理解该HTTP消息。
HTTP/1.1 200 OK

信息响应

HTTP的基本特性

成功响应

HTTP的基本特性

重定向

HTTP的基本特性

客户端响应

HTTP的基本特性

服务端响应

HTTP的基本特性

请求头

请求头允许客户端向服务器端传递附加信息。请求头由名称(不区分大小写)后跟一个冒号“:”,冒
号后跟具体的值(不带换行符)组成。
根据不同上下文,可将请求头分为:

  1. 通用头:同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。
  2. 请求头: 包含更多有关要获取的资源或客户端本身信息的消息头。
  3. 实体头: 包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIIME类型。

HTTP的基本特性

HTTP的基本特性

请求主体

请求消息的最后-部分是请求主体。

  • 不是所有的请求都需要请求主体:例如获取资源的请求GET、HEAD、DEL ETE和OPTIONS,

    通常它们不需要请求主体。

  • 有些请求将数据发送到服务器以便更新数据:常见的的情况是POST请求(包含HTML表单数据)。

    请求主体大致可分为两类:

  1. 单一资源主体:由一个单文件组成。该类型请求主体由两个header定义: Content-Type和
    Content-Length。
    2.多资源主体: 由多部分请求主体组成,每一部分包含不同的信息位。通常是和HTML表单连系在一起。

响应头

响应头允许服务器端向客户端传递附加信息。响应头由名称(不区分大小写)后跟一个冒号“:”,冒
号后跟具体的值(不带换行符)组成。
根据不同上下文,可将响应头分为:

  1. 通用头:同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。
  2. 响应头:包含有关响应的补充信息,如其位置或服务器本身(名称和版本等)的消息头。
  3. 实体头:包含有关实体主体的更多信息,比如主体长(Content-L ength)度或其MIIME类型。

HTTP的基本特性
HTTP的基本特性

响应主体

响应消息的最后一部分 是响应主体。不是所有的响应都需要响应主体:例如具有状态码
(如201或204)的响应,通常不会有响应主体。
响应主体大致可分为两类:

  1. 单一资源主体:由已知长度的单个文件组成。该类型响应主体由两个header定义: Content-Type和Content-Length。
  2. 单一资源主体:由未知长度的单个文件组成,通过将Transfer-Encoding设置为chu Jnked来chunks编码。
  3. 多资源主体: 由多部分响应主体组成,每部分包含不同的信息段。但这是比较少见的。

MIME类型

MIME类型全称为Mu Jtipu Jrpose Internet Mail Extensions,被译为多用途Internet邮件扩展类型,
是一种标准化的方式来表示文档的性质和格式。

浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正
确的MIME类型附加到响应对象的头部是非常重要的。

HTTP的基本特性

HTTP/2.0

HT TP/1.x报文有一些性能上的缺点:

  • 消息头不像消息主体一样会被压缩。
  • 两个报文之间的header通常非常相似,但它们仍然在连接中重复传输。
  • 无法复用。当在同一个服务器打开几个连接时,TCP热连接比冷连接更加有效。

HTTP/2.O引入了一个额外的步骤,它将HTTP/1.x消息分成帧并嵌人到流(stream)中。

.0

HT TP/1.x报文有一些性能上的缺点:

  • 消息头不像消息主体一样会被压缩。
  • 两个报文之间的header通常非常相似,但它们仍然在连接中重复传输。
  • 无法复用。当在同一个服务器打开几个连接时,TCP热连接比冷连接更加有效。

HTTP/2.O引入了一个额外的步骤,它将HTTP/1.x消息分成帧并嵌人到流(stream)中。