一种基于公交车物联网通讯协议的通讯方法转让专利

申请号 : CN201811551534.8

文献号 : CN109587157B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡龙周金明

申请人 : 南京视察者图像识别科技有限公司

摘要 :

本发明公开了一种公交车物联网通讯协议,包括以下步骤,步骤1,设置协议内容;步骤2,发送方通过传输协议帧向接收方发送控制命令及数据;步骤3,接收方通过TCP连接接收报文数据,完成数据传输;本发明能有效提高数据传输效率;即使多个协议报文连续发送,也可以将每一个报文区分开;有效提高数据传输过程中的安全性和稳定性。

权利要求 :

1.一种基于公交车物联网通讯协议的通讯方法,包括发送方和接收方,其特征在于,包含以下步骤:步骤1,设置协议内容:协议帧包含的字节串包括协议魔术字4字节,加密算法标志位2字节,协议头的长度2字节,数据起始地址2字节,前12个字节CRC16校验码2字节,数据标志位1字节、协议标志位1字节、报文类型4字节、包序号4字节,数据分包的个数2字节、每一包的大小4字节、数据实际大小4字节、解压前数据长度4字节,数据CRC32校验码4字节、协议头的CRC32校验码4字节、32个字节的秘钥取反字节、16个随机字节、N-92个数据字节,N为数据包总字节数;

步骤2,发送方通过传输协议帧向接收方发送控制命令及数据,其发送流程如下:

步骤21,设置1~12个字节内容:包括协议魔术字,加密算法标志位,协议头的长度,数据起始地址,第11~12字节取零,计算前12个字节的CRC16校验码,并追加更新字节11~12;

步骤22,设置字节13~22的内容:包括数据标志位、协议标志位、报文类型、包序号;其中设置协议标志位具体为,对数据字节进行压缩,若压缩后大小相比原始数据没有缩小,则设置协议标志位中的压缩标志位为0,若相比原始数据有缩小,设置压缩标志位为1,并设置协议标志位中的ACK标志位内容;

步骤23,设置字节23~36的内容:数据分包的个数、每一包的大小、数据实际大小、解压前数据长度;

步骤24,设置字节37~44的内容:计算原始数据CRC32校验码,并追加到字节37~40,设置字节41~44内容为0;

步骤25,设置字节45~92的内容:随机生成16个字节,并追加到字节77~92,根据随机字节生成32个字节的密钥并设置字节45~76内容为密钥的取反字节;

步骤26,计算协议头92个字节的CRC32校验码,并追加到字节41~44;

步骤27,用步骤25生成的密钥对协议头字节13~44内容进行加密,再用所述密钥对数据字节进行加密,并将加密后的数据字节追加到协议头尾端;

步骤28,将协议报文字节通过TCP连接发送到接收方,完成协议报文数据的发送;

步骤3,接收方通过TCP连接接收报文数据,完成数据传输。

2.根据权利要求1所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤1或步骤21中的协议魔术字,是固定的四个字节,既用来校验当前报文字节是否属于协议报文,也用来表示协议报文数据的起始标志。

3.根据权利要求1所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤1或步骤21中的加密算法标志位,可以表示65536种加密算法。

4.根据权利要求3所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述65536种加密算法中的一种为twofish算法。

5.根据权利要求1所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤1或步骤21中的协议头的长度,是固定的92个字节,用于校验协议头。

6.根据权利要求1所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤1或步骤21中的数据起始地址,通过该数据起始地址加上数据长度可以获取整个数据字节。

7.根据权利要求1至6任一项所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤22中的数据标志位为0时表示协议头后不跟数据,此时字节15~18为命令字节;数据标志位为1时,字节15~18表示协议报文的类型,用于接收方对数据字节进行解析;协议标志位中的压缩标志位用于接收方判断是否对数据进行解压,协议标志位中的ACK标志位用于接收方判断是否要对当前的报文回复确认包,压缩算法使用LZO算法。

8.根据权利要求7所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤23中数据发送之前会拆分成多个包,每个包的大小相等,为128字节,不足128字节的包,补上为0的字节使包的长度为128字节,数据分包的个数乘以每一包的大小即为整个数据字节的大小,即整个数据字节的大小为128字节的整数倍。

