2.0 KiB
2.0 KiB
消息结构
消息结构由两部分组成即消息头和消息体。消息头大小固定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
- key:
example 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 |