无状态协议
编辑无状态协议是一种通信协议,其中接收方不得保留先前请求的会话状态。 发送方将相关会话状态传输给接收方,这样每个请求都可以被隔离地理解,即不参考接收方保留的先前请求的会话状态。
相反,有状态协议是一种通信协议,其中接收方可以保留来自先前请求的会话状态。
在计算机网络中,无状态协议的示例包括作为互联网基础的互联网协议 (IP) 和作为万维网基础的超文本传输协议 (HTTP)。 有状态协议的示例包括传输控制协议 (TCP) 和文件传输协议 (FTP)。
无状态协议提高了可见性、可靠性和可扩展性的特性。 可见性得到提高,因为监控系统不必超越单个请求来确定其全部性质。 可靠性得到提高,因为它简化了从部分故障中恢复的任务。 可伸缩性得到改进,因为不必在请求之间存储会话状态允许服务器快速释放资源并进一步简化实现。
无状态协议的缺点是它们可能会通过增加在一系列请求中发送的重复数据来降低网络性能,因为这些数据不能留在服务器上并重新使用。
例子
编辑HTTP 服务器可以独立理解每个请求。
将此与与用户进行交互式会话的传统 FTP 服务器进行对比。 在会话期间,为用户提供了一种方法来进行身份验证并设置各种变量(工作目录、传输模式),所有这些都作为会话状态的一部分存储在服务器上。
无状态和有状态协议层的堆叠
编辑不同协议层之间的有状态和无状态协议之间可能存在复杂的交互。 例如,HTTP 是一种无状态协议,位于 TCP 之上,而 TCP 是一种有状态协议,它位于另一种无状态协议 IP 之上,该协议在使用另一种有状态协议 BGP 的网络上进行路由,以引导 IP 网络上的数据包。
这种层堆叠甚至在 HTTP 之上继续存在。 作为缺少保留会话状态的解决方法,HTTP 服务器实现了各种会话管理方法,通常利用 HTTP cookie 中的会话标识符引用存储在服务器上的会话状态,有效地在 HTTP 之上创建有状态协议。 HTTP cookie 违反了 REST 架构风格,因为即使不引用存储在服务器上的会话状态,它们也独立于会话状态(它们影响浏览器历史记录中同一网站的先前页面)并且它们没有定义的语义。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/193312/