掌桥专利:专业的专利平台
掌桥专利
首页

一种数据通信方法及数据通信系统

文献发布时间:2023-06-19 19:27:02


一种数据通信方法及数据通信系统

技术领域

本发明涉及电子设备技术领域,尤其涉及一种数据通信方法及数据通信系统。

背景技术

随着科技的不断发展,越来越多的智能设备进入了人们生活的方方面面。而智能设备之间需要定义通信协议作为数据传输之用,从而满足用户对智能产品功能的需求。目前,很多客户端与服务端之间的通信,主要使用明文传输数据。而使用明文传输存在黑客攻击等风险,导致数据劫持和用户资料泄露现象。

发明内容

本发明提供了一种数据通信方法及数据通信系统,以防止出现数据劫持和用户资料泄露现象。

第一方面,本发明提供了一种数据通信方法,该数据通信方法包括:两个通信设备之间建立通信连接,其中一个通信设备为发送端,另一个通信设备为接收端;发送端的应用层对待发送数据进行封装组成至少一个应用层数据包,并将至少一个应用层数据包传入发送端的传输层;发送端的传输层将至少一个应用层数据包组成至少一个传输层数据包,每个传输层数据包中均包含有校验位、和用于存储应用层数据的有效数据位,其中,应用层数据为至少一个应用层数据包的部分或全部数据,校验位用于存储根据应用层数据生成的第一校验码;发送端依次将每个传输层数据包发送给接收端;接收端根据每个传输层数据包中的应用层数据,生成第二校验码,并比对第一校验码和第二校验码是否相同;在每个传输层数据包的比对结果均为相同时,根据每个传输层数据包中的应用层数据得到待发送数据。

在上述的方案中,通过将待发送数据依次经发送端的应用层和传输层进行封装,先后组成应用层数据包和传输层数据包,每增加一次封装均能够增加一定的私密性,以尽量减少出现数据劫持和用户资料泄露。且发送端还在每个传输层数据包中嵌入第一校验码信息;在接收端接收到每个传输层数据包时,能够根据每个传输层数据包中的应用层数据采用同样的算法生成第二校验码,并通过比对第一校验码和第二校验码是否相同,从而发现传输层数据包是否被劫持。且还在每个传输层数据包的比对结果均为相同时,才将每个传输层数据包中的应用层数据组包,从而使得到的数据和发送端的待发送数据一模一样,防止出现数据包丢失导致的数据不完整现象。且本发明示出的数据通信方法,相比传统的传输方式更安全,能够更大程度的避免数据劫持、数据泄露和数据丢失,从而使本发明示出的数据通信方法具有可靠性高、流程简单、可扩展性强的优点。

在一个具体的实施方式中,该数据通信方法还包括:在比对结果为不相同时,接收端给发送端反馈数据错误响应,使发送端重新发送该传输层数据包;在重新发送的传输层数据包的比对结果仍为不相同时,所述发送端再次重新发送该传输层数据包;如果发送端在发送该传输层数据包的次数不大于n次,使该传输层数据包的比对结果相同,则发送端依次将下一个传输层数据包发送给接收端;如果发送端在发送该传输层数据包的次数为n次时,该传输层数据包的比对结果仍为不相同,则发送端停止发送该传输层数据包和后面的传输层数据包,并向接收端发送表征待发送数据传输失败的信息。通过在发送端针对每个传输层数据包嵌入的第一校验码和接收端生成的第二校验码不相同时,对丢包的传输层数据包进行重传,避免数据丢包,保证可靠的数据传输。且还增加限次重复机制,不仅能够避免陷入针对一个传输层数据包重复发送的死循环。而且还能够针对同一个传输层数据包在n次发送后都不能够使比对结果相同时,终止针对该待发送数据的其他传输层数据包的继续发送,直接通知接收端待发送数据传输失败,从而能够避免错误的待发送数据被传输,还能够在发送待发送数据不能够被正确传输时,即时终止发送,避免传输资源被浪费。

