如何理解无状态协议和有状态协议? HTTP是一种无状态协议,FTP是一种有状态协议。对于需要大量交互的Web应用程序,基础协议应该是有状态的。我的理解是正确的吗?无状态协议和有状态协议
回答
由于您在询问Web应用程序,因此该协议将始终为无状态 - Web协议为http(或https),这就是她写的全部内容。
我想你在想什么是在你的Web应用程序本身提供一个状态机制。典型的方法是在Web应用程序中为用户的会话创建一个唯一的标识符(一种或另一种形式的会话ID是常用的),它在浏览器和服务器之间来回切换。这通常是在一个cookie中完成的,尽管它可以完成,根据你的平台/框架,在URL上也有一些麻烦。
您的服务器端代码存储有状态信息(再次,通常称为用户的会话),但它希望使用sessionID来查找它。 http流量只是回传sessionID。只要该标识符存在,每个http事务就完全独立于所有其他事务,因此协议流量本身是无状态的。
基本上可以,但是你别无选择,只能使用HTTP服务于其中的网站。因此,你必须处理妥协以实现HTTP有状态,即会话管理。可能性基本上是通过URL中的每个呼叫传递一个会话ID,以便您知道何时与您之前讨论过的人聊天,或通过实现相同目标而不会混乱网址的Cookie。但是,大多数现代Web开发语言都会为您提供帮助;如果你的谷歌选择的语言+“会话管理”,你应该了解它是如何完成的。
HTTP是一种无状态协议,换句话说,服务器将会忘记与客户端/浏览器状态相关的所有内容。尽管Web应用程序使它看起来像有状态。
可以强制无状态协议表现得好像它是有状态的一样。如果服务器将状态发送给客户端,并且客户端每次都将其发送回服务器,则可以完成此操作。
有三种方法,这可能在HTTP来完成:
a)一个是Cookie,在这种情况下,状态发送和HTTP标头中返回。
b)第二个是URL扩展,在这种情况下,状态作为URL的一部分作为响应发送。
c)第三个是“隐藏的表单字段”,其中状态被发送到客户端作为响应的一部分,并且返回到服务器高可用性表单的隐藏数据的一部分
可扩展性和
HTTP变得如此之好的主要原因之一是其无状态。无状态协议简化了复制问题,因为状态本身不需要存储在服务器上。
有状态协议在逻辑上很重,可以可靠地在Internet中实现。无状态服务器也很容易扩展,而对于有状态服务器来说,可伸缩性是有问题的。无状态请求可以随时发送到任何节点,而Stateful则不是这种情况。
HTTP作为无状态协议增加了无状态Web应用程序的可用性,否则这些应用程序很难或不可能实现。如果有连接丢失,没有丢失的状态,简单的请求重新发送将解决问题。无状态请求也是可缓存的。
HTTP是一个无protocol.all基于Web的应用程序是无状态的。当向服务器发送请求时,客户端和服务器之间建立连接时,服务器将收到请求,处理该请求并返回响应,并关闭连接。如果发送了另一个请求,那么它将被视为新的请求,并建立新的连接。 为了使http有状态。我们使用会话管理技术。 ,以便它在处理当前request.i.e时使用来自先前请求的数据,例如,它为一系列客户端服务器交互使用相同的连接。 会话管理技术为: 1.隐式表单域 2.cookie 3.session 4.url-rewriting;
你的问题是现货,是的,如果你的银行网络交易是通过有状态连接完成的,那将是非常好的。唉,由于FTP中存在一个奇怪的错误,并且在BSD的部分套接字表中有12个套接字的限制,所以HTTP是无状态的。Marcus Ranum解释了这一切。here。
因此,HTTP抛弃了它从TCP继承的状态,并且必须以cookie的形式在应用程序层重新创建状态。结果是糟糕的互联网安全。
该Seif project建议修复所有使用“安全的JSON over TCP”。 DNS和证书颁发机构不是必需的。该协议和seifnode.js已完成,并在Github上获得了MIT许可证。
HTTP不会从TCP“继承”,而是将其用于传输。 HTTP使用TCP进行有状态连接,但会断开连接。稍后,如果需要,它将再次连接。所以,当你浏览一个网站时,你创建了许多不同的连接。这些连接中的每一个都是有状态的,但整个对话不是,因为你正在放弃与每个对话的连接。
- 1. 检索SQL协议状态
- 2. 无状态协议的对面?
- 3. web的含义是无状态的,http是无状态协议?
- 4. 使用无状态协议保留状态
- 5. 状态机的串行协议
- 6. 如何实现有状态的HTTP协议?
- 7. 是基于现有协议的协议还是协议?
- 8. Swift协议和协议扩展与CollectionType
- 9. 协议的哈希协议
- 10. WebDav协议VS HTTP协议
- 11. java支持在线证书状态协议
- 12. 可扩展的PPP协议。关于状态机需要帮助
- 13. 链路状态路由协议 - Dijkstras算法
- 14. 贝宝协议交易状态是什么意思?
- 15. Oracle SqlError:协议冲突/ OALL8处于不一致状态
- 16. 在低级别,Websocket协议如何检测连接的状态?
- 17. 斯威夫特协议和多态性
- 18. Rails协会 - user_id状态无轨道4
- 19. 无状态协议的参数(上下文:简单的点对点通信)
- 20. uwsgi协议和wsgi协议有什么区别?
- 21. 协调布局和透明状态栏
- 22. Elasticsearch建议状态检查
- 23. Wap协议和Android
- 24. c#和HTTP协议
- 25. Kerberos和T125协议
- 26. HTTP和HTTPS协议
- 27. 协议buffer3和json
- 28. CoAP协议和suburl
- 29. 用于C的有限状态机编译器模拟网络协议
- 30. Firebase XMPP协议与HTTP协议