一种数据下载方法及装置与流程

文档序号:26937460发布日期:2021-10-12 10:49阅读:60来源:国知局
一种数据下载方法及装置与流程

本发明涉及通信技术领域,更具体的说,涉及一种数据下载方法及装置。

背景技术

随着互联网的不断发展,网络数据也变得越加丰富和多样,人们工作和学习中的数据或信息基本都可以从网络上获取,基于网络的数据交互已经变得不可或缺。

当人们需要某些网络数据时,通常可以通过终端上的下载应用将数据下载至当前操作终端。

在网络数据下载过程中,为保证数据的可靠下载,通常采用HTTP(HyperText Transfer Protocol,超文本传输协议)播发数据,并结合TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)。但是采用HTTP播发数据时,若下载的网络数据到达一定量级,就会增大带宽压力,并且还需要增加服务器的数量,使购买服务器的成本增加。为解决这一问题,另一种数据下载方式为直接用私有协议的组播方式,采用UDP(User Datagram Protocol,用户数据报协议)方式播发数据,虽然UDP可以实现无连接和快速传输数据,但是UDP具有数据传输不可靠的缺点,可能会出现丢包和错包。

综上,如何提供一种数据下载方法及装置,以解决组播传输数据过程中,丢包和错包问题,成为了本领域技术人员亟需解决的技术问题。



技术实现要素:

有鉴于此,本发明公开一种数据下载方法及装置,本发明用TS技术替代传统方案的组播私有协议,将添加数据包索引的目标数据包,封装成TS格式的TS包,并以TS数据流的方式发送至客户端。由于TS数据流具有数据下发可轮播以及数据传输单元性的特性,并且,TS规范本身带有校验机制,从而解决了组播传输数据不可靠的问题。

一种数据下载方法,应用于服务器端,该方法包括:

根据客户端提交的待下载数据文件的下载请求,查找所述待下载数据文件,其中,所述下载请求中包含所述待下载数据文件的标识;

对所述待下载数据文件按照预设长度进行拆分,得到N个数据包,N为正整数;

针对每一个所述数据包均添加上数据包索引得到目标数据包,其中,所述数据包索引包括:所述数据包的上一个数据包的索引号以及所述数据包的下一个数据包的索引号;

基于Section,将每个所述目标数据包封装成TS格式,得到M个TS包,M为正整数;

每次将预设数量的所述TS包打包成一个UDP包;

将所述UDP包中由各个所述TS包形成的TS数据流,按照索引顺序循环播发至所述客户端,由所述客户端从所述TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至所述文件预设位置。

可选的,对所述待下载数据文件进行拆分得到的头包中,所述头包的上一个数据包的索引号为0,所述头包的下一个数据包的索引号为2。

可选的,对所述待下载数据文件进行拆分得到的尾包中,所述尾包的数据包索引的下一个数据包的索引号为0。

可选的,所述基于Section,将每个所述目标数据包封装成TS格式,得到TS数据流,具体包括:

将所述目标数据包的长度和索引数据以私有表携带Section的方式,封装成TS格式,得到M个所述TS包,M个所述TS包形成一个TS数据流。

可选的,所述预设数量为七个。

一种数据下载装置,应用于服务器端,该装置包括:

查找单元,用于根据客户端提交的待下载数据文件的下载请求,查找所述待下载数据文件,其中,所述下载请求中包含所述待下载数据文件的标识;

拆分单元,用于对所述待下载数据文件按照预设长度进行拆分,得到N个数据包,N为正整数;

添加单元,用于针对每一个所述数据包均添加上数据包索引得到目标数据包,其中,所述数据包索引包括:所述数据包的上一个数据包的索引号以及所述数据包的下一个数据包的索引号;

封装单元,用于基于Section,将每个所述目标数据包封装成TS格式,得到M个TS包,M为正整数;

打包单元,用于每次将预设数量的所述TS包打包成一个UDP包;

播发单元,用于将所述UDP包中由各个所述TS包形成的TS数据流,按照索引顺序循环播发至所述客户端,由所述客户端从所述TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至所述文件预设位置。

可选的,对所述待下载数据文件进行拆分得到的头包中,所述头包的上一个数据包的索引号为0,所述头包的下一个数据包的索引号为2。

可选的,对所述待下载数据文件进行拆分得到的尾包中,所述尾包的数据包索引的下一个数据包的索引号为0。

可选的,所述封装单元具体用于:

将所述目标数据包的长度和索引数据以私有表携带Section的方式,封装成TS格式,得到M个所述TS包,M个所述TS包形成一个TS数据流。

可选的,所述预设数量为七个。

