无状态和无连接有什么区别?

Aka*_*ain 7 http

无状态和无连接有什么区别?另外,这些的用途以及它们的反面(稳定的和有联系的)的用途是什么?

sha*_*ncs 9

对于“无连接”,更准确的术语应该是“不面向连接”。

任何沟通都有3个阶段:开始、互动、结束。“连接”的概念侧重于“开始”和“结束”,而“状态”的概念侧重于“交互”。

如果一种通信协议是“面向连接”,则意味着只有在建立连接后才能传输真正的数据,而在破坏连接后则无法传输任何数据——在电话通信中,只有当其他人同意时,我们才能与其他人通话。拿起电话,挂断就无能为力。

如果一种通信协议是“非面向连接的”,则意味着可以随时发送真实数据。没有“开始”或“结束”阶段,只有“交互”——在电报通信中,我们可以直接发送消息。

如果一种通信协议是“有状态的”,则意味着在“交互”阶段,至少有一个通信方(客户端/服务器)会记住对方的状态——在TCP通信中,序列号是由双方存储和管理的。

如果一个通信协议是“无状态”的,则意味着在“交互”阶段,任何一方都没有存储状态信息。所有消息均以独立方式发送——在HTTP通信中,服务器不记住客户端的状态,所有HTTP请求都是独立发送的。

因此,这是两个完全不同的概念。我们可以有:

  • “面向连接的有状态”协议:TCP
  • “非面向连接的无状态”协议:UDP、HTTP
  • “面向连接的无状态”协议:在电话呼叫中,对方接听后,发送多条独立的消息。
  • “非面向连接的有状态”协议:在电报通信中,发送多个高度相关且依赖的消息。

以下是计算机科学领域的一些“无状态连接”协议: