communication - 无状态协议(protocol)的参数(上下文 : simple point-to-point communication)

标签 communication protocols

(所以 this question has been asked before ,但在一般意义上,大多数响应都是在与多个服务器/客户端/等的一般网络通信的上下文中)

在简单的点对点通信协议(protocol)的上下文中,有状态和无状态协议(protocol)的优点/缺点是什么?我的直觉是无状态更好(考虑到更多 HTTP)使用简单的命令响应数据包,但我不确定为什么。我还与一位主管合作,他在使用带有序列号、连接建立方法等的有状态协议(protocol)方面有很多经验,他一直鼓励我使用有状态协议(protocol)。我们陷入了僵局,似乎无法说服对方采用正确的方法。

Another question about simple point-to-point communications protocols提出了一些很好的例子,即HDLC (有状态的)和 MODBUS (无国籍)。

最佳答案

如果您从对话的角度来看协议(protocol),那可能会更容易。

在无状态协议(protocol)中,没有“你好”或“再见”。每个请求都是简单的“给我那个”、“拿这个”等等,每个请求都是独立的。如果客户端给服务器一些东西,它不关心服务器用它做什么。如果客户端需要知道它刚刚给服务器的是什么,那么它会再次请求它来验证。

这(无状态)听起来不错,而且对两个独立的进程(服务器和客户端)也有好处,尤其是当它们松散耦合时。

但是如果有两个协作进程,这两个任务相互依赖并且一个需要另一个的输出才能使它们都成功,那么无状态会增加开销,因为每个通信和操作都需要通过问题进行验证.或者两者之间需要共享上下文。

想想外科医生和她的助手递给她的工具。外科医生说“scape”,当手术刀放在她手中时,她知道通信已经完成。 “有状态”助手可以跟踪通信状态,知道“scape”之后会发出“抽吸”或“牵开器”命令,并准备好适当的仪器。所以谈话有一个状态——开始和结束——“你好”和“再见”。这很好,因为它减少了延迟并降低了通信开销。

您可以使外科医生/助理协议(protocol)无状态 - 但这会影响整体结果的质量吗?

关于communication - 无状态协议(protocol)的参数(上下文 : simple point-to-point communication),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947499/

相关文章:

用于监视程序和控制微 Controller 的Python脚本

android - 对等通信选项

ios - 如何提供支持 UITableViewDataSource 协议(protocol)的继承 View Controller ?

Swift - 继承协议(protocol)和将 Self 约束到协议(protocol)之间的区别

networking - Arduino 射频传感器网络

communication - 当我有同一个 SIP 提供商的多个电话号码时如何路由来电?

ios - Swift 无法通过委托(delegate)调用协议(protocol)方法

IOS Xcode 5,如何自动生成协议(protocol)的所有强制方法

c - 在C中解析和发送数据帧

linux - super 终端使用的TCP/IP通信协议(protocol)?