从上述的技术方案可知,本发明公开了一种数据下载方法及装置,服务器端根据客户端发送的下载请求查找待下载数据文件,对待下载数据文件进行拆分,得到N个数据包,针对每一个数据包均添加上数据包索引得到目标数据包,基于Section,将每个目标数据包封装成TS格式得到M个TS包,将预设数量的TS包打包成一个UDP包,并将UDP包中的TS数据流按照索引顺序循环播发至客户端,由客户端从TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至文件预设位置。由此可以看出,本发明用TS技术替代传统方案的组播私有协议,将添加数据包索引的目标数据包,封装成TS格式的TS包,并以TS数据流的方式发送至客户端。由于TS数据流具有数据下发可轮播以及数据传输单元性的特性,并且,TS规范本身带有校验机制,从而解决了组播传输数据不可靠的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。

图1为本发明实施例公开的一种数据下载方法流程图;

图2为本发明实施例公开的一种服务器端发送数据的示意图;

图3为本发明实施例公开的一种客户端解析UDP包的原理图;

图4为本发明实施例公开的一种数据下载装置的结构示意图。

具体实施方式

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

本发明实施例公开了一种数据下载方法及装置,服务器端根据客户端发送的下载请求查找待下载数据文件,对待下载数据文件进行拆分,得到N个数据包,针对每一个数据包均添加上数据包索引得到目标数据包,基于Section,将每个目标数据包封装成TS格式得到M个TS包,将预设数量的TS包打包成一个UDP包,并将UDP包中的TS数据流按照索引顺序循环播发至客户端,由客户端从TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至文件预设位置。由此可以看出,本发明用TS技术替代传统方案的组播私有协议,将添加数据包索引的目标数据包,封装成TS格式的TS包,并以TS数据流的方式发送至客户端。由于TS数据流具有数据下发可轮播以及数据传输单元性的特性,并且,TS规范本身带有校验机制,从而解决了组播传输数据不可靠的问题。

另外,由于本发明在数据下载时,采用了组播TS技术,因此避免了传统方案使用组播私有协议和组播私有容错机制带来的开发调试工作量,从而简化了数据传输设计的复杂度,并减少了工作量;同时,相对于使用http播发数据而言,本发明还减少了带宽压力,从而降低了购买服务器的成本。

参见图1,本发明一实施例公开的一种数据下载方法流程图,该方法应用于服务器端,包括步骤:

步骤S101、根据客户端提交的待下载数据文件的下载请求,查找所述待下载数据文件;

其中,所述下载请求中包含所述待下载数据文件的标识;

步骤S102、对所述待下载数据文件按照预设长度进行拆分,得到N个数据包,N为正整数;

具体的,参见图2,本发明一实施例公开的一种服务器端发送数据的示意图,假设待下载数据文件为data,则将data按照预设长度len进行拆分,得到N个数据包。

步骤S103、针对每一个所述数据包均添加上数据包索引得到目标数据包;

其中,所述数据包索引包括:所述数据包的上一个数据包的索引号以及所述数据包的下一个数据包的索引号。

需要特别说明的是,对待下载数据文件进行拆分得到的第一个数据包(也即头包)的数据包索引为0和2,也就是说,头包的上一个数据包的索引号为0,头包的下一个数据包的索引号为2,头包的索引号为1。

对待下载数据文件进行拆分得到的最后一个数据包(也即尾包)的数据包索引中,定义该数据包索引包括的尾包的下一个数据包的索引号也为0。

这样,待下载数据文件在传输过程中的头包、尾包和中间数据包在待下载数据文件中的偏移量都能够计算出来。

具体的,在实际应用中,可以采用TS数据流工具,针对每一个所述数据包均添加上数据包索引,得到目标数据包。

参见图2,假设数据包索引为:index,则得到的目标数据包包括:

len index1,len index2,len index3,len index4,len index5,len index6,.....。

步骤S104、基于Section,将每个所述目标数据包封装成TS格式,得到M个TS包;

M为正整数。

Section是TS规范中的专有名字。

Section数据即是去掉各个TS包头后组织起来的有效载荷数据。

TS全称为MPEG2-TS。TS即\"Transport Stream\"的缩写,它是分包发送的,每一个包长为188字节。包的结构为:包头为4个字节,负载为184个字节。在TS数据流里可以填入很多类型的数据,如视频、音频、自定义信息等。

MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。

一般一个有效载荷数据的长度是1024字节,而一个TS包的长度是188字节,所以一般都是一个有效载荷数据是由多个TS包组成,当然也有可能一个有效载荷数据由一个TS的有效载荷数据组成。

具体的,将目标数据包的长度和索引数据以私有表携带Section的方式,封装成TS格式,得到M个TS包,M个TS包形成一个TS数据流。

