报文组成部分
请求报文:
请求方法,请求url,协议版本,首部字段(可选),请求内容实体
响应报文:
协议版本,状态码,解释状态码的原因短语,响应首部字段(可选),响应实体
HTTP是无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理
持久连接节省通信量
HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接,当浏览器请求一个包含多个资源的HTML页面的时候,也会请求该HTML页面里包含的其他资源,因此,每次请求就会造成无谓的TCP连接建立和断开,增加通信量的开销
为解决上述TCP连接的问题,HTTP/1.1和一部分的HTTP/1.0想出了持久连接的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态
持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载
管线化:
从前发送请求需收到响应后才能发送下一个请求,管线化技术出现后,不必收到响应也能发送下一个请求,这样就可以做到同时发送多个请求,而不需要一个接一个等待响应
使用Cookie的状态管理
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态:
Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie
下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去
服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息