HTTP协议之无连接与无状态

来源:互联网 发布:淘宝家政服务平台 编辑:程序博客网 时间:2024/04/28 16:00

http://blog.csdn.net/hsd2012/article/details/51083550


前言  

  HTTP协议一共有五大特点,1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态。其中无状态是其中主要特点之一。因此,常说HTTP是一个无状态协议。所谓的无状态是指协议对于事务处理没有记忆能力。服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。而无连接又是什么呢?发现很多地方,将http的无连接与无状态混为一团,让初学者一时陷入雾水(比如我刚开始就很没有区别开),有必要总结一下。

无连接

   举个例子来说,就是假如某个客户机在短时间多次次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,反而每次都不耐其烦重新响应请求。我们都知道http每次响应请求,则要发起一个到服务器的TCP连接,HTTP与服务器之间建立一个连接,而TCP建立连接涉及一个“三次握手”的过程。这针对大流量的的服务器来说,开销是相当大的。这说明是http无状态带来的缺点,当然http协议无状态也是有很多优点的。

   针对http无连接,人们设计了非持久连接和持久连接。实际上关于http协议非持久连接和持久连接是针对tcp协议的。当客户机/服务器的交互运行于TCP协议上时,应用程序的每个请求/响应对是经一个单独的TCP连接,则该应用程序使用非持久连接,而当应用程序的每个请求/响应对是经相同的TCP连接发送,则该应用程序使用持久连接

 非持久连接:请求一个HTTP请求/响应需要的总时间为客户端发出建立连接和发生请求报文+服务器传输HTML文件的时间。

  持久连接:服务器在发送响应后,保持该TCP连接打开。在相同的客户机与服务器之间的后续请求和响应报文通过相同的连接进行传送。不需要再次建立tcp连接 

无状态

  所谓http是无状态协议,言外之意是说http协议没法保存客户机信息,也就没法区分每次请求的不同之处。关于http无状态阻碍了交互式应用程序的实现。比如记录用户浏览哪些网页、判断用户是否拥有权限访问等。于是,两种用于保持HTTP状态的技术就应运而生了,一个是Cookie,而另一个则是Session。

0 0
原创粉丝点击