Web的含义是无状态的,HTTP是一种无状态协议?

5
请简单解释一下“Web是无状态”的含义?
请进一步解释一下“HTTP是无状态协议”的含义。
谢谢。
4个回答

8

无状态的含义:

它不会跟踪配置设置、事务信息或下一次会话的任何其他数据。当一个程序“不保持状态”(是无状态的)或当系统基础设施阻止程序保持状态时,它不能将有关上次会话的信息带入下一次会话中,例如用户选择的设置或在处理过程中出现的条件。

HTTP协议:

Web交易的通信工具HTTP协议是无状态的。在Web页面传递给用户后,连接就被关闭了。为了维护用户在网站上从一个页面到另一个页面的状态,已经开发出了一些对策,例如使用cookie。

或者可以简单地定义为:

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


4
当您编写富客户端应用程序时,可以方便地任意存储状态。在Web中,客户端不必传递任何信息以便于保留永久性信息,因此您的Web服务器可能处于永久性遗忘状态。每次客户端请求另一个页面时,您只能使用线索或提示来判断是否是同一人与您交谈。
为了模拟状态,您必须使用cookie(或某些身份验证机制),结合服务器端机制将这些cookie与实际的每个用户数据相关联。您也无法可靠地信任cookie,因此必须进行权衡以确定该关联的可靠程度。另外,副作用是您永远不知道用户何时“完成”会话,因此不能依赖返回行程来执行关闭数据库连接等操作。基本上,您必须在每个请求中做出有关互动的所有重要决策,然后假设用户永远不会回来。

2
了解HTTP及客户端和服务器之间共享状态的问题的一种方式是通过“篡改”Web浏览器和网站之间通信的数据。 这个火狐插件非常适合做这个。
您可以看到,通过从浏览器发送请求,您的客户端只说出了一些基本的请求参数。 这对于服务器来说并不足够,无法知道在客户端(=状态)发生了什么过去的事情。
通过使用Cookies的某种方式,可以将一些关于您状态的信息传递给浏览器,正如您可以在 tamperdata 插件中看到的那样,它只是附加在您的请求中的某些变量的信息。

0

有状态和无状态是形容词,用于描述计算机或计算机程序是否设计为在与用户、另一台计算机或程序、设备或其他外部元素的交互序列中记录并记住一个或多个先前事件。有状态意味着计算机或程序通过设置专门用于此目的的存储字段中的值来跟踪交互状态。无状态意味着没有记录先前的交互,并且每个交互请求都必须基于随附的信息进行处理。有状态和无状态源自状态作为某一时刻的一组条件的用法。(计算机在操作上本质上是有状态的,因此这些术语是用于特定一组交互的上下文中,而不是计算机工作的一般情况。)

互联网的基本协议——互联网协议(IP)是无状态交互的一个例子。每个数据包都是独立的,没有参考其他数据包。当您从网站请求Web页面时,请求会以一个或多个数据包的形式传输,每个数据包都与互联网协议程序本身无关。 (上层传输控制协议 - TCP - 确实将数据包相互关联,但使用数据包内部的信息而不是一些外部信息来完成此操作。)无连接也用于描述每发送一条消息就建立和终止连接的通信。IP既是无连接又是无状态的。

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

在正式的协议规范中,有限状态机是对有状态系统工作方式的抽象描述,它描述了每个可能状态后跟随的动作。
互联网(包括万维网)可以被视为无状态系统或机器。大多数计算机、人类和大象都是有状态的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接