web的含义是无状态的,http是无状态协议?

时间:2010-04-21 04:45:22

标签: .net asp.net http

请用简单的词语指导Web的含义是无状态的吗?

请说明HTTP的无状态协议是什么意思?

感谢

4 个答案:

答案 0 :(得分:7)

无国籍的含义:

它不会跟踪下一个会话的配置设置,交易信息或任何其他数据。当程序“不维护状态”(无状态)或系统的基础结构阻止程序维护状态时,它无法将有关上一个会话的信息带入下一个会话,例如用户选择的设置或在此期间出现的条件处理

<强> HTTP:

HTTP协议是Web事务的通信工具,是无状态的。将网页传递给用户后,将关闭连接。已经开发了诸如使用cookie之类的对策,以维持用户在网站上从一个页面移动到另一个页面的状态。

或者它可以是简单的网络定义:

如果后续请求 - 响应对之间没有关系,则协议是无状态的。服务器可以唯一地处理每个请求,而不必为客户端保持会话状态。

答案 1 :(得分:4)

编写富客户端应用程序时,可以方便地存储状态。在Web中,客户没有义务传递可用于保留永久信息的任何信息,因此您的Web服务器可能处于永久性健忘症状态。每当您的客户要求提供另一页时,您只能使用与您交谈的人的线索或提示。

要模拟状态,您必须使用Cookie(或某些身份验证机制),并结合服务器端机制将这些Cookie与实际的每用户数据相关联。您也无法可靠地信任cookie,因此您必须进行权衡以确定该关联的可靠性。另外,副作用是你永远不知道用户何时“完成”你的会话,所以你不能依赖回程来做关闭数据库连接的事情。从本质上讲,您必须在每个请求上做出关于交互的所有重要决策,然后假设用户永远不会回来。

答案 2 :(得分:1)

理解HTTP和客户端与服务器之间共享状态问题的一种方法是通过“篡改”来自Web浏览器和网站之间通信的数据。

This firefox插件非常适合这样做。

您可以看到,通过从浏览器发送请求,您的客户端只会说明您的请求的一些基本参数。
这还不足以让服务器知道客户端过去(=状态)发生的事情。

通过浏览器传递一些关于您所在状态的信息的方法是使用Cookie,这只是附加到您的请求的变量中的一些信息,您也可以使用tamperdata插件查看。

答案 3 :(得分:0)

有状态和无状态是形容词,其描述计算机或计算机程序是否被设计为在与用户,另一计算机或程序,设备或其他外部元素的给定交互序列中记录和记住一个或多个先前事件。有状态意味着计算机或程序通常通过在为此目的指定的存储字段中设置值来跟踪交互状态。无状态意味着没有先前交互的记录,并且每个交互请求必须完全基于其附带的信息来处理。有状态和无状态源于在一个时刻使用状态作为一组条件。 (计算机在操作中具有固有的状态,因此这些术语用于特定交互集的上下文中,而不是计算机如何工作。)

Internet的基本协议,即Internet协议(IP),是无状态交互的一个示例。每个数据包完全独立传输而不参考任何其他数据包。当您从Web站点请求Web页面时,请求以一个或多个数据包传输,每个数据包都独立于Internet协议程序本身。 (上层传输控制协议 - TCP - 确实将数据包相互关联,但使用数据包中的信息而不是某些外部信息来执行此操作。)术语无连接还用于描述进行连接的通信和对于发送的每条消息都会终止。 IP是无连接的,也是无状态的。

Web的超文本传输​​协议(HTTP)是TCP / IP之上的应用层,也是无状态的。用户对网页或URL的每个请求都会导致所请求的页面被提供,但是Web(HTTP)服务器不会在以后记住该请求。换句话说,没有记录的连续性。每个通信都是离散的,与之前或之后的通信无关。为了进行有状态的通信,站点开发人员必须提供服务器可以调用的特殊程序,该程序可以记录和检索状态信息。诸如Netscape Explorer和Microsoft Internet Explorer之类的Web浏览器在其子目录中提供了可以存储和访问状态信息的区域。 Web浏览器和服务器应用程序在此区域中放置的区域和信息称为cookie。

在正式协议规范中,有限状态机是有状态系统如何工作的抽象描述,描述了每个可能状态之后的操作。

互联网(包括万维网)可以被视为无状态系统或机器。大多数计算机,人类和大象都是有状态的。