HTTP有HTTP cookie。cookie允许服务器跟踪用户状态、连接数、最后一个连接等。

HTTP具有持久连接(Keep-Alive),可以从同一个TCP连接发送多个请求。


当前回答

HTTP无状态。TCP是有状态的。 没有所谓的HTTP连接,只有HTTP请求和HTTP响应。我们不需要维护任何东西来发出另一个HTTP请求。 “keep-alive”连接头意味着TCP将被后续的HTTP请求和响应重用,而不是一直断开和重新建立TCP连接。

其他回答

即使多个请求可以通过同一个HTTP连接发送,服务器也不会为它们通过同一个套接字到达附加任何特殊含义。这完全是一个性能问题,目的是尽量减少为每个请求重新建立连接所花费的时间/带宽。

就HTTP而言,它们仍然是独立的请求,并且必须包含足够的信息来满足请求。这就是“无国籍”的本质。如果没有服务器所知道的一些共享信息(在大多数情况下是cookie中的会话ID),请求将不会相互关联。

HTTP是无连接的,这是HTTP是无状态协议的直接结果。服务器和客户端只有在当前请求期间才能相互了解。后来,他们都忘了对方。由于协议的这种性质,无论是客户端还是浏览器都不能在网页上的不同请求之间保留信息。

HTTP无状态。TCP是有状态的。 没有所谓的HTTP连接,只有HTTP请求和HTTP响应。我们不需要维护任何东西来发出另一个HTTP请求。 “keep-alive”连接头意味着TCP将被后续的HTTP请求和响应重用,而不是一直断开和重新建立TCP连接。

我认为有人为无状态概念选择了一个非常不幸的名字,这就是造成整个误解的原因。它不是关于存储任何类型的资源,而是关于客户端和服务器之间的关系。

客户:我把所有的资源都保留在我这边,把所有需要处理的重要项目的“清单”发给你。做好你的工作。

服务员:好的。让我来负责筛选哪些是重要的,然后给你适当的答复。

这意味着服务器是客户端的“奴隶”,在每次请求后都必须忘记他的“主人”。实际上,STATELESS仅指服务器的状态。

https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3

什么是无状态?

一旦发出请求并将响应呈现回客户端,连接将被丢弃或终止。服务器将忘记所有关于请求者的信息。

为什么无状态? ?

web选择使用无状态协议。这是一个天才的选择,因为web的最初目标是允许文档(网页)被提供给非常大的用户。人们使用非常基本的硬件作为服务器。

维护长时间运行的连接将非常耗费资源。

如果web选择了有状态协议,那么为了维护访问者的连接,服务器上的负载将会增加。