在一个具体的实施方式中,发送端依次将每个传输层数据包发送给接收端包括:发送端依次给接收端发送一个传输层数据包;接收端在比对根据该传输层数据包中的应用层数据所生成的第二校验码与第一校验码相同时,给发送端反馈数据正确响应,使发送端继续发送下一个传输层数据包,直到至少一个传输层数据包全部发送完成。增加数据包确认机制,从而实现发送端依次将每个传输层数据包完整的传输给接收端。

在一个具体的实施方式中,发送端的应用层对待发送数据进行封装组成至少一个应用层数据包包括:根据应用层协议,定义每个应用层数据包的数据格式,应用层数据包的数据格式包括:命令ID、键、值长度、值;其中,值为待发送数据的部分或全部数据,值长度为值的字节长度,键为值对应的键信息,命令ID为值对应的命令ID信息;发送端的应用层根据应用层数据包的数据格式,将待发送数据封装组成至少一个应用层数据包。通过修改应用层协议,给每个应用层数据包定义一个统一的数据格式,建立一套有系统的数据通信协议,使每个应用层数据包均具有统一的标准,定义了每个应用层数据包的数据边界,防止出现数据粘包导致的数据不准确现象。

在一个具体的实施方式中,发送端的传输层将至少一个应用层数据包组成至少一个传输层数据包还包括:根据传输层协议,定义每个传输层数据包的数据格式,传输层数据包的数据格式包括传输层头部位和应用层数据位,其中,校验位位于传输层头部位中,传输层头部位还包括:消息ID位、保留位、错误位、应答位、版本号位、应用层数据长度位、总分片数位、当前分片数位;发送端的传输层根据传输层数据包的数据格式,将至少一个应用层数据包组成至少一个传输层数据包。通过修改传输层协议,给每个传输层数据包定义一个统一的数据格式,建立一套有系统的数据通信协议,使每个传输层数据包均具有统一的标准,定义了每个传输层数据包的数据边界,防止出现数据粘包导致的数据不准确现象。同时还在传输层头部位嵌入其他的关键信息,从而便于后续进行组包还原出待发送数据。

在一个具体的实施方式中,接收端在比对根据该传输层数据包中的应用层数据生成的第二校验码与第一校验码相同时,给发送端反馈数据正确响应包括:接收端在比对根据该传输层数据包中的应用层数据生成的第二校验码与第一校验码相同时,将该传输层数据包的传输层头部位中的错误位置为0,应答位置为1;接收端采用数据通信方法,将该传输层头部位的数据作为待发送数据,传输给发送端。在比对结果为不相同时,接收端给发送端反馈数据错误响应包括:接收端在比对结果为不相同时,将该传输层数据包的传输层头部位中的错误位置为1,应答位置为1;接收端采用数据通信方法,将该传输层头部位的数据作为待发送数据,传输给发送端。接收端通过根据两个校验码的比对结果,在传输层数据包的头部位的错误位和应答位分别置为不同的值,并通过同样的数据通信方法反馈给发送端,从而既能够反馈较为准确的反馈响应,又能够防止反馈信号被劫持泄露等问题。

在一个具体的实施方式中,根据每个传输层数据包中的应用层数据得到待发送数据包括:读取每个传输层数据包中的应用层数据、以及存储在总分片数位和当前分片数位中的总分片数和当前分片数;根据总分片数、当前分片数,对每个传输层数据包中的应用层数据按顺序组装,得到待发送数据。通过根据传输层头部的总分片数和当前分片数信息,便于快速且准确的将多个传输层数据包中的应用层数据组包还原出待发送数据。

在一个具体的实施方式中,根据应用层数据生成的第一校验码和第二校验码具体为:采用循环冗余检验算法,根据应用层数据生成的第一校验码和第二校验码,以便于快速的生成校验码,同时便于将校验码嵌入每个传输层数据包中。

在一个具体的实施方式中,两个通信设备之间建立通信连接具体为:两个通信设备之间通过蓝牙配对,建立蓝牙通信连接,以实现蓝牙通信连接的两个通信设备之间的数据准确且安全的传输。

