报文组成格式

 

消息整体构成

起始标记

传输数据头

数据体

校验数据

结束标记

0xF0

38字节

不定长,数据体长度在传输数据头中确定

如果没有数据体,本部分长度为0

0/4字节

0xFF

消息的总长度

     起始标记(1)+ 协议数据头字节数(38)+ 前置处理头字节数 + 数据体字节数  +  校验数据字节数 + 结束标记(1)

起始标记:用于标识一个消息的开始,固定值:0xF0。该值不正确时,断开连接。

传输数据头:用于描述传输协议控制以及消息的唯一性控制。

数据体:包含传输数据内容,数据体的大小由所传输数据的内容决定。

校验数据:采用CRC32方式对传输的数据体内容进行校验。

结束标记:用于标识一个消息的结尾,固定值:0xFF。

数据头定义

消息的唯一标识:由传输数据头中“传输命令编码”、“消息时间戳”、“消息序号”、“设备ID”、“设备分组编码”这五个部分共16个字节确定。当接收方收到这16个字节相同的两个消息时,即可认定是重复消息。

分类

字段名

长度

数据类型

描述

传输

数据头

消息总长度

4

HEX

消息整体长度

协议标识

4

HEX

0x00000001

协议版本号

1

HEX

用于确定传输协议版本号:0x01

数据格式版本号

1

HEX

用于确定数据体中的数据编码格式版本号

:0x01

数据传输类型   

1

HEX

0x00:协议数据;0x01:预留数据;

0x02:交易数据;0x03:业务数据;

0x04:控制数据;0x05:状态数据。

预留

1

HEX

0xFF

 

 

 

 

消息

唯一

标识

传输命令编码

1

HEX

区分不同的传输命令

消息时间戳

7

BCD

发送请求消息的时间:YYYYMMDDHH24MISS

消息序列号

2

HEX

由消息发起方产生。初值为1,从程序启动后开始递增,到达65535后归1。

设备ID

4

1HEX+2BCD+1HEX

消息发送方的标识

设备分组编码

2

1HEX+1HEX

消息发送方的分组标识,确认设备分组和组内编码。

会话生存周期(改为命令代码)

2

HEX

本次会话的生存周期。用于确定是否检查超时及超时限制的时间。单位:秒。

分包总数

1

HEX

 

分包序号

1

HEX

当前数据分包序号,如果总包数=1,序号为1;如果总包数>1,分包序号从1开始递增。

前置处理标识

1

HEX

0x00

加密算法

1

HEX

0x00

加密算法补位长度

1

HEX

 

密钥版本

1

HEX

加密数据体采用密钥版本号

校验码算法

1

HEX

目前系统间数据交互时采用0x00。

0:不采用;1:CRC32;其它值无效。CRC32的初值是用0x000000000。

预留字段2

1

HEX

预留字段 0XFF

 

传输命令区分:

协议命令

编码

命令用途

连接请求

0x01

建立初始合法连接

连接确认反馈

0x02

对连接请求的确认

数据传递

0x03

用于各类数据传输

数据传递反馈

0xFD

用于对需要反馈的“数据传递”中指定的内容进行反馈数据传递

连接存活确认

0x08

用于无消息传输时的连接确认

连接存活确认反馈

0xFC

仅用于对连接确认的反馈

消息正确应答(ACK)

0xFB

用于正确接收确认

消息错误应答(NACK)

0x00

用于出现接收错误和收到非指定反馈数据时的错误应答

业务正确处理完成反馈

0xFA

用于收到数据后业务正确处理完成的反馈

业务处理出错反馈

0xF9

用于收到数据后业务处理出错的反馈

你可能感兴趣的:(tcp,报文)