步骤S105、每次将预设数量的所述TS包打包成一个UDP包;

其中,Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。

UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据报的方法。

优选的,预设数量为七个。

需要说明的是,网络层IP数据报的长度限制为1500字节,一个TS包的长度是188字节,由于七个TS包的长度,也即188*7最接近于1500,因此,7个TS包为传输的最大数量,虽然打包成一个UDP包的TS包的数量可以更小,但是数据传输的效率不是最高。若是七个以上的TS包,比如,8个TS包,则188*8=1504>1500,则由此得到的UDP包在传输过程中就需要分包,从而导致后续处理逻辑复杂度增加。

因此,本实施例中,一个UDP包优选由七个TS数据流打包得到。

具体的,参见图2,len index1,len index2,len index3,len index4,len index5,len index6和len index7打包得到一个TS数据流,该TS数据流也即将待下载数据文件data转换成TS格式data.ts。

步骤S106、将所述UDP包中由各个所述TS包形成的TS数据流,按照索引顺序循环播发至所述客户端,由所述客户端从所述TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至所述文件预设位置。

具体的,将UDP包中由预设数量的TS包形成的TS数据流,按照索引顺序循环播发至组播环境,客户端从组播环境获取UDP包,并从该UDP包中得到7*188的TS流,客户端根据TS规范,从TS数据流中解析出各个有效载荷数据,对有效载荷数据进行CRC校验,若校验失败,则判定有效载荷数据为错误数据并舍弃,继续接收其他的有效载荷数据,直到所有的有效载荷数据均正确收到,此时,根据校验通过的有效载荷数据的索引号,将检验通过的有效载荷数据存储至文件预设位置。

具体的,利用组播播发设备每次读取包含预设数量的TS包的TS数据流作为一个UDP包,并将该UDP包以单元包的形式发送至组播环境。

需要说明的是,一个TS数据流包括多个TS包,在将TS数据流发送至组播环境时,需要保证该TS数据流中的每个TS包均发送一遍。在对TS数据流中的各个TS包发送一遍后,继续从TS数据流中的第一个TS包开始,循环播发。

举例说明客户端对接收的UDP的处理过程,具体如下:

参见图3,本发明一实施例公开的一种客户端解析UDP包的原理图,客户端接收服务器端第一轮发送的TS数据流,根据TS过滤规则,从TS数据流中解析出各个有效载荷数据,对有效载荷数据进行CRC校验,根据校验通过的有效载荷数据的索引号,将校验通过的有效载荷数据存储至文件预设位置。客户端接收服务器端发送的第二轮TS数据流,对第一轮TS数据流由于丢包和错包导致没收到的有效载荷数据进行补充,并将重复包和错包丢掉。当客户端接收到完整的且校验通过的有效载荷数据后,根据有效载荷数据的索引号和长度,还原得到待下载数据文件。

综上可知,本发明实施例公开了一种数据下载方法,服务器端根据客户端发送的下载请求查找待下载数据文件,对待下载数据文件进行拆分,得到N个数据包,针对每一个数据包均添加上数据包索引得到目标数据包,基于Section,将每个目标数据包封装成TS格式得到M个TS包,将预设数量的TS包打包成一个UDP包,并将UDP包中的TS数据流按照索引顺序循环播发至客户端,由客户端从TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至文件预设位置。由此可以看出,本发明用TS技术替代传统方案的组播私有协议,将添加数据包索引的目标数据包,封装成TS格式的TS包,并以TS数据流的方式发送至客户端。由于TS数据流具有数据下发可轮播以及数据传输单元性的特性,并且,TS规范本身带有校验机制,从而解决了组播传输数据不可靠的问题。

另外,由于本发明在数据下载时,采用了组播TS技术,因此避免了传统方案使用组播私有协议和组播私有容错机制带来的开发调试工作量,从而简化了数据传输设计的复杂度,并减少了工作量;同时,相对于使用http播发数据而言,本发明还减少了带宽压力,从而降低了购买服务器的成本。

与上述方法实施例相对应,本发明还公开了一种数据下载装置。

参见图4,本发明一实施例公开的一种数据下载装置的结构示意图,该装置应用于服务器端,该装置包括:

查找单元201,用于根据客户端提交的待下载数据文件的下载请求,查找所述待下载数据文件,其中,所述下载请求中包含所述待下载数据文件的标识;

拆分单元202,用于对所述待下载数据文件按照预设长度进行拆分,得到N个数据包,N为正整数;

具体的,参见图2,本发明一实施例公开的一种服务器端发送数据的示意图,假设待下载数据文件为data,则将data按照预设长度len进行拆分,得到N个数据包。