第二方面,本发明还提供了一种数据通信系统,该数据通信系统包括两个通信设备;其中两个通信设备之间通信连接,其中一个通信设备为发送端,另一个通信设备为接收端。发送端的应用层用于对待发送数据进行封装组成至少一个应用层数据包,并将至少一个应用层数据包传入发送端的传输层;发送端的传输层还用于将至少一个应用层数据包组成至少一个传输层数据包,每个传输层数据包中均包含有校验位、和用于存储应用层数据的有效数据位,其中,应用层数据为至少一个应用层数据包的部分或全部数据,校验位用于存储根据应用层数据生成的第一校验码;发送端还用于依次将每个传输层数据包发送给接收端。接收端用于根据每个传输层数据包中的应用层数据,生成第二校验码,并比对第一校验码和第二校验码是否相同;接收端还用于在每个传输层数据包的比对结果均为相同时,根据每个传输层数据包中的应用层数据得到待发送数据。

在上述的方案中,通过将待发送数据依次经发送端的应用层和传输层进行封装,先后组成应用层数据包和传输层数据包,每增加一次封装均能够增加一定的私密性,以尽量减少出现数据劫持和用户资料泄露。且发送端还在每个传输层数据包中嵌入第一校验码信息;在接收端接收到每个传输层数据包时,能够根据每个传输层数据包中的应用层数据采用同样的算法生成第二校验码,并通过比对第一校验码和第二校验码是否相同,从而发现传输层数据包是否被劫持。且还在每个传输层数据包的比对结果均为相同时,才将每个传输层数据包中的应用层数据组包,从而使得到的数据和发送端的待发送数据一模一样,防止出现数据包丢失导致的数据不完整现象。且本发明示出的数据通信系统,相比传统的传输系统更安全,能够更大程度的避免数据劫持、数据泄露和数据丢失,从而使本发明示出的数据通信系统具有可靠性高、流程简单、可扩展性强的优点。

附图说明

图1为本发明实施例提供的一种数据通信方法的流程图;

图2为本发明实施例提供的一种应用程数据包的数据格式示意图;

图3为本发明实施例提供的一种传输层数据包的数据格式示意图;

图4为本发明实施例提供的另一种数据通信方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了方便理解本发明实施例提供的数据通信方法,下面首先说明一下本发明实施例提供的数据通信方法的应用场景,该数据通信方法应用于两个通信设备之间的传输传输。下面结合附图对该数据通信方法进行详细的叙述。

参考图1,本发明实施例提供的数据通信方法包括:

S10:两个通信设备之间建立通信连接,其中一个通信设备为发送端,另一个通信设备为接收端;

S20:发送端的应用层对待发送数据进行封装组成至少一个应用层数据包,并将至少一个应用层数据包传入发送端的传输层;

S30:发送端的传输层将至少一个应用层数据包组成至少一个传输层数据包,每个传输层数据包中均包含有校验位、和用于存储应用层数据的有效数据位,其中,应用层数据为至少一个应用层数据包的部分或全部数据,校验位用于存储根据应用层数据生成的第一校验码;

S40:发送端依次将每个传输层数据包发送给接收端;

S50:接收端根据每个传输层数据包中的应用层数据,生成第二校验码,并比对第一校验码和第二校验码是否相同;

S60:在每个传输层数据包的比对结果均为相同时,根据每个传输层数据包中的应用层数据得到待发送数据。

在上述的方案中,通过将待发送数据依次经发送端的应用层和传输层进行封装,先后组成应用层数据包和传输层数据包,每增加一次封装均能够增加一定的私密性,以尽量减少出现数据劫持和用户资料泄露。且发送端还在每个传输层数据包中嵌入第一校验码信息;在接收端接收到每个传输层数据包时,能够根据每个传输层数据包中的应用层数据采用同样的算法生成第二校验码,并通过比对第一校验码和第二校验码是否相同,从而发现传输层数据包是否被劫持。且还在每个传输层数据包的比对结果均为相同时,才将每个传输层数据包中的应用层数据组包,从而使得到的数据和发送端的待发送数据一模一样,防止出现数据包丢失导致的数据不完整现象。且本发明示出的数据通信方法,相比传统的传输方式更安全,能够更大程度的避免数据劫持、数据泄露和数据丢失,从而使本发明示出的数据通信方法具有可靠性高、流程简单、可扩展性强的优点。下面结合附图对上述各个步骤进行详细的介绍。

