用于串行通信系统的通信方法及设备与流程

文档序号:13882413阅读:283来源:国知局
用于串行通信系统的通信方法及设备与流程

本申请涉及信息技术领域,尤其涉及一种用于串行通信系统的通信方法及设备。



背景技术:

mqtt(messagequeuingtelemetrytransport,消息队列遥测传输)、xmpp((extensiblemessagingandpresenceprotocol,可扩展消息与存在协议)、dds(datadistributionserviceforreal-timesystems,面向实时系统的数据分布服务)等常用的物联网协议,都是建立在tcp/ip协议基础之上的通信协议,在不支持tcp/ip协议的8位/16位的单片机上无法使用。而8位/16位单片机相较于其他的处理器,具有价格便宜,稳定性高,省电等优点,因此被工业和物联网行业大量采用。

目前,8位/16位的单片机的数据通信通常采用串行通信,例如uart(universalasynchronousreceiver/transmitter,通用异步收发传输器)建立连接,然后向各自发送不同的指令完成通信。在常规的串行通信系统中,各个单片机之间的拓扑结构如图1所示,在进行通信时,每个单片机设备可以与其它任意一个单片机设备连接并进行通信。由于在串行通信的场景下,一个设备只能同时接收或者同时发送一个数据包,若接收或者发送集中于某些设备中,将会造成收发队列的拥堵,使得通信延时增加。例如设备b、c、d同时向设备a发送数据包,此时设备a只能逐一接收。设备a在接收设备b的数据包时,设备c和设备d只能等待,并且无法向其它设备发送数据包,由此容易造成各个设备收发队列的拥堵,使得通信延时较高。

申请内容

本申请的一个目的是提供一种用于串行通信系统的通信方法及设备,用以解决现有技术容易造成数据收发队列拥堵、通信延时较高的问题。

为实现上述目的,本申请提供了一种用于串行通信系统的通信方法,其中,所述串行通信系统包括多个通信设备,所述多个通信设备组成环形拓扑结构,相邻通信设备之间通过一条数据通路建立连接,所述方法包括:

第一通信设备通过未被占用的数据通路将数据包发送至第二通信设备。

进一步地,第一通信设备通过未被占用的数据通路将数据包发送至第二通信设备之前,还包括:

所述第一通信设备根据目标通信设备的公钥生成验证令牌,其中,所述目标通信设备为数据包的发送目标;

所述第一通信设备生成包含验证令牌和数据内容的数据包,其中,所述数据包包含验证令牌以及数据内容,所述数据内容在所述验证令牌被所述目标通信设备的私钥解密后可读取。

进一步地,所述方法还包括:

所述第一通信设备在生成包含验证令牌和数据内容的数据包时,对所述数据内容进行加密。

本申请提供的另一种用于串行通信系统的通信方法,所述串行通信系统包括多个通信设备,所述多个通信设备组成环形拓扑结构,相邻通信设备之间通过一条数据通路建立连接,所述方法包括:

第一通信设备通过未被占用的数据通路从第三通信设备接收数据包;

所述第一通信设备根据所述数据包判断是否满足预设条件;

在判断结果为是时,所述第一通信设备读取所述数据包中的数据内容。

本申请提供的另一种用于串行通信系统的通信方法,所述串行通信系统包括多个通信设备,所述多个通信设备组成环形拓扑结构,相邻通信设备之间通过一条数据通路建立连接,所述方法包括:

第一通信设备通过未被占用的数据通路从第三通信设备接收数据包;

所述第一通信设备根据所述数据包判断是否满足预设条件;

在判断结果为否时,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备。

进一步地,在判断结果为否时,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备,包括:

在判断结果为否,且所述第一通信设备不是所述数据包的源通信设备时,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备,其中,所述源通信设备为生成所述数据包的通信设备。

进一步地,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备,包括:

若所述另一数据通路当前被占用,所述第一通信设备等待该数据通路未被占用后,将所述数据包通过所述另一数据通路发送至第二通信设备。

进一步地,所述预设条件包括:

所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌解密成功,其中,所述数据包包含验证令牌以及数据内容,所述验证令牌根据目标通信设备的公钥密生成。

本申请提供的一种用于串行通信系统的第一通信设备,其中,所述串行通信系统包括多个通信设备,所述多个通信设备组成环形拓扑结构,相邻通信设备之间通过一条数据通路建立连接,第一通信设备包括:

发送装置,用于通过未被占用的数据通路将数据包发送至第二通信设备。

进一步地,所述第一通信设备,还包括:

生成装置,用于在通过未被占用的数据通路将数据包发送至第二通信设备之前,根据目标通信设备的公钥生成验证令牌,其中,所述目标通信设备为数据包的发送目标;以及生成包含验证令牌和数据内容的数据包,其中,所述数据内容在所述验证令牌被所述目标通信设备的私钥解密后可读取。

进一步地,所述生成装置,还用于在生成包含验证令牌和数据内容的数据包时,对所述数据内容进行加密。

本申请提供的另一种用于串行通信系统的第一通信设备,所述串行通信系统包括多个通信设备,所述多个通信设备组成环形拓扑结构,相邻通信设备之间通过一条数据通路建立连接,第一通信设备包括:

接收装置,通过未被占用的数据通路从第三通信设备接收数据包;

判断装置,用于根据所述数据包判断是否满足预设条件;

数据获取装置,用于在判断结果为是时,读取所述数据包中的数据内容。

本申请提供的另一种用于串行通信系统的第一通信设备,所述串行通信系统包括多个通信设备,所述多个通信设备组成环形拓扑结构,相邻通信设备之间通过一条数据通路建立连接,第一通信设备包括:

接收装置,通过未被占用的数据通路从第三通信设备接收数据包;

判断装置,用于根据所述数据包判断是否满足预设条件;

发送装置,用于在判断结果为否时,将所述数据包通过另一数据通路发送至第二通信设备。

进一步地,所述发送装置,用于在判断结果为否,且所述第一通信设备不是所述数据包的源通信设备时,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备,其中,所述源通信设备为生成所述数据包的通信设备。

进一步地,所述发送装置,用于在所述另一数据通路当前被占用时,等待所述另一数据通路未被占用后,将所述数据包通过该数据通路发送至第二通信设备。

进一步地,所述预设条件包括:

所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌解密成功,其中,所述数据包包含验证令牌以及数据内容,所述验证令牌根据目标通信设备的公钥密生成。

本实施例提供的一种用于串行通信系统的第一通信设备,所述第一通信设备包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:通过未被占用的数据通路将数据包发送至第二通信设备。

本实施例提供的一种用于串行通信系统的第一通信设备,所述第一通信设备包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:通过未被占用的数据通路从第三通信设备接收数据包;根据所述数据包判断是否满足预设条件;以及在判断结果为是时,所述第一通信设备读取所述数据包中的数据内容。

本实施例提供的一种用于串行通信系统的第一通信设备,所述第一通信设备包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:通过未被占用的数据通路从第三通信设备接收数据包;根据所述数据包判断是否满足预设条件;以及在判断结果为否时,将所述数据包通过另一数据通路发送至第二通信设备。

与现有技术相比,本申请改变了串行通信系统中各个通信设备之间连接方式,采用闭环的环形拓扑结构,使得每个通信设备仅与其它两个通信设备建立连接,每个通信设备在发送数据时,通过一条未被占用的数据通路向相邻两个通信设备中的一个发送,而不会向串行通信系统中的其它通信设备发送,由此避免同一时间内数据的接收或者发送集中于某些特定的通信设备,减少收发队列拥堵的可能性,能够有效降低通信延时。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为现有串行通信系统中各个设备之间的拓扑结构图;

图2为本申请实施例所提供的方案中串行通信系统各个设备之间的拓扑结构图;

图3为通信设备通过轮询的方式选择用于发送数据包的数据通路的处理流程图;

图4为本申请实施例提供了用于串行通信系统的通信方法的处理流程图;

图5为本申请实施例中多个通信设备之间进行通信的交互示意图;

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

本申请实施例提供一种用于串行通信系统的通信方法,该通信方法适用的串行通信系统的结构如图2所示,包括多个通信设备,所述多个通信设备组成环形拓扑结构,相邻通信设备之间通过一条数据通路建立连接。为简明起见,图中示出的通信设备仅用于对方案的原理进行说明,其数量可能小于实际场景中串行通信系统中通信设备的数量,但这种省略无疑是以不会影响对本发明进行清楚、充分的公开为前提的。

为便于说明本方案的原理,本实施例中选取所述串行通信系统中的任意一个通信设备作为第一通信设备,并且将与所述第一通信设备相邻的两个通信设备分别作为第二通信设备以及第三通信设备。由于所述第一、第二和第三通信设备仅用于表示各个通信设备在通信过程中的不同功能,因此所述串行通信系统中,任意通信设备及其相邻的通信设备均可以作为第一、第二和第三通信设备。

对于图2所示的串行通信系统,可以将通信设备a作为第一通信设备。所述第二通信设备是指接收所述第一通信设备发送的数据包的相邻通信设备,由于该串行通信系统采用了环形拓扑结构,因此对于通信设备a,相应的第二通信设备可以是通信设备b或者通信设备e。若通信设备a通过数据通路ab向通信设备b发送数据包,则所述通信设备b即为对应本次通信过程的第二通信设备。所述第三通信设备是指向所述第一通信设备发送数据包的相邻通信设备,若通信设备e通过数据通路ae向通信设备a发送数据包,则所述通信设备e即为对应本次通信过程的第三通信设备。

对于任一通信设备,在所述串行通信系统中至少可以实现三种形式的通信:1、发送自己生成的数据包;2、接收数据包并读取数据内容;3、转发数据包。

即第一种用于串行通信系统的通信方法,包括:

第一通信设备通过未被占用的数据通路将数据包发送至第二通信设备。若所述数据包由第一通信设备生成,在发送该数据包时,所述第一通信设备会选择其中一个未被占用的数据通路进行发送。以通信设备a为例,通信设备a在发送自己生成的数据包时,可以采用轮询的方式确定哪条数据通路未被占用,例如根据预设的轮询规则,先查询数据通路ab是否被占用,若未被占用,则通过数据通路ab向通信设备b发送该数据包;若数据通路ab当前被占用,则查询数据通路ae当前是否被占用,若数据通路ae未被占用,则通过数据通路ae向通信设备e发送数据包,否则重复上述过程,具体处理流程可参见图3。

对于接收到数据包的第二通信设备,则可以根据数据包的具体内容选择将所述数据包进行转发或者读取其中的数据内容,具体处理方式则需要根据数据包内包含的信息来判断。因此第一通信设备在生成数据包时,除了要将作为主体的数据内容写入之外,还需要写入特定的标记信息,以使接收到的通信设备能够据此判断是读取该数据包中的数据内容,还是直接转发该数据包。

作为一种优选的实施方式,第一通信设备在通过未被占用的数据通路将数据包发送至第二通信设备之前,还包括:根据目标通信设备的公钥生成验证令牌,然后生成包含验证令牌和数据内容的数据包。其中,所述目标通信设备为数据包的发送目标,例如通信设备a生成数据包是用于向通信设备c告知某一信息,因此该数据包最终需要被发送至通信设备c,则所述数据包的目标通信设备即为通信设备c。此外,所述数据内容在所述验证令牌被所述目标通信设备的私钥解密后可读取。

在实施例中,所述验证令牌即为特定的标记信息,其加密解密采用公钥和私钥的方式,使得接收到该数据包的第二通信设备能够判断读取该数据包中的数据内容,还是直接转发该数据包。第二通信设备在接收数据包时,优先解析所述验证令牌的内容,尝试用自己的私钥对其进行解密,若解密失败,则表示目标通信设备的公钥与其私钥是不匹配的,即数据包的目标通信设备不是该第二通信设备,因此无需再继续解析数据包的其余部分,直接转发该数据包即可,由此提高了处理的效率。若解密成功,则表示目标通信设备的公钥与其私钥是匹配的,即该数据包的目标通信设备是第二通信设备,此时可以继续解析其余部分,读取数据内容。

在具体实施过程中,为了保证在串行通信过程中验证令牌的内容会优先被接收并解析,在数据包的数据结构中,所述验证令牌的序列位置相较于数据内容更为靠前,即所述第二通信设备在接收数据包时,会首先接收到所述验证令牌的字节。此外,由于数据包中的数据内容需要在所述验证令牌被所述目标通信设备的私钥解密后,才可读取,因此对于无法对验证令牌进行解密的通信设备无法读取到数据包中的数据内容,由此提高了数据的安全性,可以避免篡改数据内容和恶意抓包等。

用于加密生成验证令牌的公钥以及用于解密所述验证令牌的私钥可以在构建所述串行通信系统时统一分配。具体地,所述加密令牌可以采用目标通信设备的公钥对一组随机字符串进行加密生成,在解密时,仅需要返回解密成功或者解密失败的状态,而无需获取具体解密得到的该随机字符串。作为一种可行的实施方式,每个通信设备的公钥可以是由一组相同的字符串结合每个通信设备的设备id组成,而每个通信设备的私钥则是与所述公钥匹配的一组字符串。由某一通信设备的公钥加密的信息只能由该通信设备的私钥解密,反之亦然。由此保证了数据的安全性,并且使得接收到数据包的通信设备可以通过是否能够完成解密,来判断其是否为该数据包的目标通信设备,进而选择获取数据内容还是转发该数据包。

优选地,第一通信设备在生成数据包时,也可以同时对数据内容进行加密,以进一步提高数据传输的安全性。对于数据内容的加密方式可以采用适用于该串行通信场景的任意方式,例如字符串混淆加密、公钥私钥加密等。

为实现接收数据包并读取数据内容,本申请实施例提供了第二种用于串行通信系统的通信方法,该方法的处理流程包含图4所示的部分内容,具体包括以下步骤:

步骤s101,第一通信设备通过未被占用的数据通路从第三通信设备接收数据包;

步骤s102,所述第一通信设备根据所述数据包判断是否满足预设条件;

步骤s103,在判断结果为是时,所述第一通信设备读取所述数据包中的数据内容。

在该方案中,所述数据包可以由第三通信设备生成,并通过未被占用的数据通路向所述第一通信设备发送,也可以是由其它通信设备生成,并经由所述第三通信设备转发至所述第一通信设备。

所述预设条件用于确定接收到数据包的通信设备是否为该数据包的目标通信设备,若判断结果为是,则表示接收到数据包的通信设备即为该数据包的目标通信设备,由此读取数据包中的数据内容。所述预设条件具体可以采用在所述数据包中加入特定的标记信息的方式,使得接收到数据包的通信设备能够继续数据包中的该部分标记信息进行判断。为实现上述目的,所述标记信息可以直接采用目标通信设备的目标地址信息,接收设备在接收到数据包时,可以通过比较本机的地址信息与数据包中的目标地址信息,来确定是否满足预设条件。但是,由于该方式无法对数据包中的数据内容进行保护,数据安全性相对较差。

在此,本实施例提供的一种较为可靠的标记信息是:使用目标通信设备的公钥加密生成的验证令牌。由此,所述预设条件具体为:所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌解密成功,其中,所述数据包包含验证令牌以及数据内容,所述验证令牌根据目标通信设备的公钥密生成。所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌进行解密,由于所述验证令牌是采用目标通信设备的公钥进行加密生成,因此若解密成功,则表示所述第一通信设备即为目标通信设备。

相应地,所述数据包在生成时,相应的通信设备对其中的数据内容进行了加密,则可以采用对应的解密方式对数据内容进行解密,从而读取数据内容。

为实现数据包的转发,本申请实施例提供了第三种用于串行通信系统的通信方法,该方的处理流程包含图4所示的部分内容,具体包括以下步骤:

步骤s101,第一通信设备通过未被占用的数据通路从第三通信设备接收数据包;

步骤s102,所述第一通信设备根据所述数据包判断是否满足预设条件;

步骤s104,在判断结果为否时,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备。

在此,所述预设条件与前述接收数据包并读取数据内容时的相同,此处不再重复说明。在收到数据包后,所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌进行解密,由于所述验证令牌是采用目标通信设备的公钥进行加密生成,因此若解密不成功,则表示所述第一通信设备不是该数据包的目标通信设备,需要继续向其它通信设备发送,以使该数据包被发送至目标通信设备。

所述步骤s104中,所述另一数据通路是相对于第一通信设备接收数据包的数据通路而言的。与主动发送生成的数据包不同,在转发数据包时第一通信设备不会选择接收该数据包的数据通路,而必然会选择另一条数据通路,以保证数据包不会被发送回第三通信设备。为此,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备时,若所述另一数据通路当前被占用,所述第一通信设备等待该数据通路未被占用后,将所述数据包通过该数据通路发送至第二通信设备。以图2所示的串行通信系统为例,若通信设备a通过数据通路ae接收到来自通信设备e的数据包后,确定不满足预设条件,则一定会通过另一条数据通路ab向通信设备b发送该数据包。

在实际场景中,由于该串行通信系统采用了闭环的环形结构,因此有可能存在以下情形。通信设备a生成一个目标通信设备为c的数据包后,经由通信设备b向通信设备c转发该数据包,可能由于生成或者发送过程中的错误,导致通信设备c无法解密该数据包中的验证令牌,此时通信设备c会继续向通信设备d进行转发,进而经由通信设备e发回给通信设备a。此时,通信设备a若继续发送,则会循环前述的过程,由此将会导致通信资源的浪费,为避免上述问题,所述步骤s104,具体包括:在判断结果为否,且所述第一通信设备不是所述数据包的源通信设备时,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备。

所述源通信设备即为生成所述数据包的通信设备,所述源通信设备的信息可以在生成数据包时写入,由此在第一通信设备在根据数据包的内容确定不满足预设条件时,将会继续对数据包的源通信设备进行检查,若本通信设备是生成该数据包的源通信设备,则表示该数据包已经被发送过一个循环,该数据包的可能有误,此时可以选择丢弃该数据包。若本通信设备不是生成该数据包的源通信设备,则表示该数据包可能还未被发送到目标通信设备,继续转发该数据包。

基于上述方案,若通信设备a需要向与其不相邻的通信设备c发送数据包,可以通过数据通路ae向通信设备e发送该数据包,并由通信设备e通过数据通路de向通信设备d转发后,再由通信设备d通过数据通路cd向通信设备c发送。此外,通信设备a也可以通过数据通路ab向通信设备b发送数据包,并由通信设备b通过数据通路bc向通信设备c转发。实际场景中,通信设备a第一次发送数据包的方向,由该通信设备的具体发送策略决定,例如采用轮询的方式查询当前哪条数据通路未被占用,并通过未被占用的数据通路进行发送。

上述方案改变了现有串行通信系统中各个通信设备之间连接方式,采用闭环的环形拓扑结构,使得每个通信设备仅与其它两个通信设备建立连接,每个通信设备在发送数据时,通过一条未被占用的数据通路向相邻两个通信设备中的一个发送,而不会向串行通信系统中的其它通信设备发送。由此,可以将不相邻的两个通信设备之间的直接通信,分散至多个通信设备,可以避免同一时间内数据的接收或者发送集中于某些特定的通信设备,减少收发队列拥堵的可能性,能够有效降低通信延时。

以下结合图2所示的串行通信系统中的多个通信设备之间的通信过程,对本方案进行详细说明,该系统中所述通信设备为单片机,各个通信设备之间使用uart进行通信,且可以实现相同的通信协议。以通信设备a生成一目标通信设备为通信设备c的数据包并进行发送的通信过程为例,具体交互过程如图5所示,包括:

步骤s501,通信设备a生成数据包。在该过程中,使用通信设备c的公钥对一组随机字符串进行加密,生成验证令牌,并将该验证令牌和数据内容一起打包为数据包。此外,该数据包中还可以包含目标通信设备(即通信设备c)和源通信设备(即通信设备a)的相关信息。

步骤s502,通信设备a通过轮询的方式查询当前未被占用的数据通路,确定数据通路ab当前未被占用。

步骤s503,通信设备a通过数据通路ab向通信设备b发送数据包。

步骤s504,通信设备b通过数据通路ab接收到数据包,并先对数据包中的验证令牌进行解密。在解密时,使用通信设备b的私钥,由于通信设备b的私钥无法解密通信设备c的公钥加密的数据,因此无法解密成功。

步骤s505,通信设备b判断自己是否为该数据包的源通信设备。由于该数据包的源通信设备为通信设备a,此时通信设备b可以确定需要继续转发该数据包。

步骤s506,通信设备b通过另一条数据通路ac将数据包转发至通信设备c。

步骤s507,通信设备c通过数据通路ac接收到数据包,并先对数据包中的验证令牌进行解密。在解密时,使用通信设备c的私钥,由于通信设备c的私钥能够解密通信设备c的公钥加密的数据,因此能够成功对验证令牌进行解密。

步骤s508,通信设备c继续解析数据包,读取其中的数据内容,由此完成一次完整的通信过程。

基于同一发明构思,本申请实施例中还提供了多种用于串行通信系统的通信设备,对应的方法是前述实施例中的用于串行通信系统的通信方法,并且其解决问题的原理与所述通信方法相似,因此其所适用的串行通信系统可以参见图2所示的系统,此处不再重复说明。

基于上述串行通信系统,本申请实例提供了一种用于串行通信系统的第一通信设备,以实现发送自己生成的数据包,所述第一通信设备可以是所述串行通信系统中的任一通信设备,该第一通信设备至少包括:发送装置,用于通过未被占用的数据通路将数据包发送至第二通信设备。

若所述数据包由第一通信设备生成,在发送该数据包时,所述第一通信设备会选择其中一个未被占用的数据通路进行发送。以通信设备a为例,通信设备a在发送自己生成的数据包时,可以采用轮询的方式确定哪条数据通路未被占用,例如根据预设的轮询规则,先查询数据通路ab是否被占用,若未被占用,则通过数据通路ab向通信设备b发送该数据包;若数据通路ab当前被占用,则查询数据通路ae当前是否被占用,若数据通路ae未被占用,则通过数据通路ae向通信设备e发送数据包,否则重复上述过程,具体处理流程可参见图3。

对于接收到数据包的第二通信设备,则可以根据数据包的具体内容选择将所述数据包进行转发或者读取其中的数据内容,具体处理方式则需要根据数据包内包含的信息来判断。因此第一通信设备在生成数据包时,除了要将作为主体的数据内容写入之外,还需要写入特定的标记信息,以使接收到的通信设备能够据此判断是读取该数据包中的数据内容,还是直接转发该数据包。

作为一种优选的实施方式,第一通信设备还包括:生成装置。该生成装置用于在通过未被占用的数据通路将数据包发送至第二通信设备之前,根据目标通信设备的公钥生成验证令牌,然后生成包含验证令牌和数据内容的数据包。其中,所述目标通信设备为数据包的发送目标,例如通信设备a生成数据包是用于向通信设备c告知某一信息,因此该数据包最终需要被发送至通信设备c,则所述数据包的目标通信设备即为通信设备c。此外,所述数据内容在所述验证令牌被所述目标通信设备的私钥解密后可读取。

在实施例中,所述验证令牌即为特定的标记信息,其加密解密采用公钥和私钥的方式,使得接收到该数据包的第二通信设备能够判断读取该数据包中的数据内容,还是直接转发该数据包。第二通信设备在接收数据包时,优先解析所述验证令牌的内容,尝试用自己的私钥对其进行解密,若解密失败,则表示目标通信设备的公钥与其私钥是不匹配的,即数据包的目标通信设备不是该第二通信设备,因此无需再继续解析数据包的其余部分,直接转发该数据包即可,由此提高了处理的效率。若解密成功,则表示目标通信设备的公钥与其私钥是匹配的,即该数据包的目标通信设备是第二通信设备,此时可以继续解析其余部分,读取数据内容。

在具体实施过程中,为了保证在串行通信过程中验证令牌的内容会优先被接收并解析,在数据包的数据结构中,所述验证令牌的序列位置相较于数据内容更为靠前,即所述第二通信设备在接收数据包时,会首先接收到所述验证令牌的字节。此外,由于数据包中的数据内容需要在所述验证令牌被所述目标通信设备的私钥解密后,才可读取,因此对于无法对验证令牌进行解密的通信设备无法读取到数据包中的数据内容,由此提高了数据的安全性,可以避免篡改数据内容和恶意抓包等。

用于加密生成验证令牌的公钥以及用于解密所述验证令牌的私钥可以在构建所述串行通信系统时统一分配。具体地,所述加密令牌可以采用目标通信设备的公钥对一组随机字符串进行加密生成,在解密时,仅需要返回解密成功或者解密失败的状态,而无需获取具体解密得到的该随机字符串。作为一种可行的实施方式,每个通信设备的公钥可以是由一组相同的字符串结合每个通信设备的设备id组成,而每个通信设备的私钥则是与所述公钥匹配的一组字符串。由某一通信设备的公钥加密的信息只能由该通信设备的私钥解密,反之亦然。由此保证了数据的安全性,并且使得接收到数据包的通信设备可以通过是否能够完成解密,来判断其是否为该数据包的目标通信设备,进而选择获取数据内容还是转发该数据包。

优选地,第一通信设备的所述生成装置在生成数据包时,也可以同时对数据内容进行加密,以进一步提高数据传输的安全性。对于数据内容的加密方式可以采用适用于该串行通信场景的任意方式,例如字符串混淆加密、公钥私钥加密等。

为实现接收数据包并读取数据内容,本申请实施例提供了另一种用于串行通信系统的第一通信设备,所述第一通信设备可以是所述串行通信系统中的任一通信设备,该第一通信设备至少包括:

接收装置,通过未被占用的数据通路从第三通信设备接收数据包;

判断装置,用于根据所述数据包判断是否满足预设条件;

数据获取装置,用于在判断结果为是时,读取所述数据包中的数据内容。

在该方案中,所述数据包可以由第三通信设备生成,并通过未被占用的数据通路向所述第一通信设备发送,也可以是由其它通信设备生成,并经由所述第三通信设备转发至所述第一通信设备。

所述预设条件用于确定接收到数据包的通信设备是否为该数据包的目标通信设备,若判断结果为是,则表示接收到数据包的通信设备即为该数据包的目标通信设备,由此读取数据包中的数据内容。所述预设条件具体可以采用在所述数据包中加入特定的标记信息的方式,使得接收到数据包的通信设备能够继续数据包中的该部分标记信息进行判断。为实现上述目的,所述标记信息可以直接采用目标通信设备的目标地址信息,接收设备在接收到数据包时,可以通过比较本机的地址信息与数据包中的目标地址信息,来确定是否满足预设条件。但是,由于该方式无法对数据包中的数据内容进行保护,数据安全性相对较差。

在此,本实施例提供的一种较为可靠的标记信息是:使用目标通信设备的公钥加密生成的验证令牌。由此,所述预设条件具体为:所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌解密成功,其中,所述数据包包含验证令牌以及数据内容,所述验证令牌根据目标通信设备的公钥密生成。所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌进行解密,由于所述验证令牌是采用目标通信设备的公钥进行加密生成,因此若解密成功,则表示所述第一通信设备即为目标通信设备。

相应地,所述数据包在生成时,相应的通信设备对其中的数据内容进行了加密,则可以采用对应的解密方式对数据内容进行解密,从而读取数据内容。

为实现数据包的转发,本申请实施例还提供了另一种用于串行通信系统的第一通信设备,所述第一通信设备可以是所述串行通信系统中的任一通信设备,所述第一通信设备包括:

接收装置,通过未被占用的数据通路从第三通信设备接收数据包;

判断装置,用于根据所述数据包判断是否满足预设条件;

发送装置,用于在判断结果为否时,将所述数据包通过另一数据通路发送至第二通信设备。

在此,所述预设条件与前述接收数据包并读取数据内容时的相同,此处不再重复说明。在收到数据包后,所述第一通信设备使用第一通信设备的私钥对所述数据包的验证令牌进行解密,由于所述验证令牌是采用目标通信设备的公钥进行加密生成,因此若解密不成功,则表示所述第一通信设备不是该数据包的目标通信设备,需要继续向其它通信设备发送,以使该数据包被发送至目标通信设备。

用于发送数据包的所述另一数据通路是相对于第一通信设备接收数据包的数据通路而言的。与主动发送生成的数据包不同,在转发数据包时第一通信设备不会选择接收该数据包的数据通路,而必然会选择另一条数据通路,以保证数据包不会被发送回第三通信设备。为此,所述发送装置,用于在所述另一数据通路当前被占用时,等待所述另一数据通路未被占用后,将所述数据包通过该数据通路发送至第二通信设备。以图2所示的串行通信系统为例,若通信设备a通过数据通路ae接收到来自通信设备e的数据包后,确定不满足预设条件,则一定会通过另一条数据通路ab向通信设备b发送该数据包。

在实际场景中,由于该串行通信系统采用了闭环的环形结构,因此有可能存在以下情形。通信设备a生成一个目标通信设备为c的数据包后,经由通信设备b向通信设备c转发该数据包,可能由于生成或者发送过程中的错误,导致通信设备c无法解密该数据包中的验证令牌,此时通信设备c会继续向通信设备d进行转发,进而经由通信设备e发回给通信设备a。此时,通信设备a若继续发送,则会循环前述的过程,由此将会导致通信资源的浪费,为避免上述问题,所述发送装置,具体用于在判断结果为否,且所述第一通信设备不是所述数据包的源通信设备时,所述第一通信设备将所述数据包通过另一数据通路发送至第二通信设备,其中,所述源通信设备为生成所述数据包的通信设备。

所述源通信设备即为生成所述数据包的通信设备,所述源通信设备的信息可以在生成数据包时写入,由此在第一通信设备在根据数据包的内容确定不满足预设条件时,将会继续对数据包的源通信设备进行检查,若本通信设备是生成该数据包的源通信设备,则表示该数据包已经被发送过一个循环,该数据包的可能有误,此时可以选择丢弃该数据包。若本通信设备不是生成该数据包的源通信设备,则表示该数据包可能还未被发送到目标通信设备,继续转发该数据包。

基于上述方案,若通信设备a需要向与其不相邻的通信设备c发送数据包,可以通过数据通路ae向通信设备e发送该数据包,并由通信设备e通过数据通路de向通信设备d转发后,再由通信设备d通过数据通路cd向通信设备c发送。此外,通信设备a也可以通过数据通路ab向通信设备b发送数据包,并由通信设备b通过数据通路bc向通信设备c转发。实际场景中,通信设备a第一次发送数据包的方向,由该通信设备的具体发送策略决定,例如采用轮询的方式查询当前哪条数据通路未被占用,并通过未被占用的数据通路进行发送。

作为另一种可行的实施方式,本申请实施例还提供了其它形式的用于串行通信系统的第一通信设备,所述第一通信设备包括:处理器;以及被安排成存储计算机可执行指令的存储器。在实现不同处理过程时,所述可执行指令在被执行时使所述处理器执行相应的操作,具体如下:

在发送自己生成的数据包时,所述可执行指令在被执行时使所述处理器:通过未被占用的数据通路将数据包发送至第二通信设备。

在接收数据包并读取数据内容,所述可执行指令在被执行时使所述处理器:通过未被占用的数据通路从第三通信设备接收数据包;根据所述数据包判断是否满足预设条件;以及在判断结果为是时,所述第一通信设备读取所述数据包中的数据内容。

在转发数据包时,所述可执行指令在被执行时使所述处理器:通过未被占用的数据通路从第三通信设备接收数据包;根据所述数据包判断是否满足预设条件;以及在判断结果为否时,将所述数据包通过另一数据通路发送至第二通信设备。

综上所述,上述方案改变了现有串行通信系统中各个通信设备之间连接方式,采用闭环的环形拓扑结构,使得每个通信设备仅与其它两个通信设备建立连接,每个通信设备在发送数据时,通过一条未被占用的数据通路向相邻两个通信设备中的一个发送,而不会向串行通信系统中的其它通信设备发送。由此,可以将不相邻的两个通信设备之间的直接通信,分散至多个通信设备,可以避免同一时间内数据的接收或者发送集中于某些特定的通信设备,减少收发队列拥堵的可能性,能够有效降低通信延时。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1