应用程序的协议设计

时间:2011-09-20 04:32:46

标签: client-server protocols

我正在编写客户端服务器应用程序。在这里,我将不得不将大小为1024字节的数据包从客户端传输到服务器。如果数据包大小更大,则必须将其分成两个数据包。服务器必须了解接收的数据包是新数据包还是旧数据包的延续。然后它应该包含协议的版本号。此协议可由多个应用程序使用,因此数据包还应包含应用程序标识符以确定哪个应用程序。数据包还应包含crc信息以检查数据包中的错误。任何人都可以建议我使用上述协议设计客户端和服务器之间的通信。     任何人都可以向我建议一些教程,这些教程将解释如何从客户端加密和发送数据,然后在服务器中接收和解码数据。

2 个答案:

答案 0 :(得分:0)

协议是相互理解的交换方式。该协议的细节定义了您的应用程序的可靠性和关键任务性。

实现简单协议的方法只是将帧大小嵌入到数据包的开头。此外,数据可以作为文件块接收异步。分离它们并添加到处理队列是一种简单的逻辑。如果你有一个固定的大小,而不是共享大小,只需读取每个1024帧并将其视为你的帧。一个简单的计数器有助于实现这一目标吗?

答案 1 :(得分:0)

除了基本信息之外,您还需要引入某种序列编号方案,指示连续编号(第一个数据包为0),以便服务器可以理解新数据包流与上一个数据流中的数据之间的区别如果出现乱序,也会重新排序。

现在你不必完成所有这些,如果你正在设计一个真实世界的应用程序,因为你只需要为可靠的事务选择TCP / IP,如果你检查它的细节,它会处理你正在讨论的所有情况。但是你必须设计一个较小的协议,我建议你创建一个协议的小状态图来检查所有路径是否导致某些最终状态(协议状态机),否则很容易错过一些情况