首先,参考图1,两个通信设备之间建立通信连接,其中一个通信设备作为数据的发送端,另一个通信设备为数据的接收端。两个通信设备之间传输的数据可以为诸如音频数据、视频数据等用户期待得到的数据,还可以为在进行通信过程中,其中一个通信设备向另一个通信设备反馈的响应信号数据。待发送数据具体可以为小数据指令,也可以为大文件。另外,发送端的待发送数据可以使用大端模式,即待发送数据的高字节保存在内存的低地址中,而待发送数据数据的低字节保存在内存的高地址中。

该两个通信设备可以为任何能够与外部的设备进行通信连接的终端设备,例如,其中一个通信设备可以为诸如但不限于智能手机、平板电脑、笔记本电脑、台式电脑等的终端设备,另一个通信设备可以为诸如但不限于蓝牙耳机、智能音箱、智能佩戴设备等。当然,两个通信设备中的任意一个通信设备除了和另外的一个通信设备通信连接之外,还可以与作为第三者的其他通信设备通信连接,即一个通信设备可以与多个通信设备通信连接。显然,通信连接的通信设备的个数并不在本数据通信方法的限定之内。只有两个通信设备之间需要进行数据传输,都可以使用本发明实施例提供的数据通信方法,在此过程中,其中一个通信设备作为数据的发送端,另一个通信设备作为数据的接收端。

在实现两个通信设备之间建立通信连接时,可以使两个通信设备之间通过蓝牙配对,建立蓝牙通信连接,以实现蓝牙通信连接的两个通信设备之间的数据准确且安全的传输。例如,以图4示出的一个通信设备为手机,另一个通信设备为手表的方式,说明手机与手表之间建立通信连接的具体步骤如下:a1)将手机、手表的蓝牙功能打开,将手机蓝牙设置为“所有人可见”或可被搜索或开放检测;a2)在手机中搜索蓝牙设备,查找到之后选中进行配对连接,手机输入手表中显示的配对码,输入确认后即可完成配对,配对后则成功建立通信连接。应当理解的是,实现两个通信设备之间的通信连接的方式并不限于上述示出的通过蓝牙连接的方式,除此之外,还可以采用其他的连接方式,例如可以采用WiFi通信连接的方式等。

接下来,参考图1,发送端的应用层对待发送数据进行封装组成至少一个应用层数据包,并将至少一个应用层数据包传入发送端的传输层。即在发送端的应用层在产生或调取出待发送数据之后,并非直接将该待发送数据传输给发送端的传输层,由发送端的传输层进行传输。而是增加对待发送数据进行封装,组成至少一个应用层数据包的步骤,从而给传输层传入的数据并未明文数据,而且按照应用层协议进行封装形成的至少一个应用层数据包。通过增加一次封装,能够增加一定的私密性,以尽量减少出现数据劫持和用户资料泄露。

在发送端的应用层具体对待发送数据进行封装组成至少一个应用层数据包时,可以先根据应用层协议,定义每个应用层数据包的数据格式。例如,参考图2,所定义的应用层数据包的数据格式可以包括:命令ID、键、值长度、值。其中,值也称为数据体,为待发送数据的部分或全部数据,在待发送数据的数据量较大,超过了应用层的最大传输单元(MaximumTransmission Unit,简称MTU)限制时,需要将待发送数据进行分包,组成多个应用层数据包进行发送。如果待发送数据的数据量较小,没有超过应用层的最大传输单元限制时,无需进行分包,将待发送数据封装到一个应用层数据包即可。其中的值长度为值的字节长度,表征值的数据量大小。其中的键为值对应的键信息,命令ID为值对应的命令ID信息,以区分不同的应用层数据包,同时也给每个应用层数据包表明不同命令类型的数据类型。之后,由发送端的应用层根据应用层数据包的数据格式,将待发送数据封装组成至少一个应用层数据包。再将至少一个应用层数据包传入发送端的传输层。通过修改应用层协议,给每个应用层数据包定义一个统一的数据格式,建立一套有系统的数据通信协议,使每个应用层数据包均具有统一的标准,定义了每个应用层数据包的数据边界,防止出现数据粘包导致的数据不准确现象。