9.根据权利要求8所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤25中生成随机字节的随机种子为当前系统时间戳,保证每个协议报文的随机字节都不一样,从而利用该随机字节生成的密钥也不一样。

10.根据权利要求9所述的一种基于公交车物联网通讯协议的通讯方法,其特征在于,所述步骤3中,接收方接收协议报文的过程如下:步骤31,定义静态变量len,a,b,c,d,e,f,g并将静态变量初始化为0,开始接收报文数据,其中len指当前接收到的报文长度,a为字节11~12的值,b为字节41~44的值,c为字节

23~24的值,d为字节25~28的值,e为字节29~32的值,f为字节33~36的值,g为协议头中字节37~40的值;

步骤32,令len为当前接收到的报文长度,若len≥92,进入下一步,否则继续接收数据;

步骤33,先消费92字节,判断前4个字节是否与协议魔术字相同,同时第7~8字节的值是否等于92,若都满足,则进入下一步,否则提前结束接收数据;

步骤34,令变量a等于字节11~12的值,并将第11~12字节设置为0,计算前12个字节的CRC16校验码,判断a是否与校验码相等,若相等则进入下一步,否则提前结束接收数据;

步骤35,将字节45~76取反,得到密钥,根据字节5~6的加密算法标志位对协议头的字节13~44进行解密,令变量b为字节41~44的值,并设置字节41~44位0,计算协议头92个字节的CRC32校验码,若b等于校验码,则进入下一步,否则提前结束接收数据;

步骤36,令变量c为字节23~24的值,d为字节25~28的值,e为字节29~32的值,f为字节33~36的值,则数据大小为c×d,若len≥c×d+92,进入下一步,否则继续接收数据直到满足条件;

步骤37,消费接下来的c×d个字节即为数据字节,对字节45~76取反得到密钥,利用密钥对数据字节进行解密,判断协议头中的压缩标志位,若为1,对数据进行解压缩得到原始数据字节,若为0,则为原始数据;令变量g为协议头中字节37~40的值,计算原始数据的CRC32校验码,若g等于校验码,则进入下一步,否则提前结束接收数据;

步骤38,整个协议报文的字节大小为:c×d+92,根据协议头的报文类型对原始数据具体内容进行解析,整个协议报文接收过程结束。

说明书 :

一种基于公交车物联网通讯协议的通讯方法

技术领域

[0001] 本发明涉及通讯协议,具体涉及一种基于公交车物联网通讯协议的通讯方法。

背景技术

[0002] 随着我国城镇化进程的不断加快,大数据时代的来临,城市公交运行数据的分析的需求急剧上升,需要公交车车载终端与服务器进行实时通讯,完成对采集数据的上传、平台对终端的控制等功能。传统的公交车载终端与服务器之间的通讯协议要求传输的数据帧之间有一定的延时,并且会存在数据缺失以及接收的数据与原数据不一致的情况,而且数据容易被破解,因此如何提高通讯速度、数据传输的实时性、稳定性以及安全性是目前亟待解决的问题。

发明内容

[0003] 为了克服现有技术的不足,本发明的目的在于提供一种基于公交车物联网通讯协议的通讯方法,该方法提高了数据的传输效率,有效保证了数据传输过程中的安全性和稳定性。为达到上述目的,本发明是通过以下的技术方案来实现的。
[0004] 步骤1,设置协议内容:协议帧包含的字节串包括协议魔术字4字节,加密算法标志位2字节,协议头的长度2字节,数据起始地址2字节,前12个字节CRC16校验码2字节,数据标志位1字节、协议标志位1字节、报文类型4字节、包序号4字节,数据分包的个数2字节、每一包的大小4字节、数据实际大小4字节、解压前数据长度4字节,数据CRC32校验码4字节、协议头的CRC32校验码4字节、32个字节的秘钥取反字节、16个随机字节、N-92个数据字节,N为数据包总字节数。
[0005] 步骤2,发送方通过传输协议帧向接收方发送控制命令及数据;
[0006] 步骤3,接收方通过TCP连接接收报文数据,完成数据传输。
[0007] 与现有技术相比,本发明具有如下有益效果:
[0008] 1、本发明能有效提高数据传输效率,采用LZO无损解压缩算法,具有非常快速的压缩和解压特点,通过减小传输数据量从而提高数据传输效率;
[0009] 2、本发明不要求两个协议报文之间满足一定的延时,协议头中描述了数据的起始地址以及整个数据的长度,即使多个协议报文连续发送,也可以将每一个报文区分开;
[0010] 3.本发明能有效提高数据传输过程中的安全性和稳定性,采用twofish加密算法,对协议头和数据进行双重加密,并且每个报文的密钥都不相同,保证了数据的安全性。在接收报文时,会对协议头进行两次校验,对数据进行一次校验,保证了数据的稳定性。

