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

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

长度 + 数据

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

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

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

阅读 5.9k
2 个回答

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

宣传栏