下面,同样以图4示出的两个通信设备为手机和手表为例,说明手机如何对待发送数据进行封装。封装步骤如下:b1)通过应用层协议,定义每个应用层数据包的数据格式如图2所示,包括命令ID、键、值长度以及值,这些数据组成一个应用层数据包。一个应用层数据包大小为应用层的最大传输单元。当值为空时,值长度为0,值不发送;只有在值不为空时,值长度不为0时,值才发送。b2)如果发送数据大小超过应用层最大传输单元限制,需要进行分包,每次读取数据的长度为:应用层最大传输单元减去命令ID、键、值长度占用空间。按顺序循环读取数据,传入应用层数据包的值中,直到待发送数据读取完毕,就将待发送数据按照应用层协议分成了若干个数据包。b3)如果待发送数据大小未超过应用层最大传输单元的限制,直接将待发送数据包传入一个应用层数据包的值中,将待发送数据按照应用层协议组成一个应用层数据包。

接下来,参考图1,发送端的传输层将至少一个应用层数据包组成至少一个传输层数据包,即由发送端的传输层再次对至少一个应用层数据包进行封装,能够增加一定的私密性,以尽量减少出现数据劫持和用户资料泄露。参考图3,在每个传输层数据包中均包含有校验位、和用于存储应用层数据的有效数据位。其中,应用层数据为至少一个应用层数据包的部分或全部数据,即在至少一个应用层数据包的数据量较大时,超过了传输层的最大传输单元限制时,需要将至少一个应用层数据包进行分包,组成多个传输层数据包进行发送。如果至少一个应用层数据包的数据量较小,没有超过传输层的最大传输单元限制时,无需进行分包,将至少一个应用层数据包封装到一个传输层数据包即可。其中的校验位用于存储根据应用层数据生成的第一校验码,即发送端还在每个传输层数据包中嵌入第一校验码信息,以便于后续接收端在接收到每个传输层数据包时,能够通过第一校验码信息,判断每个传输层数据包是否被劫持。

在发送端的传输层将至少一个应用层数据包组成至少一个传输层数据包时,发送端可以先根据传输层协议,定义每个传输层数据包的数据格式。参考图3,传输层协议所定义的每个传输层数据包的数据格式包括:传输层头部位和上述的应用层数据位,即在应用层数据位的前端增加了传输层头部位。其中的校验位位于传输层头部位中。在具体根据应用层数据生成的第一校验码时,可以采用循环冗余检验算法生成第一校验码,例如可以采用CRC16生成第一校验码,以便于快速的生成校验码,同时便于将校验码嵌入每个传输层数据包中。

另外,传输层头部位还可以包括:消息ID位、保留位、错误位、应答位、版本号位、应用层数据长度位、总分片数位、当前分片数位。其中的消息ID位用于存储每个传输层数据包中的应用层数据对应的消息ID信息;其中的保留位用于存储每个传输层数据包中的应用层数据对应的保留信息;其中的错误位和应答位可以作为后续存储和接收由接收端反馈的响应信号的存储位;其中的版本号位可以作为标识不同版本的传输层协议的信息;其中的应用层数据长度位可以标识应用层数据位的字节长度;其中的总分片数位和当前分片数位可以标识不同的传输层数据包在待发送数据中的具体数据段的信息。之后,由发送端的传输层根据传输层数据包的数据格式,将至少一个应用层数据包组成至少一个传输层数据包。通过修改传输层协议,给每个传输层数据包定义一个统一的数据格式,建立一套有系统的数据通信协议,使每个传输层数据包均具有统一的标准,定义了每个传输层数据包的数据边界,防止出现数据粘包导致的数据不准确现象。同时还在传输层头部位嵌入其他的关键信息,从而便于后续进行组包还原出待发送数据。