添加单元203,用于针对每一个所述数据包均添加上数据包索引得到目标数据包,其中,所述数据包索引包括:所述数据包的上一个数据包的索引号以及所述数据包的下一个数据包的索引号;

需要特别说明的是,对待下载数据文件进行拆分得到的第一个数据包(也即头包)的数据包索引为0和2,也就是说,头包的上一个数据包的索引号为0,头包的下一个数据包的索引号为2,头包的索引号为1。

对待下载数据文件进行拆分得到的最后一个数据包(也即尾包)的数据包索引中,定义该数据包索引包括的尾包的下一个数据包的索引号也为0。

这样,待下载数据文件在传输过程中的头包、尾包和中间数据包在待下载数据文件中的偏移量都能够计算出来。

具体的,在实际应用中,可以采用TS数据流工具,针对每一个所述数据包均添加上数据包索引,得到目标数据包。

封装单元204,用于基于Section,将每个所述目标数据包封装成TS格式,得到M个TS包,M为正整数;

Section是TS规范中的专有名字。

Section数据即是去掉各个TS包头后组织起来的有效载荷数据。

一般一个有效载荷数据的长度是1024字节,而一个TS包的长度是188字节,所以一般都是一个有效载荷数据是由多个TS包组成,当然也有可能一个有效载荷数据由一个TS的有效载荷数据组成。

封装单元204具体可以用于将目标数据包的长度和索引数据以私有表携带Section的方式,封装成TS格式,得到M个TS包,M个TS包形成一个TS数据流。

打包单元205,用于每次将预设数量的所述TS包打包成一个UDP包;

其中,Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。

UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据报的方法。

优选的,预设数量为七个。

需要说明的是,网络层IP数据报的长度限制为1500字节,一个TS包的长度是188字节,由于七个TS包的长度,也即188*7最接近于1500,因此,7个TS包为传输的最大数量,虽然打包成一个UDP包的TS包的数量可以更小,但是数据传输的效率不是最高。若是七个以上的TS包,比如,8个TS包,则188*8=1504>1500,则由此得到的UDP包在传输过程中就需要分包,从而导致后续处理逻辑复杂度增加。

因此,本实施例中,一个UDP包优选由七个TS数据流打包得到。

播发单元206,用于将所述UDP包中由各个所述TS包形成的TS数据流,按照索引顺序循环播发至所述客户端,由所述客户端从所述TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至所述文件预设位置。

具体的,将UDP包中由预设数量的TS包形成的TS数据流,按照索引顺序循环播发至组播环境,客户端从组播环境获取UDP包,并从该UDP包中得到7*188的TS流,客户端根据TS规范,从TS数据流中解析出各个有效载荷数据,对有效载荷数据进行CRC校验,若校验失败,则判定有效载荷数据为错误数据并舍弃,继续接收其他的有效载荷数据,直到所有的有效载荷数据均正确收到,此时,根据校验通过的有效载荷数据的索引号,将检验通过的有效载荷数据存储至文件预设位置。

具体的,利用组播播发设备每次读取包含预设数量的TS包的TS数据流作为一个UDP包,并将该UDP包以单元包的形式发送至组播环境。

需要说明的是,一个TS数据流包括多个TS包,在将TS数据流发送至组播环境时,需要保证该TS数据流中的每个TS包均发送一遍。在对TS数据流中的各个TS包发送一遍后,继续从TS数据流中的第一个TS包开始,循环播发。

综上可知,本发明实施例公开了一种数据下载装置,服务器端根据客户端发送的下载请求查找待下载数据文件,对待下载数据文件进行拆分,得到N个数据包,针对每一个数据包均添加上数据包索引得到目标数据包,基于Section,将每个目标数据包封装成TS格式得到M个TS包,将预设数量的TS包打包成一个UDP包,并将UDP包中的TS数据流按照索引顺序循环播发至客户端,由客户端从TS数据流中解析出各个有效载荷数据,并进行校验,将校验通过的有效载荷数据存储至文件预设位置,直至接所有的有效载荷数据均校验通过且存储至文件预设位置。由此可以看出,本发明用TS技术替代传统方案的组播私有协议,将添加数据包索引的目标数据包,封装成TS格式的TS包,并以TS数据流的方式发送至客户端。由于TS数据流具有数据下发可轮播以及数据传输单元性的特性,并且,TS规范本身带有校验机制,从而解决了组播传输数据不可靠的问题。

另外,由于本发明在数据下载时,采用了组播TS技术,因此避免了传统方案使用组播私有协议和组播私有容错机制带来的开发调试工作量,从而简化了数据传输设计的复杂度,并减少了工作量;同时,相对于使用http播发数据而言,本发明还减少了带宽压力,从而降低了购买服务器的成本。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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