HHTP协议一共有五大特点:1 支持客户/服务器模式 ;2 简单快速 ; 3 灵活 ; 4 无连接 ; 5 无状态 。
其中无状态是其最重要的特点之一,因此常说HTTP是一种无状态协议。
.
那么在这里我们主要说说HTTP的无连接和无状态。
HTTP协议产生于互联网,因此服务器需要处理同时面向全世界数十万、上百万客户端的网页访问,但每个客户端(即浏览
器)与服务器之间交换数据的间歇性较大(即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据
关联性很低,如果按照上面的方式则需要在服务器端开的进程和句柄数目都是不可接受的,大部分通道实际上会很空闲、无端占
用资源。因此HTTP的设计者有意利用这种特点将协议设计为请求时建连接、请求完释放连接,以尽快将资源释放出来服务其他
客户端。
举个例子来说,就是假如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,反而
每次都不耐其烦重新响应请求。我们都知道http每次响应请求,则要发起一个到服务器的TCP连接,HTTP与服务器之间建立一个
连接,而TCP建立连接涉及一个“三次握手”的过程
随着时间的推移,html页面变得复杂了,里面可能嵌入了很多图片,这时候每次访问图片都需要建立一次tcp连接就显得低
效了。因此Keep-Alive被提出用来解决效率低的问题。
这样一来,客户端和服务器之间的HTTP连接就会被保持,不会断开(超过Keep-Alive规定的时间,意外断电等情况除外),当
客户端发送另外一个请求时,就使用这条已经建立的连接。
无状态是指服务器不知道客户端是什么状态。
HTTP是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive没能改变这个结果。
谓http是无状态协议,言外之意是说http协议没法保存客户机信息,也就没法区分每次请求的不同之处。关于http无状态阻碍了交
互式应用程序的实现。比如记录用户浏览哪些网页、判断用户是否拥有权限访问等。HTTP无状态的特性严重阻碍了这些交互式
应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保
持HTTP状态的技术就应运而生了,一个是Cookie,而另一个则是Session。
Cookie是客户端的存储空间,由浏览器来维持。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的
是在服务器端保持状态的方案。
现在理解了HTTP的无连接与无状态,他们的好处、缺点,以及那些缺点的改进方法。
另外通过今天的学习还深化了我对TCP的理解,用户在通过http ftp或者其他上层协议进行通讯之前都需要TCP协议控制客户端打开对应端口,建立和服务器的TCP链接。
比如每次http请求,请求得到相应前,都必须建tcp链接(1),然后获得响应(2),结束请求之后(3),就会断开TCP链接(4)。