下面,同样以图4示出的两个通信设备为手机和手表为例,说明手机如何对至少一个应用层数据包进行封装组成至少以传输层数据包。在经过步骤b1~b3之后,生成了一个或者若干个应用层数据包,依次将应用层数据包传入发送端的传输层进行封装。封装步骤如下:c1)传输层协议定义每个传输层数据包的数据格式如图3,每个传输层数据包包含传输层头部位和应用层数据位。其中,传输层头部位包含:消息ID位、保留位、错误位、应答位、版本号位、应用层数据长度位、校验位、总分片数位、当前分片数位,这些数据组成了一个传输层数据包,一个传输层数据包大小为传输层的最大传输单元。c2)如果传输层头部加上应用层数据大小超过传输层最大传输单元限制,需要进行分包,每次读取的至少一个应用层数据包长度为:传输层最大传输单元减去传输层头部占用空间。按顺序循环读取步骤b1~b3生成的应用层数据包,并传入传输层数据包的应用层数据位中,依次将所有的应用层数据包按照传输层协议分成了若干个传输层数据包。c3)如果传输层头部加上应用层数据大小未超过传输层最大传输单元限制,直接将所有的应用层数据包传入一个传输层数据包的应用层数据位中,就将应用层数据包按照传输层协议组成一个传输层数据包。

接下来,参考图1,发送端依次将每个传输层数据包发送给接收端,即每次只给接收端发送一个传输层数据包。以图4示出的两个通信设备分别为手机和手表为例,经过上述步骤c1~c3,生成了一个或者若干个传输层数据包,手机依次将这些传输层数据包通过前述步骤建立的通信连接链路发送到手表。其中手机每发送一个传输层数据包,该传输层数据包的头部位都包含消息ID位、保留位、错误位、应答位、版本号、应用层数据长度位、校验位、实际的总分片数位和当前分片数位。其中,应答位和错误位都置为0,将该传输层数据包中的应用层数据采用CRC16生成第一校验码,置于校验位,应用层数据为需要发送的传输层数据包。

接下来,参考图1,接收端每接收到一个传输层数据包,均根据该传输层数据包中的应用层数据,生成第二校验码,并比对第一校验码和第二校验码是否相同。从而发现传输层数据包是否被劫持。在接收端根据该传输层数据包中的应用层数据生成第二校验码时,可以采用循环冗余检验算法,根据应用层数据生成第二校验码,以便于快速的生成第二校验码。

另外,在比对结果为不相同时,接收端可以给发送端反馈数据错误响应,使发送端重新发送该传输层数据包,直到第一校验码和第二校验码尽可能相同为止。但是,在重新发送的传输层数据包的比对结果仍为不相同时,发送端再次重新发送该传输层数据包。如果发送端在发送该传输层数据包的次数不大于n次内,使该传输层数据包的比对结果相同,则发送端依次将下一个传输层数据包发送给接收端。如果发送端在发送该传输层数据包的次数为n次时,该传输层数据包的比对结果仍为不相同,则发送端停止发送该传输层数据包和后面的传输层数据包,并向接收端发送表征待发送数据传输失败的信息。通过在发送端针对每个传输层数据包嵌入的第一校验码和接收端生成的第二校验码不相同时,对丢包的传输层数据包进行重传,避免数据丢包,保证可靠的数据传输。且还增加限次重复机制,不仅能够避免陷入针对一个传输层数据包重复发送的死循环。而且还能够针对同一个传输层数据包在n次发送后都不能够使比对结果相同时,终止针对该待发送数据的其他传输层数据包的继续发送,直接通知接收端待发送数据传输失败,从而能够避免错误的待发送数据被传输,还能够在发送待发送数据不能够被正确传输时,即时终止发送,避免传输资源被浪费。

