具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明通过改进现有的通信协议,开发人员可以根据传输的需要增加字段信息,终端设备接收所述字段信息,根据所述字段信息构造相应的数据结构,并封装在数据包中进行传输,从而实现了在无需重新部署程序的情况下进行数据结构更新,实现了不同版本的终端设备与服务器的连接通信。进一步地,本发明还采用ECDH配合签名算法方式加密且运用序列化的二进制流传输数据,提高了数据传输的安全性和效率。
实施例一
图1示出了本发明实施例一提供的通信方法的第一实现流程,为了便于说明,仅示出了与本发明相关的部分。所述方法应用于一个终端设备与服务器之间的数据传输,或者多个终端设备与服务器之间的数据传输,所述终端设备优选为计算机,其可以具有不同通信协议,且不同版本的终端设备所传输的数据结构可以不相同。
如图1所示,所述通信方法包括:
在步骤S101中,终端设备接收根据数据传输的需要增加的字段信息,并根据增加的所述字段信息构造相应的数据结构,编译所述数据结构获得相应的类,将所述经过编译的类封装在数据包中,采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密。
在本实施例中,改进后的通信协议有比可扩展标记语言XML更高级的串行化结构数据特性,数据结构简单且可以自定义,数据结构可以包含多个消息体,每一个消息拥有一个或多个字段,每个字段拥有一个名字和一个值,值的类型可以是整形、浮点、字符串、原始字节或者其他类型。通过改进原有的通信协议,当终端设备升级为新版本之后,不同版本的终端设备在于服务器之间传输数据时具有一定的差异。对于旧版本的终端设备,开发人员根据数据传输的需要在旧版本原有的数据结构中增加字段信息,终端设备接收所述增加的字段信息,以构造相应的数据结构。编译所述数据结构获得相应的类,将所述经过编译的类封装在数据包中进行传输。基于所述改进后的通信协议,可以实现新版本、旧版本的终端设备与服务器之间的连接通信,实现了不需要重新在服务器上部署程序就可使得服务器兼容旧版本的终端设备,从而提高了通信协议的扩展性,有利于终端设备的扩展。
所述终端设备可在多种语言环境下接收所述字段信息,包括但不限于JAVA、C++语言等,使得开发人员可以选用熟悉的语法格式进行编写的,提升了用户体验。
在本实施例中,所述ECDH是基于ECC(Elliptic Curve Cryptosystems,椭圆曲线密码体制)的DH(Diffie-Hellman)密钥交换算法,交换双方可以在不共享任何秘密的情况下协商出一个密钥。
进一步地,在本实施例中,采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密的步骤具体为:
1、所述终端设额比采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密;
2、所述终端设备采用二进制的方式存储已加密的数据包;
3、所述终端设备对所述以二进制方式存储的已加密的数据包进行序列化;
在步骤S102中,终端设备向服务器传输所述已加密的数据包。
在本实施例中,所述终端设备以二进制流的形式向服务器传输所述序列化后的已加密的数据包。
通过采用ECDH配合签名算法对所述数据包进行加密,能够提高数据传输的安全性;进一步地,本发明还运用序列化的二进制流传输数据,通过底层字节传输能够提高数据传输的效率。
在步骤S103中,服务器接收已加密的数据包,对所述数据包进行解密,获得数据结构,从所述数据结构中提取需要的字段信息。
在本实施例中,服务器从所述数据结构中获取到需要的字段信息,并忽略不需要的字段信息,例如新增的字段信息。
在步骤S104中,服务器向终端设备返回相应的数据。
在本实施例中,服务器根据所述提取到的字段信息向终端设备返回相应的数据。所述返回的数据为服务器根据提取到的字段信息向终端设备返回的数据,例如,终端设备发送了判断语句,服务器根据实际情况返回“是”或“否”。
本发明通过改进现有的通信协议,开发人员可以根据传输的需要在终端设备增加字段信息,终端设备接收所述字段信息,根据所述字段信息构造相应的数据结构,并封装在数据包中进行传输,从而实现了在无需重新部署程序的情况下进行数据结构的更新,实现了不同版本的终端设备与服务器的连接通信。进一步地,本发明还采用ECDH配合签名算法方式加密且运用序列化的二进制流传输数据,提高了数据传输的安全性和效率。
图2示出了本发明实施例一提供的通信方法的第二实现流程。
如图2所示,所述通信方法具体为:
在步骤S201中,终端设备接收根据数据传输的需要增加的字段信息,并根据增加的所述字段信息构造相应的数据结构。
在步骤S202中,终端设备编译所述数据结构获得相应的类。
在步骤S203中,终端设备将所述经过编译的类封装在数据包中。
在步骤S204中,终端设备采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密。
在步骤S205中,终端设备采用二进制的方式存储已加密的数据包。
在步骤S206中,终端设备对所述以二进制方式存储的已加密的数据包进行序列化。
在步骤S207中,终端设备以二进制流的形式向服务器传输所述序列化后的已加密的数据包。
在步骤S208中,服务器接收到二进制流形式的序列化后的已加密的数据包,对其进行反序列化,获得以二进制方式存储的已加密的数据包。
在步骤S209中,服务器解析所述以二进制方式存储的已加密的数据包,获得已加密的数据包。
在步骤S210中,服务器解密所述已加密的数据包,获得封装在数据包中的数据结构,从中提取需要的字段信息,忽略新增的字段信息
在步骤S211中,服务器根据所提取到的字段信息向终端设备返回相应的数据。
本发明通过改进现有的通信协议,开发人员可以根据传输的需要在终端设备增加字段信息,终端设备接收所述字段信息,根据所述字段信息构造相应的数据结构,并封装在数据包中进行传输,从而实现了在无需重新部署程序的情况下进行数据结构的更新,实现了服务器不需要更新就可以与不同版本的终端设备连接通信。进一步地,本发明还采用ECDH配合签名算法方式加密且运用序列化的二进制流传输数据,提高了数据传输的安全性和效率。
实施例二
图3示出了本发明实施例二提供的通信系统的组成结构,为了便于说明,仅示出了与本发明相关的部分。
所述通信系统包括终端设备1和服务器2,所述终端设备1优选为计算机。所述终端设备1的个数可以为一个或者多个,不同版本的终端设备可以具有不同的通信协议,且其传输的数据结构可以不相同。
所述终端设备1和服务器2之间通过有线或者无线的方式连接通信。
所述终端设备1,用于接收根据数据传输的需要增加的字段信息,并根据增加的所述字段信息构造相应的数据结构,编译所述数据结构获得相应的类,将所述经过编译的类封装在数据包中,采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密,向服务器传输已加密的数据包。
所述服务器2接收已加密的数据包,对所述数据包进行解密,获得数据结构,从所述数据结构中提取需要的字段信息,并向终端设备返回相应的数据。
优选地,所述终端设备1具体用于:
接收开发人员根据数据传输的需要增加的字段信息,根据所述字段信息构造相应的数据结构;
编译所述数据结构获得相应的类,将所述经过编译的类封装在数据包中;
采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密;
采用二进制的方式存储所述已加密的数据包;对所述以二进制方式存储的已加密的数据包进行序列化;以及以二进制流的形式向服务器传输所述序列化后的已加密的数据包。
在本实施例中,所述终端设备可在多种语言环境下接收所述字段信息,包括但不限于JAVA、C++语言等。
本发明通过改进现有的通信协议,开发人员可以根据传输的需要在终端设备增加字段信息,终端设备接收所述字段信息,根据所述字段信息构造相应的数据结构,并封装在数据包中进行传输,从而实现了在无需重新部署程序的情况下进行数据结构的更新,实现了不同版本的终端设备与服务器的连接通信。进一步地,本发明还采用ECDH配合签名算法方式对所述数据包加密,提高了数据传输的安全性;且运用序列化的二进制流传输数据,提高了数据传输的效率。
实施例三
图4示出了本发明实施例三提供的终端设备的组成结构,为了便于说明,仅示出了与本发明相关的部分。所述终端设备优选为计算机。
如图4所示,所述终端设备1包括:
信息接收模块11,用于接收根据数据传输的需要增加的字段信息,并根据增加的所述字段信息构造相应的数据结构;
封装模块12,用于编译所述数据结构获得相应的类,将所述经过编译的类封装在数据包中;
加密模块13,用于采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密,并将已加密的数据包发送给服务器。
进一步地,所述加密模块13具体包括:
加密单元131,用于采用基于椭圆曲线密码体制的密钥交换算法ECDH,与签名算法配合对所述数据包进行加密;
存储单元132,用于采用二进制的方式存储所述已加密的数据包;
序列化单元133,用于对所述以二进制方式存储的已加密的数据包进行序列化;
传输单元134,用于以二进制流的形式向服务器传输所述序列化后的已加密的数据包。
进一步地,所述终端设备可在多种语言环境下接收所述字段信息,包括但不限于JAVA、C++语言等,使得开发人员可以选用熟悉的语法格式编写字段信息,提升了用户体验。
本发明通过改进现有的通信协议,对应地,在终端设备中增加信息接收模块,通过所述信息接收模块接收增加的字段信息以构造相应的数据结构,封装模块将所述数据结构封装在数据包中进行传输,从而实现了在无需重新部署程序的情况下进行数据结构的更新,实现了不同版本(新、老版本)的终端设备与服务器的连接通信。进一步地,本发明还采用ECDH配合签名算法方式对所述数据包加密,提高了数据传输的安全性;且运用序列化的二进制流传输数据,提高了数据传输的效率。
实施例四
以下给出本发明上述实施例的一个应用场景。需要说明的是,本实施例仅仅用于解释本发明,并不用于限制本发明。
以终端设备向服务器发送终端设备的CPU信息为例,数据结构为CPU信息。在本实施例中,所述新版本终端设备所发送的CPU信息包括两个消息体,分别为消息体CPU和消息体CPUInfo。
由上述代码可以知道,消息体CPU包括了CPU ID、CPU型号、CPU厂商、CPU主频、CPU核数量以及CPU主频单位,其中的字端类型有整型、浮点型、字符串类型。在消息体CPUInfo中包括了设备ID、CPU信息列表以及备注信息。其中,所述CPU信息列表即为上述消息体CPU。字段设有required、listItems、notrequired三种类别,所述notrequired类别的字段为可选字段。其中,新版本的终端设备在与服务器交互时,传输的数据结构中包括备注信息,而旧版本的终端设备不包括。因此,在进行旧版本的终端设备与服务器交互时,所述备注信息作为增加的字段信息添加到消息体CPUInfo中。旧版本的终端设备接收所述增加的字段信息,将所述字段信息添加到消息体CPUInfo,构造出相应的数据结构,并封装在数据包中进行传输。在旧版本终端设备与服务器交互时,服务器会按照字段的排序依次获取设备ID、CPU信息列表以及备注信息。由于备注信息为notrequired类别的字段,并且旧版本的终端设备是不需传递备注信息字段的,服务器会忽略此字段。从而实现了服务器与旧版本终端设备的通信,达到了服务器兼容旧版本终端设备的问题,提高了基于改进后的通信协议的通信方法的扩展性,有利于终端设备的扩展。
本领域普通技术人员还可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明。例如,各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。再例如,所述数据结构包括但不限于上述的CPU信息,CPU信息包括但不限于上述的消息体CPU和消息体CPUInfo,增加的字段信息包括但不限于上述的备注信息,也可以为根据传输数据的需要而增加的其他字段信息。
凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。