简单的HTTP协议

2018-10-13  本文已影响0人  JarvanZ

HTTP是不保存状态的协议

  HTTP是一种无状态协议,自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
  这是为了更快的处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单。
  HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Cookie技术。

请求URI定位资源

  HTTP协议使用URI定位互联网上的资源。正式因为URI的特定功能,在互联网上任意位置的资源都能访问到。

当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内。指定请求的URI的方式有很多种: image.png
  除此之外,如果不是访问特定资源而是对服务器本身发起请求,可以用一个*来代替请求URI。

告知服务器意图的HTTP方法

持久连接节省通信量

  HTTP协议的初始版本中,没进行一次HTTP通信就要断开一次TCP连接。 image.png
持久连接
  为解决上述TCP连接的问题,HTTP/1.1和一部分的HTTP/1.0想出了持久连接(HTTP Persistent Connections,也称为HTTP keep-alive或HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。 image.png

  持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。
  在HTTP/1.1中,所有的连接默认都是持久连接的,但在HTTP/1.0中还未标准化。

管线化

  持久连接使得多数请求以管线化方式发送成为可能。管线化技术出现后,不用等待响应也可以直接发送下一个请求。这样可以做到同时并行发送多个请求,而不需要一个接一个地等待响应了。

使用Cookie的状态管理

  Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
  Cookie会根据从服务器发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

  服务器端发现客户端发送过来的Cookie后,回去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。 image.png
上一篇下一篇

猜你喜欢

热点阅读