在比对结果为不相同时,接收端具体给发送端反馈数据错误响应时,接收端可以在比对结果为不相同时,将该传输层数据包的传输层头部位中的错误位置为1,应答位置为1。之后,接收端采用数据通信方法,将该传输层头部位的数据作为待发送数据,传输给发送端。即接收端在将反馈响应信号发送给发送端的过程中,其角色进行了转变,由接收端调整为了发送端,同样可以采用本发明示出的数据通信方法将反馈响应信号发送给发送端。接收端通过根据两个校验码的比对结果,在传输层数据包的头部位的错误位和应答位分别置为不同的值,并通过同样的数据通信方法反馈给发送端,从而既能够反馈较为准确的反馈响应,又能够防止反馈信号被劫持泄露等问题。

当然,接收端在比对根据该传输层数据包中的应用层数据所生成的第二校验码与第一校验码相同时,也可以给发送端反馈数据正确响应,使发送端继续发送下一个传输层数据包,直到至少一个传输层数据包全部发送完成。通过增加数据包确认机制,从而实现发送端依次将每个传输层数据包完整的传输给接收端。其中,接收端在比对第二校验码与第一校验码相同时,在给发送端反馈数据正确响应可以采用如下方式:将该传输层数据包的传输层头部位中的错误位置为0,应答位置为1。之后,接收端采用如上示出的数据通信方法,将该传输层头部位的数据作为待发送数据,传输给发送端。即接收端在将反馈响应信号发送给发送端的过程中,其角色进行了转变,由接收端调整为了发送端,同样可以采用本发明示出的数据通信方法将反馈响应信号发送给发送端。

下面同样以图4示出的手机和手表之间的数据通信方式为例进行说明,需要解释的是,图4中的有效数据是指本发明实施例中的应用层数据。在手表进行应用层数据的校验时,校验过程为:在上述步骤中得到了一个传输层数据包的应用层数据,将应用层数据采用CRC16生成第二校验码。拿第二校验码与接收到传输层数据包的校验位中的第一校验码进行比对。如果相同,表示传输正确;如果不相同,表示数据错误。数据正确时,手表反馈给手机表征接收成功的响应信号,此反馈的响应信号的传输层头部中的错误位置为0、应答位置为1。在数据错误时,手表反馈给手机表征接收错误的响应信号,此反馈的响应信号的传输层头部中的错误位置为1、应答位置为1。手表向手机反馈的响应信号的发送可以同样可以采取前述示出的手机向手表发送的数据通信方法。

在手机接收到手表反馈的响应信号后,分别得到每个传输层数据包的头部位所承载的:消息ID、保留位、错误位、应答位、版本号、应用层数据长度、校验位、总分片数、当前分片数信息。在应答位为1、错误位为0时,解析到该响应信号表示手表数据接收正常,手机端则继续发送下一个传输层数据包,一直到所有的传输层数据包发送完毕。在应答位为1、错误位为1时,解析到该响应信号表示数据接收异常,需要重新发送该传输层数据包。

接下来,参考图1,在每个传输层数据包的比对结果均为相同时,根据每个传输层数据包中的应用层数据得到待发送数据。即在每个传输层数据包的比对结果均为相同时,才根据接收的传输层数据包中的应用层数据,得到待发送数据。例如,在针对该待发送数据生成的应用层数据包的个数为一个,且传输层数据包的个数也为一个时,可以直接将该一个传输层数据包中的应用层数据读取出来,得到待发送数据。如果针对该待发送数据生成的应用层数据包的个数为两个或两个以上时,无论传输层数据包的个数为一个还是两个以上,都需要将传输层数据包中的应用层数据读取出来之后,进行组包,得到待发送数据。通过将每个传输层数据包中的应用层数据组包,从而使得到的数据和发送端的待发送数据一模一样,防止出现数据包丢失导致的数据不完整现象。在具体对每个传输层数据包中的应用层数据进行组包得到待发送数据时,可以先读取每个传输层数据包中的应用层数据、以及存储在总分片数位和当前分片数位中的总分片数和当前分片数。之后,根据总分片数、当前分片数,对每个传输层数据包中的应用层数据按顺序组装,得到待发送数据。具体的,需要先对每个传输层数据包按顺序组装形成的应用层数据进行处理,将应用层数据中包含在不同的应用层数据包中的数据读取出来,并按照应用层协议进行组包,得到待发送数据。通过根据传输层头部的总分片数和当前分片数信息,便于快速且准确的将多个传输层数据包中的应用层数据组包还原出待发送数据。

