CN111200479B - 传输数据的校验方法、存储介质 - Google Patents
传输数据的校验方法、存储介质 Download PDFInfo
- Publication number
- CN111200479B CN111200479B CN201811377266.2A CN201811377266A CN111200479B CN 111200479 B CN111200479 B CN 111200479B CN 201811377266 A CN201811377266 A CN 201811377266A CN 111200479 B CN111200479 B CN 111200479B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- linked list
- hash value
- segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
Abstract
本发明提供传输数据的校验方法、存储介质,方法包括:将待传输数据拆分成两个以上的数据包体,并创建对应的第一片段对象,将第一片段对象存入第一链表,第一片段对象包括对应的数据包体及其包体校验值、第一片段对象对应第一链表的索引值;依据待传输数据的校验值和第一片段对象的总数,计算得到对应第一链表的第一哈希值;依据各个第一片段对象的包体校验值和索引值,计算得到各个第一片段对象对应的第二哈希值;分别发送第一哈希值和各个第一片段对象对应的第二哈希值至数据接收端。本发明实现分布式数据传输下传输效率的提升,同时又能确保传输数据完整性。
Description
技术领域
本发明涉及数据传输领域,具体涉及传输数据的校验方法、存储介质。
背景技术
按照传统的数据传输方式,由于一些网络原因的问题,导致设备与设备之间传输大文件时容易因某个设备连接不稳定产生传输中断以及连接断开。为了解决组网传输的问题,可以使用数据分包传输的方式来解决,但是分包后的数据如何进行存储和校验,一直是一个难题。其中一种方式是利用一个哈希值作为获取数据的数据包的源头,这就要求了哈希值和数据包内容的对应关系。通常是将哈希值和包体内容通过MAP产生一个映射关系。但是当设备接收到一个哈希值时,如何根据当前的哈希值找出该哈希值在链表中的索引值呢?如果通过哈希值到存储哈希值的链表中去获取所在的索引内容这样的执行方式步骤会比较多。
因此,有必要提供一种传输数据的校验方法、存储介质,以提高拆包数据的查询效率。
发明内容
本发明所要解决的技术问题是:提供传输数据的校验方法、存储介质,能够提高拆包数据的索引效率。
为了解决上述技术问题,本发明采用的技术方案为:
传输数据的校验方法,包括:
数据发送端将待传输数据拆分成两个以上的数据包体;
创建各个数据包体对应的第一片段对象,并将所述第一片段对象存入第一链表,所述第一片段对象包括对应的数据包体及其包体校验值、第一片段对象对应第一链表的索引值;
依据待传输数据的校验值和所述第一片段对象的总数,计算得到对应所述第一链表的第一哈希值;
依据各个第一片段对象的包体校验值和索引值,计算得到各个第一片段对象对应的第二哈希值;
分别发送所述第一哈希值和各个第一片段对象对应的第二哈希值至数据接收端。
本发明提供的第二个技术方案为:
第一计算机可读存储介质,其上存储有第一计算机程序,所述第一计算机程序在被处理器执行时能实现上述传输数据的校验方法所包含的步骤。
本发明的有益效果在于:数据包体的第一片段对象包含有其对应第一链表的索引值,以第一片段对象对应的第二哈希值作为获取对应数据包体的依据,不仅能更好的适用于具有单次数据传输量限定的不同端之间进行数据传输,使接收端能依据第二哈希值获取的索引值从第一链表快速且准确地获取对应的数据包体,同时还能依据同时获取的包体校验值判断所获取的数据包体的完整性;进一步的,接收端还能依据第一哈希值验证所同步的链表和数据整体的完整性。由此,本发明不仅能显著提高数据包体的获取效率;而且还具备验证所获取的单个数据包体和数据整体完整性的能力。从而具有提高数据传输效率和确保数据传输完整性的特点。
附图说明
图1为本发明传输数据的校验方法的流程示意图;
图2为本发明实施例一的传输数据的校验方法中设备A的流程示意图;
图3为本发明实施例一的传输数据的校验方法中设备B的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:依据各个第一片段对象对应的第二哈希值分次获取对应数据包体,解决单次数据传输量限制的问题;第一片段对象包含有其数据包体对应第一链表的索引值,能依据索引值快速且准确地定位到所要传输的数据包体,提高数据包体的获取效率。
本发明涉及的技术术语解释:
请参照图1,本发明提供传输数据的校验方法,包括:
数据发送端将待传输数据拆分成两个以上的数据包体;
创建各个数据包体对应的第一片段对象,并将所述第一片段对象存入第一链表,所述第一片段对象包括对应的数据包体及其包体校验值、第一片段对象对应第一链表的索引值;
依据待传输数据的校验值和所述第一片段对象的总数,计算得到对应所述第一链表的第一哈希值;
依据各个第一片段对象的包体校验值和索引值,计算得到各个第一片段对象对应的第二哈希值;
分别发送所述第一哈希值和各个第一片段对象对应的第二哈希值至数据接收端。
从上述描述可知,本发明的有益效果在于:能显著提升每个待传输的包体数据的获取效率;能实现对每个数据包体以及传输完成的数据整体的完整性进行准确判断。
进一步的,所述依据待传输数据的校验值和所述第一片段对象的总数,计算得到对应所述链表的第一哈希值,具体为:
依据待传输数据的校验值、所述第一片段对象的总数以及一随机数,计算得到对应所述第一链表的第一哈希值。
由上述描述可知,在第一哈希值中加入随机数,能保证第一哈希值在传输过程中的安全性,同时也能提高对待传输数据整体完整性验证的可靠性。
进一步的,所述依据各个第一片段对象的包体校验值和索引值,计算得到各个第一片段对象对应的第二哈希值,具体为:
依据各个第一片段对象的包体校验值、索引值以及对应索引值的操作符,计算得到各个第一片段对象对应的第二哈希值。
由上述描述可知,在第二哈希值中加入操作符,能据此判断对应的第一片段对象对应第一链表的结点位置是否位于首尾,以起到数据同步开始和结束的标识作用。
进一步的,发送至数据接收端的第二哈希值为依据数据传输最大吞吐量对计算得到的第二哈希值进行压缩后得到的压缩后第二哈希值。
由上述描述可知,通过对第一哈希值进行压缩,能更好的满足对单次数据吞吐量有限值要求的网络环境(如蓝牙传输)使用。
进一步的,所述操作符包括开始操作符、正常发送操作符和结束操作符;
所述索引值与第一链表的结点位置相对应;与第一链表的表头结点对应的索引值对应开始操作符,与第一链表的表尾结点对应的索引值对应结束操作符,与第一链表的其他结点对应的索引值对应正常发送操作符。
由上述描述可知,能利用操作符标识位于链表首尾结点的第一片段对象,起到提示数据传输开始和结束的作用;同时又能确保连续性的完成整个链表的同步。
进一步的,还包括:
数据接收端创建第二链表;
数据接收端解析当前接收到的第二哈希值,获取对应的第一片段对象的包体校验值和索引值;
数据接收端创建包含所获取的包体校验值和索引值的第二片段对象,并依据所述索引值将所述第二片段对象存入第二链表;
数据接收端依据所述索引值向数据发送端获取对应的第一片段对象中的数据包体;
数据接收端计算所获取的数据包体的包体校验值;
数据接收端对比其计算得到的包体校验值和解析得到的包体校验值;
若不一致,则重新依据所述索引值向数据发送端获取对应的第一片段对象中的数据包体;
若一致,则将所获取的数据包体存入所述第二片段对象,同时继续解析接收到的下一个第二哈希值,直至完成所有第二哈希值的解析;
数据接收端依据所述第一哈希值验证第二链表是否与第一链表一致。
由上述描述可知,在数据接收端,能依据第二哈希值快速且准确的获取对应的数据包体,同时验证所获取的数据包体的完整性;又能依据第一哈希值验证第二链表和所获取的数据整体的完整性,从而提高数据同步效率和数据同步完整性。
进一步的,所述数据接收端依据所述第一哈希值验证第二链表是否与第一链表一致,具体为:
数据接收端遍历第二链表,获取各个第二片段对象中的数据包体并合并得到接收数据;
依据所述接收数据的校验值和所述第二片段对象的总数,计算得到对应所述第二链表的第三哈希值;
数据接收端对比所述第三哈希值和所述第一哈希值;
若不一致,则再次遍历第二链表,获取各个第二片段对象的索引值;判断索引值是否有丢失,若有丢失,则获取丢失的索引值;依据所述丢失的索引值对应的第一片段对象的第二哈希值向数据发送端获取对应的数据包体。
由上述描述可知,能依据索引值准确地判断出未同步的第一片段对象,并直接依据丢失的索引值快速其准确地获取未同步的第一片段对象,而无需重新进行所有数据的同步,能显著提高数据同步的效率。
进一步的,还包括:
关联所述第一链表和所述第二哈希值。
由上述描述可知,通过关联链表和其中存储的片段对象对应的哈希值之间的关联关系,能确保后续依据哈希值快速找到对应的链表,再次提高数据同步的效率。
进一步的,所述包体校验值和所述校验值依据CRC算法生成。
由上述描述可知,利用CRC值最多10位数的特点,能控制生成的哈希值在20位数内,使其更好的符合如蓝牙传输的吞吐量限值要求。
本发明提供的第二个技术方案为:
第一计算机可读存储介质,其上存储有第一计算机程序,所述第一计算机程序在被处理器执行时能实现上述第一个技术方案中所述的传输数据的校验方法中数据发送端所执行的步骤。
从上述描述可知,本发明的有益效果在于:数据发送端能通过存储在第一计算机可读存储介质中的第一计算机程序来指令相关的硬件来实现上述传输数据的校验方法中数据发送端所能实现的功能。使得数据发送端具备能够显著提高数据接收端从其获取数据包体的效率;而且还使得数据接收端具备验证所获取的单个数据包体和数据整体完整性的能力。
本发明提供的第三个技术方案为:
第二计算机可读存储介质,其上存储有第二计算机程序,所述第二计算机程序在被处理器执行时能实现上述第一个技术方案中所述的传输数据的校验方法中数据接收端执行的步骤。
从上述描述可知,本发明的有益效果在于:数据接收端能通过存储在第二计算机可读存储介质中的第二计算机程序来指令相关的硬件来实现上述传输数据的校验方法中数据接收端所能实现的功能。使得数据接收端具备显著提高从数据发送端获取数据包体的效率;而且还使得数据接收端具备验证所获取的单个数据包体和数据整体完整性的能力。
上述的存储介质可以是磁盘、光碟、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
实施例一
请参照图2和图3,本实施例提供传输数据的校验方法,以两个蓝牙4.0低功耗设备之间在无网络状态下基于蓝牙网络进行数据传输为例(其他数据传输网络雷同),同时假设数据发送端为设备A,数据接收端为设备B;使用crc校验方法为例展开进行详细说明。
所述校验方法包括:
一、设备A执行包括:
请参阅图2
S1:设备A读取待传输数据(如文件)的数据内容;
S2:设备A依据所读取的数据内容,计算得到该文件的crc值,并将其存储到临时变量crcW中;
S3:设备A创建第一链表Link A;
S4:设备A按照系统预设的值对待传输数据,即文件的数据内容进行拆分,得到两个以上的数据包体,并且每个数据包体对应创建片段对象Segment。
其中,所述预设的值依据当前网络的吞吐量上限值设定。例如,按照蓝牙传输吞吐量20字节,将文件拆分成多个数据包体(片段),每个数据包体为20字节。
一个数据包体对应创建一个片段对象Segment。创建时,每个片段对象Segment包含还未存入具体数据的crc校验位、索引值Sequence和数据包体位,具体通过下述步骤存入与对应的数据包体相关的信息。
S41:在拆分文件的过程中,计算拆分得到的每个数据包体的crc值Pcrc,然后存入对应的片段对象Segment的crc校验位;
S42:在拆分文件的过程中,将拆分得到的每个数据包体的具体内容存入对应的片段对象Segment的数据包体位。
由此,片段对象Segment中存储有对应的数据包体的包体校验值Pcrc和数据包体本身。
S5:将每个数据包体对应创建的片段对象Segment依序存入第一链表Link A中,并将用于标识片段对象Segment对应第一链表存储位置的索引值存入片段对象Segment中。例如,一个片段对象存在第一链表的第五个结点,则对应的索引值为5。
至此,片段对象Segment记载有对应的数据包体的完整信息。每个第一片段对象Segment均包括有对应的数据包体、数据包体的包体校验值和该第一片段对象对应第一链表的索引值。
S6:设备A依据待传输数据的校验值和所述第一片段对象的总数,计算得到对应所述第一链表的哈希值,在本文中成为第一哈希值;
优选的,设备A将步骤S2中的crcW和拆分后的数据包体总数PCount以及随机数random生成第一链表Link A所对应的第一哈希值Link_Hash_Code A。第一哈希值用于验证接收端设备B依据所接收的数据得到的第二链表及数据内容的完整性。
本实施例的第一哈希值的格式如下表一所示:
crcW | PCount | random |
表一
S7:设备A将Link_Hash_Code A放入消息队列中,经路由表发送给设备B。
S8:设备A遍历第一链表Link A,计算出每个第一片段对象Segment对应的哈希值,在本实施例中称为第二哈希值Hash_Code;
在一具体实施方式中,每个第一片段对象Segment对应的第二哈希值Hash_Code是依据自身的第一片段对象的包体校验值Pcrc和索引值Sequence计算得到。与第一片段对象对应的第二哈希值用于标识数据包体对应第一链表的存储位置,以及验证数据包体的完整性。通过该步骤,提供了验证每个数据包体的数据完整性的依据。
优选的,所述第二哈希值Hash_Code将同时依据自身的第一片段对象的包体校验值Pcrc、索引值Sequence以及对应索引值的操作符OP,共同计算得到,具体格式如下表二所示:
OP | Pcrc | Sequence |
表二
其中,操作符OP:目前定义为START和END,占2个字节,依据对应的索引值确定。可选的,10代表开始,即开始操作符,对应位于链表表头结点的索引值;00代表结束完成,即结束操作符,对应位于链表表尾结点的索引值;01代表正常发送,即正常发送操作符,对应位于链表除表头结点和表尾结点的其他结点的索引值。
Pcrc:为每个数据包体的校验位,即包体校验值。采用CRC32算法生成的10个字节。
Sequence:每个数据包体的索引值,标识对应第一链表Link A的存储位置。
在一另一具体实施方式中,还包括:
S81:对计算得到的每一个第二哈希值Hash_Code进行压缩,使其符合特定网络环境的传输要求。
同时,在上述拆分步骤S4中,也对所拆分得到的各个数据包体进行压缩。
由于一些网络因素传输都有上限值,那么将通过分包传输来解决单次传输数据内容的上限问题。具体可以根据每种网络的吞吐量的上限值进行设定(如现有蓝牙4.0低功耗传输的字节数仅能传输20个字节,但是在实验中发现如果按照1000个字节拆分源文件,那么采用了brotli算法以后,可以将每次传输的数据量(称为传输数据包,并而非数据包体)控制在16个字节以内,这样就使得每个传输数据包实际上可以传输超过20个字节的内容),那么蓝牙传输就按1000个字节拆包。
在实际实验中发现:安排一个文件为248MB,按照1000个字节进行拆分后,其中一个数据包体通过CRC32算法计算出来的CRC校验码为:3409182202即Pcrc,Sequence的索引值为1000,操作符为00。则其对应的第二哈希值显示出的原始值为:00|3409182202|1000。由于根据20byte拆分内容的大小,为了解决上述生成的问题在蓝牙20byte的哈希值上限,采用了google开源的brotli算法,将数据包体以及对应生成的第二哈希值分别压缩至20个字节后再进行传输。
为了确保包体拆分的合理性,于是每次传输的传输数据包,可能是哈希值也可能是数据包体本身均将采用brotli算法,将原本1000个字节的内容间接的压缩至17个字节范围内。于是,蓝牙传输以及各种传输模式的传输方式也就解决了。这样最终实现了蓝牙以及各种传输模式的稳定性。
S9:关联所述第一链表和所述第二哈希值。
具体的,设备A将每个遍历后的第二哈希值Hash_Code和对应的第一链表Link A存入至MAP中建立二者的关联关系。
S10:顺序发送第一链表中的各个第一片段对象对应的第二哈希值至设备B,以实现设备B同步设备A要传输的文件内容。
二、设备B执行包括:
请参阅图3
S11:设备B接收到设备A发来的第一哈希值Link_Hash_Code A,创建第二链表LinkB。
S12:设备B保存第一哈希值Link_Hash_Code A至第二链表Link B。
S13:设备B接收到设备A发来的第一个传输数据包(非数据包体),并通过brotli算法还原得到Package Num1;
S14:设备B检测Package Num1是否为OP开头,且是否包含3组数据;
如果是则确认为第一片段对象的压缩后第二哈希值P a;
S15:设备B从Pa中解析出第二哈希值的原始值(OP|Pcrc|sequence),并创建包含包体校验值Pcrc和索引值sequence的第二片段对象,并将该第二片段对象依据索引值sequence添加至Link B对应的结点位置。
S16:设备B根据接收到的第二哈希值从设备A获取该第二哈希值所对应的内容。
具体的,依据第二哈希值中的索引值向设备A获取对应的第一片段对象中的数据包体;设备A将依据设备B发送过来的第二哈希值中的索引值快速且准确的定位到第一链表Link A对应的结点位置,获取该第二哈希值对应的第一片段对象,然后获取其中记载的数据包体。
S17:设备B接收到设备A发来的内容。
若在S4中有对数据包体进行压缩,则还包括下述步骤S18,若无,则直接执行S19;
S18:设备B使用brotli解析出设备A发来的内容;
S19:设备B计算从设备A获取的数据包体对应的包体校验值,并存入临时变量T;
S20:设备B依据S15解析得到的第二哈希值,取出其中的包体校验值Pcrc值和T进行比对。
如果一致,则表明所获取的数据获取正常,保存从设备A获取的数据包体至步骤S15创建的第二片段对象Segment中;
如果不一致,则重新请求,即依据索引值向设备A重新获取对应的第一片段对象中的数据包体。
S21:设备B继续接收设备A发来的传输数据包,直至完成第一链表的同步,即获取与第一链表完全一致的第二链表。
S22:设备B依据所述第一哈希值验证第二链表是否与第一链表一致。
具体的,包括:
S23:设备B遍历第二链表Link B,从第二链表Link B中取出每个第二片段对象的文本内容(即数据包体的内容)进行合并。
S24:设备B合并完成后,计算其crc值,并将计算得到的crc值保存到临时变量Tcrc;
S25:设备B取出第一链表Link A中的LINK_HASH_CODE A的crc值LinkAcrc。
S26:设备B将Link Acrc和T crc进行比对;
如果一致,表明传输数据包,即所要同步的数据均下载完整;结束流程。
如果不一致,则执行S27;
S27:设备B再次遍历第二链表Link B,从中取出各个第二片段对象Segment的索引值。
S28:设备B判断索引值是否有丢失,并获取丢失的索引值。假设丢失的索引值为4,则可以通过第二链表中上一个索引值为3,而其下一个结点的索引值为5来确定)。
S29:设备B依据丢失的索引值给设备A,发送该索引值所对应的第二哈希值给设备A,以获取对应的数据包体。
在本实施例中,使用CRC校验码可以获取到即将要被传输的内容的CRC码。将CRC码作为链表的哈希值中的一个元素位,使得链表在创建时生成一个临时的CRC位。而使用CRC作为CRC位的好处在于CRC最多为10位数,这样就可以通过CRC校验位加上拆分的包体个数以及随机位数生成一个20位数的哈希值。当设备接收到哈希值,首先校验是否符合链表的哈希值生成方式,如果符合,则根据当前已传输过来的链表的哈希值创建本地链表。紧接着从哈希值中解析出链表的内容(CRC校验位、包体个数(PCount))。用于当设备根据每个哈希值下载完所有的数据包以后进行数据合并后计算其组合后的数据的CRC校验位。通过该CRC校验位与上述发送给设备的CRC校验位进行比对。如果相等,则数据源下载是完整的。反之数据源不正确,需要通过核实在链表中的每个数据包的索引值,从中得出已丢失的数据内容,然后可以根据已丢失的数据内容的上一个哈希值向其他设备获取到下一个哈希值,从而取回完整的数据保证链表的完整性和原文件的完整性,从而降低因链表不完整产生的哈希值数据寻路多次请求的问题。
本实施例的传输数据校验方法,可以运用在各种网络环境下设备之间的数据传输方案中,不仅能显著提高数据包索引的效率;而且还能检验所同步数据的完整性;特别的,还能针对分包传输的数据的完整性进行验证,并在分包数据丢失时,作为溯源依据,准确获取丢失的数据包,从而更好的确保同步数据的完整性。
本实施例在蓝牙组网环境下用于设备间的数据传输,能结合双向链表的可追溯特性,以分布式数据传输存储方式确保设备间数据传输符合蓝牙传输要求,且显著提升传输的效率,同时又能确保所传输数据的完整性。能帮助蓝牙组网中断线重连的设备或者是新入网的设备通过与网内其他设备之间进行哈希值传输和确认,依然能随时获取到全部的数据源,确保数据接收的完整性。
实施例二
本实施例对应实施例一,提供第一计算机可读存储介质,其上存储有第一计算机程序,所述第一计算机程序在被处理器执行时能实现上述实施例一所述的传输数据的校验方法中设备A所执行的所有步骤。具体的步骤内容在此不进行复述,请查阅实施例一的记载。
实施例三
本实施例对应实施例一,提供第二计算机可读存储介质,其上存储有第二计算机程序,所述第二计算机程序在被处理器执行时能实现上述实施例一所述的传输数据的校验方法中设备B所执行的所有。步骤具体的步骤内容在此不进行复述,请查阅实施例一的记载。
对应实施例一和实施例二的计算机可读存储介质,是磁盘、光碟、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
综上所述,本发明提供的传输数据的校验方法、第一计算机可读存储介质和第二计算机可读存储介质,不仅能解决特定网络环境单次数据传输量受限的问题;而且还能提高拆包索引效率;进一步的,还具备数据整体完整性校验和拆包数据完整性校验的功能,能确保数据传输完整性;进一步的,还能使得断线重连或者新入网设备具备溯源能力。最终实现分布式数据传输下传输效率的提升,同时又能确保传输数据完整性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种传输数据的校验方法,其特征在于,包括:
数据发送端将待传输数据拆分成两个以上的数据包体;
创建各个数据包体对应的第一片段对象,并将所述第一片段对象存入第一链表,所述第一片段对象包括对应的数据包体及其包体校验值、第一片段对象对应第一链表的索引值;
依据待传输数据的校验值和所述第一片段对象的总数,计算得到对应所述第一链表的第一哈希值;
依据各个第一片段对象的包体校验值和索引值,计算得到各个第一片段对象对应的第二哈希值;
分别发送所述第一哈希值和各个第一片段对象对应的第二哈希值至数据接收端;
所述依据待传输数据的校验值和所述第一片段对象的总数,计算得到对应所述链表的第一哈希值,具体为:
依据待传输数据的校验值、所述第一片段对象的总数以及一随机数,计算得到对应所述第一链表的第一哈希值;
所述依据各个第一片段对象的包体校验值和索引值,计算得到各个第一片段对象对应的第二哈希值,具体为:
依据各个第一片段对象的包体校验值、索引值以及对应索引值的操作符,计算得到各个第一片段对象对应的第二哈希值。
2.如权利要求1所述的传输数据的校验方法,其特征在于,发送至数据接收端的第二哈希值为依据数据传输最大吞吐量对计算得到的第二哈希值进行压缩后得到的压缩后第二哈希值。
3.如权利要求1所述的传输数据的校验方法,其特征在于,所述操作符包括开始操作符、正常发送操作符和结束操作符;
所述索引值与第一链表的结点位置相对应;与第一链表的表头结点对应的索引值对应开始操作符,与第一链表的表尾结点对应的索引值对应结束操作符,与第一链表的其他结点对应的索引值对应正常发送操作符。
4.如权利要求1所述的传输数据的校验方法,其特征在于,还包括:
数据接收端创建第二链表;
数据接收端解析当前接收到的第二哈希值,获取对应的第一片段对象的包体校验值和索引值;
数据接收端创建包含所获取的包体校验值和索引值的第二片段对象,并依据所述索引值将所述第二片段对象存入第二链表;
数据接收端依据所述索引值向数据发送端获取对应的第一片段对象中的数据包体;
数据接收端计算所获取的数据包体的包体校验值;
数据接收端对比其计算得到的包体校验值和解析得到的包体校验值;
若不一致,则重新依据所述索引值向数据发送端获取对应的第一片段对象中的数据包体;
若一致,则将所获取的数据包体存入所述第二片段对象,同时继续解析接收到的下一个第二哈希值,直至完成所有第二哈希值的解析;
数据接收端依据所述第一哈希值验证第二链表是否与第一链表一致。
5.如权利要求4所述的传输数据的校验方法,其特征在于,所述数据接收端依据所述第一哈希值验证第二链表是否与第一链表一致,具体为:
数据接收端遍历第二链表,获取各个第二片段对象中的数据包体并合并得到接收数据;
依据所述接收数据的校验值和所述第二片段对象的总数,计算得到对应所述第二链表的第三哈希值;
数据接收端对比所述第三哈希值和所述第一哈希值;
若不一致,则再次遍历第二链表,获取各个第二片段对象的索引值;判断索引值是否有丢失,若有丢失,则获取丢失的索引值;依据所述丢失的索引值对应的第一片段对象的第二哈希值向数据发送端获取对应的数据包体。
6.如权利要求1所述的传输数据的校验方法,其特征在于,还包括:
关联所述第一链表和所述第二哈希值。
7.如权利要求1所述的传输数据的校验方法,其特征在于,所述包体校验值和所述校验值依据CRC算法生成。
8.一种计算机可读存储介质,其上存储有第一计算机程序,其特征在于,所述第一计算机程序在被处理器执行时能实现上述权利要求1-7中任意一项所述的传输数据的校验方法所包含的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811377266.2A CN111200479B (zh) | 2018-11-19 | 2018-11-19 | 传输数据的校验方法、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811377266.2A CN111200479B (zh) | 2018-11-19 | 2018-11-19 | 传输数据的校验方法、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111200479A CN111200479A (zh) | 2020-05-26 |
CN111200479B true CN111200479B (zh) | 2022-04-12 |
Family
ID=70747209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811377266.2A Active CN111200479B (zh) | 2018-11-19 | 2018-11-19 | 传输数据的校验方法、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111200479B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112243160A (zh) * | 2020-09-14 | 2021-01-19 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、终端设备和存储介质 |
CN116610485B (zh) * | 2023-07-21 | 2024-04-30 | 深圳市城市交通规划设计研究中心股份有限公司 | 一种隔离网闸数据校验方法、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006094365A1 (en) * | 2005-03-11 | 2006-09-14 | Rocksoft Limited | Method for storing data with reduced redundancy using data clusters |
CN102938683A (zh) * | 2012-09-24 | 2013-02-20 | 华为技术有限公司 | 一种数据处理的方法和装置 |
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
CN104994179A (zh) * | 2015-05-14 | 2015-10-21 | 深圳市腾讯计算机系统有限公司 | 一种数据处理方法及服务器 |
CN105488423A (zh) * | 2015-11-20 | 2016-04-13 | 北京天行网安信息技术有限责任公司 | 一种数据文件的审核校验系统及方法 |
CN106096023A (zh) * | 2016-06-24 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 数据读取方法、数据写入方法及数据服务器 |
CN107786504A (zh) * | 2016-08-26 | 2018-03-09 | 腾讯科技(深圳)有限公司 | Elf文件发布方法、elf文件校验方法、服务器及终端 |
WO2018076765A1 (zh) * | 2016-10-31 | 2018-05-03 | 华为技术有限公司 | 云计算系统的内容分发方法及装置、计算节点及系统 |
CN108108260A (zh) * | 2016-11-25 | 2018-06-01 | 沈阳美行科技有限公司 | 一种资源文件的校验方法及装置 |
CN108256353A (zh) * | 2018-01-11 | 2018-07-06 | 武汉斗鱼网络科技有限公司 | 一种数据完整性校验方法、装置及客户端 |
CN108574735A (zh) * | 2018-04-11 | 2018-09-25 | 努比亚技术有限公司 | 数据处理方法、终端及计算机可读存储介质 |
CN108809514A (zh) * | 2018-04-23 | 2018-11-13 | 华为技术有限公司 | 一种数据传输方法及相关设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7840537B2 (en) * | 2006-12-22 | 2010-11-23 | Commvault Systems, Inc. | System and method for storing redundant information |
CN103731451B (zh) * | 2012-10-12 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 一种文件上传的方法及系统 |
-
2018
- 2018-11-19 CN CN201811377266.2A patent/CN111200479B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006094365A1 (en) * | 2005-03-11 | 2006-09-14 | Rocksoft Limited | Method for storing data with reduced redundancy using data clusters |
CN102938683A (zh) * | 2012-09-24 | 2013-02-20 | 华为技术有限公司 | 一种数据处理的方法和装置 |
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
CN104994179A (zh) * | 2015-05-14 | 2015-10-21 | 深圳市腾讯计算机系统有限公司 | 一种数据处理方法及服务器 |
CN105488423A (zh) * | 2015-11-20 | 2016-04-13 | 北京天行网安信息技术有限责任公司 | 一种数据文件的审核校验系统及方法 |
CN106096023A (zh) * | 2016-06-24 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 数据读取方法、数据写入方法及数据服务器 |
CN107786504A (zh) * | 2016-08-26 | 2018-03-09 | 腾讯科技(深圳)有限公司 | Elf文件发布方法、elf文件校验方法、服务器及终端 |
WO2018076765A1 (zh) * | 2016-10-31 | 2018-05-03 | 华为技术有限公司 | 云计算系统的内容分发方法及装置、计算节点及系统 |
CN108108260A (zh) * | 2016-11-25 | 2018-06-01 | 沈阳美行科技有限公司 | 一种资源文件的校验方法及装置 |
CN108256353A (zh) * | 2018-01-11 | 2018-07-06 | 武汉斗鱼网络科技有限公司 | 一种数据完整性校验方法、装置及客户端 |
CN108574735A (zh) * | 2018-04-11 | 2018-09-25 | 努比亚技术有限公司 | 数据处理方法、终端及计算机可读存储介质 |
CN108809514A (zh) * | 2018-04-23 | 2018-11-13 | 华为技术有限公司 | 一种数据传输方法及相关设备 |
Non-Patent Citations (3)
Title |
---|
基于Hash索引的声纳数据分布式存储策略;胡银丰,黄迪;《电子世界 探索与观察》;20181107(第18期);全文 * |
基于移动平台的文件传输策略的设计和实现;黄家辉等;《高技术通讯》;20150515(第05期);全文 * |
基于链表多分支路径树的云存储数据完整性验证机制;方欣等;《成都信息工程大学学报》;20180215(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111200479A (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101009516B (zh) | 一种进行数据同步的方法、系统及装置 | |
CN104602138B (zh) | 一种使流媒体服务器支持hls协议的方法及装置 | |
US20140330894A1 (en) | Method, terminal and system for implementing data sharing | |
CN103259797B (zh) | 数据文件传输方法及平台 | |
CN111200479B (zh) | 传输数据的校验方法、存储介质 | |
CN105159985A (zh) | 基于redis集群的数据查询装置及方法 | |
CN106170968B (zh) | 一种数据压缩存储方法、装置,及分布式文件系统 | |
CN104468843A (zh) | 一种文件上传方法及装置 | |
CN109905205B (zh) | 数据发送、接收的方法及设备、数据传输方法及系统 | |
CN105450712B (zh) | 一种数据传输方法及装置 | |
CN104660308A (zh) | 基于蓝牙低功耗技术的文件传输方法和系统 | |
CN106656424B (zh) | 一种数据传输的校验方法 | |
CN104661042A (zh) | 一种传输流的传输方法、装置和系统 | |
CN103593384A (zh) | 以目的地分析和数据去重实现数据传输优化的方法和系统 | |
CN107241417A (zh) | 一种文件传输的方法、系统、发送端及接收端 | |
CN105450682A (zh) | 一种用于数据同步保存、向客户端同步数据的方法、装置和系统 | |
CN112131609A (zh) | 基于Merkle树的电能质量数据交换格式文件完整性校验方法及系统 | |
WO2020134258A1 (zh) | 一种数据的重传解码方法、装置、系统及通信设备 | |
CN105721526A (zh) | 一种终端、服务器文件同步的方法及装置 | |
CN103152606A (zh) | 视频文件处理方法及装置、系统 | |
JP2022084661A (ja) | 同期方法および装置 | |
CN111694502A (zh) | 区块链数据存储方法、装置、设备及存储介质 | |
US10728356B2 (en) | Communication device and communication system | |
CN113691546A (zh) | 一种文本文件的完整性校验方法、系统、设备和介质 | |
CN112910568A (zh) | 一种数据通信方法、数据发送方法及数据接收方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |