network-programming - 自定义通信协议的良好设计是什么?
问题描述
我必须在 C 中实现一个通信协议栈。已经存在一个大纲设计。堆栈由 3 层组成(连接控制、安全、分片)。这些层的功能与这里无关。这个想法是,每一层根据其职责处理传入/传出的电报,并将其交给堆栈中的下一层。我认为这是堆栈的通常想法。
我的问题是,什么是好的设计,以及每一层的各个项目的依赖关系如何。
我想到了两种方法:
链式实现:对于传入的电报,连接控制项的处理数据函数由前面的项调用(不在本文的范围内)。然后连接控制对报文进行处理,然后调用安全项处理数据函数,然后安全项进行处理并将报文转发给分段项。同样的想法也适用于传出的电报,通过调用处理输出数据函数以相反的方向。
中央控制项实现:在这种方法中,中央控制获取传入的电报,然后调用连接控制的处理输入数据函数,该函数在执行某些操作后返回电报。然后中控项调用安全项的处理入数据函数等。也许这个中央控制项可以实现为状态机,其中每个状态代表上述通信协议层之一。
解决方案
推荐阅读
- android - 使用 Query Back4app 看不到进度条
- aws-lambda - AWS Chalice:在 Python 中读取 lambda 环境变量
- r - R Notebook/Markdown 不使用“fig.path =”块选项保存块图
- php - PHP如何停止写入和截断
- python-2.7 - Python提取味精库:'gbk'编解码器无法解码字节:非法多字节序列
- reactjs - React iFrame 在 IE11 中显示奇怪 - 引导类不起作用
- treeview - 在 sap.m.Tree 中仅显示 JSON 模型的一部分
- html - Html单选按钮定位
- python - 点 pip 到 anaconda pip
- assembly - 为什么我的代码打印出一段 .data 消息,而不是数字?