同样以图4示出的手机与手表之间的数据通信方式为例进行说明。在手表进行应用层数据组包时,组包过程为:从前述步骤中得到了每个传输层数据包中应用层数据、以及该应用层数据对应的总分片数、当前分片数;之后,将每次接收到的传输层数据包中的应用层数据根据当前分片数和总分片数,按顺序将所有的传输层数据包中的应用层数据组装起来,即可还原得到手机发过来的待发送数据的完整数据。

通过将待发送数据依次经发送端的应用层和传输层进行封装,先后组成应用层数据包和传输层数据包,每增加一次封装均能够增加一定的私密性,以尽量减少出现数据劫持和用户资料泄露。且发送端还在每个传输层数据包中嵌入第一校验码信息;在接收端接收到每个传输层数据包时,能够根据每个传输层数据包中的应用层数据采用同样的算法生成第二校验码,并通过比对第一校验码和第二校验码是否相同,从而发现传输层数据包是否被劫持。且还在每个传输层数据包的比对结果均为相同时,才将每个传输层数据包中的应用层数据组包,从而使得到的数据和发送端的待发送数据一模一样,防止出现数据包丢失导致的数据不完整现象。且本发明示出的数据通信方法,相比传统的传输方式更安全,能够更大程度的避免数据劫持、数据泄露和数据丢失,从而使本发明示出的数据通信方法具有可靠性高、流程简单、可扩展性强的优点。

另外,本发明实施例还提供了一种数据通信系统,该数据通信系统包括两个通信设备;其中两个通信设备之间通信连接,其中一个通信设备为发送端,另一个通信设备为接收端。发送端的应用层用于对待发送数据进行封装组成至少一个应用层数据包,并将至少一个应用层数据包传入发送端的传输层;发送端的传输层还用于将至少一个应用层数据包组成至少一个传输层数据包,每个传输层数据包中均包含有校验位、和用于存储应用层数据的有效数据位,其中,应用层数据为至少一个应用层数据包的部分或全部数据,校验位用于存储根据应用层数据生成的第一校验码;发送端还用于依次将每个传输层数据包发送给接收端。接收端用于根据每个传输层数据包中的应用层数据,生成第二校验码,并比对第一校验码和第二校验码是否相同;接收端还用于在每个传输层数据包的比对结果均为相同时,根据每个传输层数据包中的应用层数据得到待发送数据。每个通信设备的具体操作方式参考前述数据通信方法中示出的步骤,在此不再赘述。通过将待发送数据依次经发送端的应用层和传输层进行封装,先后组成应用层数据包和传输层数据包,每增加一次封装均能够增加一定的私密性,以尽量减少出现数据劫持和用户资料泄露。且发送端还在每个传输层数据包中嵌入第一校验码信息;在接收端接收到每个传输层数据包时,能够根据每个传输层数据包中的应用层数据采用同样的算法生成第二校验码,并通过比对第一校验码和第二校验码是否相同,从而发现传输层数据包是否被劫持。且还在每个传输层数据包的比对结果均为相同时,才将每个传输层数据包中的应用层数据组包,从而使得到的数据和发送端的待发送数据一模一样,防止出现数据包丢失导致的数据不完整现象。且本发明示出的数据通信系统,相比传统的传输系统更安全,能够更大程度的避免数据劫持、数据泄露和数据丢失,从而使本发明示出的数据通信系统具有可靠性高、流程简单、可扩展性强的优点。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

技术分类

06120115914969