亲历的几个糟糕的应用层通信协议设计

去年和今年分别参与了两个公司的项目,这两个项目都涉及到了通信方面的程序设计,或者是以太网络通信,或者是串口通信。凡是通信就必须要有通信协议,个人认为协议的设计是个非常严肃的工作,需要理解业务需求和掌握基本的协议设计知识。但是从这两个项目来看,其协议的设计可以说是 糟糕到了极点。下面就其糟糕的设计之处予以批判。

1 糟糕设计之一:消息格式“包头+数据+包尾”

与UDP不同,TCP通信属于流式通信,没有消息边界,所以需要应用层自行对报文进行界定分离。实际项目1中,包头为{ {两个字节,包尾为}}两个字节,例如{ {t=123}}。其格式为:

开始边界+消息1+结束边界+开始边界+消息2+结束边界+开始边界+消息3+结束边界+....

由于TCP是安全的传输层协议,除非特别需要,应用层无需再做校验。消息边界只需要一个标识即可,基本格式为:

消息1+边界+消息2+边界+消息3+边界+...

无论从节约网络带宽,还是从简化报文解析代码,第一种设计都是非常的愚蠢!
无独有偶,项目2中基于串口的通信应用层协议也采用了这种设计格式。
当问其设计人员为何如此设计时,说一直就是这么设计的,自己也不知道这么设计的原因,还美滋滋地说一直没有什么问题,真想揍他一拳。

2 糟糕设计之二:用结构

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值