HTTP 知识量:10 - 42 - 186
HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。但随着技术的发展,现在的HTML页面可能需要包含图片、音频、视频等其他资源,通信的断开会显著增加通信量的开销。
为解决这一问题,HTTP/1.1采用了持久连接,即HTTP keep-alive或HTTP connection reuse的方法。持久连接的特点是只要有任意一端没有明确提出断开连接,则保持TCP连接状态。
在HTTP/1.1中所有的连接默认都是持久连接。
在持久连接的基础上,管线化可以进一步提高通信效率。以前发送请求后需要等待并收到响应后,才能发送下一个请求。管线化允许不用等待响应就可以直接发送下一个请求。这样就可以同时并行发送多个请求,不必一个接一个的等待响应了。
HTTP是一种不保存状态(无状态)的协议,对于发送过的请求或响应都不做持久化处理。
这样的设计可以减少服务器的CPU及内存的消耗,是为了更快的处理大量事务,确保协议的可伸缩性,特意将HTTP协议设计的如此简单。
随着Web的发展,有些业务需要通信保持状态,例如:应用购物网站系统时,不论页面如何跳转,总是需要追踪用户的行为,确保用户保持登录状态。为了实现保持状态的功能,引入了Cookie技术。
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。具体的:
Cookie会在服务器端发送的响应报文内添加名为Set-Cookie的首部字段信息,并通知客户端保存Cookie。
当客户端再次发送请求时,客户端会自动在请求报文中加入Cookie值再发送。
服务器端收到请求会通过Cookie值检查究竟是哪一个客户发送的请求,以此实现状态的保持。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6