他们说http是无状态的是什么意思

他们说http是无状态的是什么意思,第1张

他们说http是无状态的是什么意思

HTTP(服务器与客户端之间的实际传输协议)是“无状态的”,因为它在调用之间不记忆任何内容。 通过HTTP访问的 每个
资源都是单个请求,它们之间没有线程连接。如果使用HTML文件加载网页,该HTML文件中包含

<img>
指向同一服务器的三个标记,则将协商并打开四个TCP连接,四个数据传输,四个连接关闭。
协议 级别 的服务器 上 __根本没有任何状态可以让服务器 您进入时对您有任何了解。

(嗯,无论如何,对于高达1.0的HTTP都是如此。HTTP1.1添加了各种持久连接机制,因为真正的无状态协议会带来不可避免的性能问题。我们暂时将其忽略,因为它们并没有真正使HTTP成为有状态的,它们只是使它变为无状态的脏状态,而不是纯粹的无状态的代码。)

为了帮助您了解两者之间的区别,请设想Telnet或SSH等协议是无状态的。如果要获取远程文件的目录列表,则必须执行一次原子 *** 作,即连接,登录,更改目录并发出

ls
命令。当
ls
命令完成显示目录内容后,连接将关闭。然后,如果您想显示特定文件的内容,则必须再次连接,登录并切换到目录,然后发出
cat
命令。当显示文件的命令完成时,连接将再次关闭。

当您以这种方式看时,虽然Telnet /
SSH听起来很愚蠢,不是吗?好吧,在某些方面它是事实,在某些方面不是。当协议是无状态的时,服务器可以进行一些非常好的优化,并且数据可以轻松地散布。使用无状态协议的服务器可以非常有效地扩展,因此,尽管实际的单个数据传输可能非常慢(打开和关闭TCP连接并不便宜!),但是整个系统可以非常非常高效,并且可以扩展到任意数量的用户。

但…

除了查看静态网页之外,几乎您要执行的其他任何 *** 作都将涉及会话和状态。当HTTP用于其原始目的(共享静态信息,如科学论文)时,无状态协议很有用。当您开始将它用于Web应用程序,在线商店等时,无状态便开始变得麻烦,因为它们本质上是有状态的活动。结果,人们非常迅速地想出了在无状态协议之上建立状态的方法。这些机制包括cookie之类的东西,如URL中的状态编码,以及让服务器根据这些内容动态地启动数据,如隐藏状态请求之类,.........直到一大堆东西为止,包括更现代的东西。
Web套接字之类的东西。

您可以通过以下链接来更深入地了解这些概念:

  • http://en.wikipedia.org/wiki/Stateless_server
  • http://en.wikipedia.org/wiki/HTTP
  • http://en.wikipedia.org/wiki/HTTP_persistent_connection


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存