如何自定义应用层传输协议

在接收数据的时候如何确定数据是完整的, 所以要定义解析协议.
一开始想到如下方法:

长度 + 数据

但是如果长度出错的话将会造成解析错误. 所以想加上校验字段

头标记 + 长度 + 数据 + 尾标记

但是如果数据中出现了头标记或者尾标记可能也会造成解析错误.
请问要如何定义一个强效的应用层协议呢?

阅读 5.9k
2 个回答

比较常见的做法是:
开始标志位 + 长度 + 数据 + 校验位(如CRC32等)。
设计良好的协议你可以看TS中的PAT、PMT等数据包格式。无论多么精良的协议,免不了在网络不好或不通的时候丢包,所以最重要还是应用层对数据的校验和出错后的处理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