YHEchoPackage/消息结构.md

2.0 KiB
Raw Permalink Blame History

消息结构

消息结构由两部分组成即消息头和消息体。消息头大小固定20个字节在解析数据流时先读取20个字节解析出消息头数据后再读取Body数据。

参数 字节书byte 说明
Magic 4 协议头,固定值,由服务端提供
Seq 2 请求编号。返回数据时系统会并带上请求编号
Cmd 2 消息命令ID
UT 4 Unix时间戳,精确到秒
ChkSum 4 校验和
Len 4 body的长度
Body 不固定 加密的body数据

Body 加密、解密

  • 算法AES-128-CBC
  • keyexample key 1234(正式环境另外提供)。

ChkSum

  • 算法CRC-32校验和,使用IEEE多项式。

说明将Seq、Cmd、UT、body(加密后)按顺序写入buffer后通过CRC-32计算校验和。


Body数据的序列化和反序列化

Protobuf协议

Protobuf即Protocol Buffers,是Google公司开发的一种跨语言和平台的序列化数据结构的方式,是一个灵活的、高效的用于序列化数据的协议。

本协议会提供多个协议文件,部分说明如下:

  • const.proto 文件定义cmd枚举和一些默认的结构。
  • error.proto 文件定义了默认错误结构
  • 其他文件代表不同的功能模块结构体

消息命令与Body对应关系

Cmd Body文件位置 请求body 返回的body
SCT_ping system.proto Ping Pong
SCT_GetVersion version.proto Empty GetVersionRsq