附图说明

[0011] 图1是本发明的协议报文发送流程示意图;
[0012] 图2是本发明的协议报文接收流程示意图。

具体实施方式

[0013] 为了阐明本发明的技术方案和工作原理,下面结合附图与具体实施例对本发明做详细的介绍。
[0014] 附图1为本发明的协议报文发送流程示意图,图2为本发明的协议报文接收流程示意图,结合这两幅图,该方法主要包括以下步骤:
[0015] 公交车物联网通讯协议包括发送方和接收方的设计方法,步骤如下:
[0016] 步骤1,设置协议内容:协议帧包含的字节串包括协议魔术字4字节,加密算法标志位2字节,协议头的长度2字节,数据起始地址2字节,前12个字节CRC16校验码2字节,数据标志位1字节、协议标志位1字节、报文类型4字节、包序号4字节,数据分包的个数2字节、每一包的大小4字节、数据实际大小4字节、解压前数据长度4字节,数据CRC32校验码4字节、协议头的CRC32校验码4字节、32个字节的秘钥取反字节、16个随机字节、N-92个数据字节,其具体结构形式如表1所示:
[0017] 表1
[0018]
[0019]
[0020] 步骤2,发送方通过传输协议帧向接收方发送控制命令及数据,其发送流程如下:
[0021] 步骤21,设置1~12个字节内容:包括协议魔术字,加密算法标志位,协议头的长度,数据起始地址,第11~12字节取零,计算前12个字节的CRC16校验码,并追加更新字节11~12;
[0022] 步骤22,设置字节13~22的内容:包括数据标志位、协议标志位、报文类型、包序号;其中设置协议标志位具体为,对数据字节进行压缩,若压缩后大小相比原始数据没有缩小,则设置协议标志位中的压缩标志位为0,若相比原始数据有缩小,设置压缩标志位为1,并设置协议标志位中的ACK标志位内容;
[0023] 步骤23,设置字节23~36的内容:数据分包的个数、每一包的大小、数据实际大小、解压前数据长度;
[0024] 步骤24,设置字节37~44的内容:计算原始数据CRC32校验码,并追加到字节37~40,设置字节41~44内容为0;
[0025] 步骤25,设置字节45~92的内容:随机生成16个字节,并追加到字节77~92,根据随机字节生成32个字节的密钥并设置字节45~76内容为密钥的取反字节;
[0026] 步骤26,计算协议头92个字节的CRC32校验码,并追加到字节41~44;
[0027] 步骤27,用步骤25生成的密钥对协议头字节13~44内容进行加密,再用所述密钥对数据字节进行加密,(若压缩标志位为1,则所述数据字节为压缩后的数据字节,若压缩标志位为0,则所述数据字节为原始数据字节),并将加密后的数据字节追加到协议头尾端。双重加密技术,保证了协议报文传输的安全性。
[0028] 步骤28,将协议报文字节通过TCP连接发送到接收方,完成协议报文数据的发送;
[0029] 步骤3,接收方通过TCP连接接收报文数据,完成数据传输。
[0030] 优选地,所述步骤1或步骤21中字节1~4为协议魔术字,是固定的四个字节,既用来校验当前报文字节是否属于协议报文,也用来表示协议报文数据的起始标志。
[0031] 优选地,所述步骤1或步骤21中字节5~6为加密算法标志位,最多可以表示65536种加密算法,优选的,所述65536种加密算法中的一种为twofish算法。
[0032] 优选地,所述步骤1或步骤21中字节7~8为协议头的长度,是固定的92个字节,用于校验协议头。
[0033] 优选地,所述步骤1或步骤21中字节9~10位数据起始地址,通过该数据起始地址加上数据长度可以获取整个数据字节。
[0034] 优选地,所述步骤22中,数据标志位为0时表示协议头后不跟数据,此时字节15~18为命令字节;数据标志位为1时,字节15~18表示协议报文的类型,用于接收方对数据字节进行解析;协议标志位中的压缩标志位用于接收方判断是否对数据进行解压,协议标志位中的ACK标志位用于接收方判断是否要对当前的报文回复确认包,压缩算法使用LZO算法。采用LZO无损解压缩算法,具有非常快速的压缩和解压特点,通过减小传输数据量从而提高数据传输效率。
[0035] 优选地,所述步骤23中数据发送之前会拆分成多个包,每个包的大小相等,为128字节,不足128字节的包,补上为0的字节使包的长度为128字节,数据分包的个数乘以每一包的大小即为整个数据字节的大小,即整个数据字节的大小为128字节的整数倍。
[0036] 优选地,所述步骤25中,生成随机字节的随机种子为当前系统时间戳,保证每个协议报文的随机字节都不一样,从而利用该随机字节生成的密钥也不一样。
[0037] 优选地,所述步骤3中,接收方接收协议报文的过程如下:
[0038] 步骤31,定义静态变量len,a,b,c,d,e,f,g并将静态变量初始化为0,开始接收报文数据,其中len指当前接收到的报文长度,a为字节11~12的值,b为字节41~44的值,c为字节23~24的值,d为字节25~28的值,e为字节29~32的值,f为字节33~36的值,g为协议头中字节37~40的值。
[0039] 步骤32,令len为当前接收到的报文长度,若len≥92,进入下一步,否则继续接收数据。
[0040] 步骤33,先消费92字节,判断前4个字节是否与协议魔术字相同,同时第7~8字节的值是否等于92,若都满足,则进入下一步,否则提前结束接收数据。
[0041] 步骤34,令变量a等于字节11~12的值,并将第11~12字节设置为0,计算前12个字节的CRC16校验码,判断a是否与校验码相等,若相等则进入下一步,否则提前结束接收数据。
[0042] 步骤35,将字节45~76取反,得到密钥,根据字节5~6的加密算法标志位对协议头的字节13~44进行解密,令变量b为字节41~44的值,并设置字节41~44位0,计算协议头92个字节的CRC32校验码,若b等于校验码,则进入下一步,否则提前结束接收数据;
[0043] 步骤36,令变量c为字节23~24的值,d为字节25~28的值,e为字节29~32的值,f为字节33~36的值,则数据大小(若压缩标志位为1位压缩后的大小)为c×d,判断当前接收到的报文长度len≥c×d+92,若满足条件进入下一步,否则继续接收数据直到满足条件。
[0044] 步骤37,消费接下来的c×d个字节即为数据字节,对字节45~76取反得到密钥,利用密钥对数据字节进行解密,判断协议头中的压缩标志位,若为1,对数据进行解压缩得到原始数据字节,若为0,则为原始数据。令变量g为协议头中字节37~40的值,计算原始数据的CRC32校验码,若g等于校验码,则进入下一步,否则提前结束接收数据;
[0045] 步骤38,整个协议报文的字节大小为c×d+92,根据协议头的报文类型对原始数据具体内容进行解析,整个协议报文接收过程结束。
[0046] 以上结合附图对本发明进行了示例性描述,显然,本发明具体实现并不受上述方式的限制,凡是采用了本发明的方法构思和技术方案进行的各种非实质性的改进;或者未经改进、等同替换,将本发明的上述构思和技术方案直接应用于其他场合的,均在本发明的保护范围之内。