专利名称:数据分块传输方法
技术领域:
本发明涉及一种通过网络传输数据的方法,尤其涉及一种将数据分块进行传输的方法。
背景技术:
通过网络传输数据时,对一个实时内容源或存储的内容文件,在传输中它们要被分解为许多包,由于网络是动态变化的,各个包选择的路由可能不尽相同,故到达客户端的时间延迟也就不等,甚至先发的数据包还有可能后到。为此,使用缓存系统来弥补延迟和抖动的影响,并保证数据包的顺序正确,从而使媒体数据能连续输出,而不会因为网络暂时拥塞使播放出现停顿。通常高速缓存所需容量并不大,因为高速缓存使用环形链表结构来存储数据通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。
在传统的单播传输方式中,要实现数据传输需要服务器的大力参与,通过将内容源或文件上传到某个特定的网站,用户再到某个网站搜索需要的内容源或文件,然后下载,这种方式的不便之处不言而喻。流式传输方式之一是单播传输,源端和每一客户端需要单独的数据通道。在这种通信方式下,源IP主机向指定的目标IP主机发送数据包,从源端送出的每个数据包只能传送给一个客户端,源端必须向每个希望接收此数据包的客户端发送一份单独的数据包拷贝。这种巨大的冗余会带来很大的代价,首先,会给发送数据的源主机带来沉重的负担,因为它必须对每个要求都做出响应,这使得主机的响应会大大延长;其次对路由器和交换机的性能也提出了更高的要求,管理人员被迫购买本来不必要的硬件和带宽来保证一定的服务质量,这是单播传输的重要缺陷。当前,由于P2P(peer to peer,对等互联或点对点技术)的出现,使服务器到服务器、服务器到PC机、PC机到PC机,PC机到WAP手机的对话成为可能,不需要所有数据都从中心服务器下载,互联网上任意两台PC都可建立实时的联系,建立了这样一个安全、共享的虚拟空间,人们可以进行各种各样的活动,这些活动可以是同时进行,也可以交互进行。
流媒体传输和一般的网络文件传输相比,有着数据量大、时延敏感性强、持续时间长等特点,虽然P2P有多种技术,但在传输流媒体时都有以下缺点实时性差、难以控制、数据的完整性和传输速度难以平衡。
发明内容本发明的主要目的就是为了解决现有技术的问题,提供一种数据分块传输方法,实时性好、传输速度快、网络利用率高、安全性强。
本发明的次一目的就是为了解决现有技术的问题,提供一种数据分块传输方法,使传输速度更快。
本发明的再一目的就是为了解决现有技术的问题,提供一种数据分块传输方法,保证数据传输的完整性和安全性。
为实现上述目的,本发明提出的一种数据分块传输方法,包括以下步骤A1、用于发送数据的源端不断监控待接收数据的客户端的连接请求和断开连接,为请求传输同一内容的客户端建立一控制数据集,控制数据集包括各客户端相互通信用的必要数据和反映控制数据集变化的标记;B1、源端将加入到控制数据集中的客户端分成M组,每组中的客户端至少有一个且使每组中的客户端尽量相等,其中M为一等于1或大于1的自然数;C1、源端将控制数据集发送到客户端;D1、源端将客户请求传输的内容分成数据块分别传送给M组客户端;E1、M组客户端根据控制数据集相互之间交换数据块,组成完整的内容。
特别的,还包括以下步骤当源端监测到有客户端请求连接和断开连接时,即变更控制数据集、重新标记控制数据集,并将变更后的控制数据集传输到已连接上的客户端。对变更后的控制数据集进行标记时是按照其变化的次序标记。
上述控制数据集中的各客户端之间能依赖控于制数据集相互通信。
步骤C1中只有客户端连接时或控制数据集有变时,源端才将控制数据集或控制数据集变形后传输到客户端,从而减少了数据传数量。
步骤D1所述的内容分块传送包括以下步骤D11、源端将需传输的内容分成长度适合的块;D12、对数据块加上包括内容标记、块号、时间截和校验和的附加信息,打包放在待发的缓冲区;D13、源端每次从缓冲区中取出M个内容包,将M个内容包标上与M个组一一对应的组号,然后按照组号分别传输给各组中的所有客户端。
本发明的进一步改进是步骤E1所述的M组客户端之间的数据交换为收到内容包的客户端根据最新的控制数据集中的客户端组别、客户端的通信数据,将接收到的内容包主动转发给与其自身所在组别不同的组别中与其相对应的客户端。从而使各客户端一起实现了协同传输,传输内容具有实时性。
本发明的更进一步改进是等待内容包的客户端在超过约定的接收时间内未能收到内容包,则根据最新的控制数据集,向同组的某个客户端发出补包请求,要求该客户端向其补发所缺内容包。同组的客户端在收到补包请求后,判断补包请求合法时,则查找所请求的内容包,如果找到则转发,如果找不到则转告原因。从而提供了服务保证机制。
当实时性要求不高时,客户端要求补发某内容包并不限于当前,也可以是负责补发客户端以前存在的内容包。
本发明的有益效果是1)源端根据请求传输内容的客户端的数量,建立控制数据集,并将客户端分成若干组,将需传输的内容根据客户端的组数分块,并分别传输给每一组的所有成员,不同组别之间的客户端又相互之间传输接收到的数据块。这样,避免了所有客户端从源端下载整个内容,避免了网络塞车现象,提高了网络利用率,提高了传输速度和下载速度。由于传输是根据实时的、最新的控制数据集,可合理安排数据合理传输,安全、可靠地传输。2)不同组别的客户端相互之间传输数据块采用主动传输,各客户端一起实现了协同传输,进一步提高了数据传输速度。3)缺包的客户端可要求同组的客户端补包,保证了客户端下载内容的完整性。4)网络上的活动依赖于控制数据集,安全性强。
本发明的特征及优点将通过实施例结合附图进行详细说明。
图1是本发明一种实施例的系统结构示意图;图2是本发明的源端和客户端以及客户端之间传输数据的示意图;图3是本发明一种实施例中源端的控制数据集的建立及更新流程图;图4是本发明一种实施例中数据分块传输流程图;图5是本发明一种实施例中客户端接收内容包的流程图。
具体实施方式如图1所示,源端包括接收连接/断开请求单元、建立控制数据集单元、控制数据集存储单元、控制数据集比较单元、控制数据集变化存储单元、分组单元、需传输内容存储单元、分块单元、缓冲区、读取单元、数据包处理单元、数据发送单元。客户端包括请求连接单元、数据接收单元、控制数据集存储单元、内容包缓冲池、标记单元、控制单元、存储单元和数据发送单元。
源端对于需传输的内容有一个控制数据集,由标记,控制策略,各客户端的通讯数据(如IP地址,端口,传输质量,特性)等组成。当客户端需要接收内容时,便通过客户端的请求连接单元向源端发出传输请求,源端对请求做合法性判断,若允许传输,将客户端传输用的控制数据添加到源端的控制数据集,此时,称连接。当客户端断开连接时(主动或非主动),源端将客户端从控制数据集中删除,表示脱离内容传输。源端每建立一个新的控制数据集,都要存储到控制数据集存储单元,控制数据集存储单元中保存(仅保存)最近多个控制数据集Fi,......,Fn,每一次客户端的连接或断开,都会造成源端控制数据集变化,源端控制数据集任何变化均须重新标记,以区别旧标记,对变更后的控制数据集进行标记时是按照其变化的次序标记。第n个为最新控制数据集,标为Fn。控制数据集比较单元比较Fn和Fn-1,并将变化部分存储在控制数据集变化存储单元中,组成数据包后通过数据发送单元发送给每个与源端连接的客户端。
源端在客户端请求连接时首先进行初始化,检查客户端的合法性,只有合法的客户端才能进入控制数据集,初始化还包括源端将控制数据集传送给客户端。
当客户端向源端请求连接时,可用UDP协议提出请求,并用UDP协议返回控制数据集,打通通信链路。
客户端通过数据接收单元接收到控制数据集变化部分后,将存储在控制数据集存储单元中的控制数据集更新为最新。
当每次客户端的连接或断开,源端的分组单元按控制策略将客户端分成M组(M=1,2,...,连接客户端数),每组有N个客户端(N=1,2,...,连接客户端数)。大约有M*N客户端,这种划分是大致的,实际数量与M*N之差可以用空客户端补上。控制策略的变化也反映在控制数据集上。其中,M和N为大于1的自然数。
源端的分块单元将需传输的内容分成块,块的最大长度是可选的,但最好以适合Internet UDP协议传输的长度为好,比如(1460-打包附加字节数)字节,分成的块加上附加信息,附加信息包括内容标记、块号、时间截、校验和等等,块的块号是连续有序的,由块号可判定该块所载内容的位置。将块打包,放在待发的缓冲区上。
待发的缓冲区将数据包以队列方式存储,当缓冲区存满,新包代替最老的包。
循环地,源端的读取单元根据最新控制数据集中的客户端的组别数M,取待发缓冲区M个包分成M组(每一个包成一组),M个包分别标上与M个组一一对应的组号,M个包的组号分别是1-M,输出到数据发送单元,数据发送单元根据最新控制数据集中的客户端的组别、IP地址和端口等通讯地址将M个内容包按照组号分别对应的传输给M个组中的每一个成员。源端在每次传输M个内容包中,使得每个客户端从源端直接收到且仅收到一个具有本组组号的内容包(特殊情况除外,如补发),例如第K组的每一个客户端(K组有N个客户端)都收到标有K组组号的第K内容包,传输同时给内容包加上控制数据集的标记Fn和时间截等等。
当客户端接收到内容包后,将收到的内容包放置接收缓冲池,接收缓冲池以队列方式存储,当缓冲区存满,新包代替最老的包。
当客户端收到内容包后,控制单元检测内容包放置在接收缓冲池中的位置,在标记单元中相应位置记上已收到标记,并记下在接收缓冲池的位置。
每在标记单元中标记一个位置,控制单元就检查标记单元中中的内容包标记表,判定已到内容是否有连续性,将有连续性的内容包(即已接收好的内容)保存到存储单元或使用之。
源端依赖控制数据集给客户端传输内容,各客户端之间也依赖控制数据集相互通信,转发内容和补发内容。所以内容传输只在源端和控制数据集内的客户端之间进行,除传输控制外,值此,可以保护传输的内容。
当客户端收到内容包时,根据控制数据集中的最新控制数据集,按客户端所属组及成员,根据具体的设定向其它各组相应的成员转发,如K组的i成员,向非K组的i成员,转发K组内容包。当某组成员为空时(组内实成员数小于N时存在空成员),由源端负责传输需转发的内容包。
客户端定期向源端发送传输质量数据,同时此发送也作客户端存活标志。
控制策略包括当客户端的传输质量超出设定的参数范围时,控制该客户端退出本内容传输,可以转入其他通信质量的内容传输组别或按断开连接处理。
控制数据集还指出如何在不同组之间转发,同时指出由组内那个客户端负责补发内容。M,N的设定如下A1)当N=1时,由源端负责补发内容。
A2)由客户端负责补发内容时N>1。
A3)设每次处理t秒内容,传输速率是s(字节/秒),得M0=s*t/内容包大小(字节)当连接客户端数>M0时,M不大于M0A4)当满足A2及A3时,尽量使M*N接近于连接客户端数。
内容可以选自于音/视频数据、计算机文件和网络上的UDP数据包。
如图2所示,为源端和客户端或不同组的客户端之间的数据传输示意图。
如图3所示为控制数据集的建立及更新流程图,包括以下步骤在步骤101,源端接收到客户端的连接请求或断开,当客户端断开时,直接执行步骤104;当客户端请求连接时,执行步骤102;在步骤102,源端判断客户端的连接请求是否合法,如果合法则执行步骤104;如果不合法则执行步骤103,拒绝连接;在步骤104,源端根据客户端的连接和断开更新源端的控制数据集,然后执行步骤105;在步骤105,源端将最新的控制数据集传输到每个与源端连接的客户端,源端必须将控制数据集传输到各个已连接上的客户端,努力在内容传输之前将客户端控制数据集与源端保持一致。控制数据集传输可以是直接传输整个控制数据集,最好是将最新的控制数据集与前一个控制数据集比较后只传输变化的部分。只传输变化的部分有多种传输方法,包括以下步骤1、源端对于连续变化的数据按设定时间间隔连续提取数据集并按照提取的先后次序进行标记,且此标记是唯一的、连续的;2、源端将最新数据集的整集与其前一个数据集的整集按符号进行比较,得出变化串;3、将变化串进行变形并进行相应标记后得到变化集;4、将变化集传输到客户端,以供客户端根据其当前的数据集将数据集更新为最新数据集,并将该最新数据集标记上与源端上的最新数据集相同的标记。
“符号”统指字节、半字、字、双字、或任何其它预先选定改善的二进制数,为便于理解,这里假定数据是字节形成的,可以为一个字节或两个字节。
在很多动态变化的数据集,通常在一定时间内变化的量很少,在只传输变化部分的传输模式中,将数据集划分成若干符号,由于符号的随意性很大,其长度可以为一个字节,也可以为两个字节等,一个项目可能划分为多个符号,数据集之间按照符号为单位进行比较,缩小了比较的单位,所以得出的变化串的字节的长度减小,从而大大减少了传输量,提高了传输速度,减少了对带宽的要求。
优选方式是采用相对位置标记法,即每个变化集包括开始标记、新的数据集标记、旧的数据集标记、至少一个变化串元素及该变化串元素相对于数据集开始位置的偏移值,变化串元素包括变化串元素头部和变化串,变化串元素头部包括变化串头标记和变化串长度。
如图4所示为数据分块传输流程图,包括以下步骤在步骤202,源端将需传输的内容分成长度合适的块,将数据块加上附加信息预打包,然后执行步骤203;在步骤203,将内容包以队列方式存储在待发的缓冲区,然后执行步骤204;在步骤204,源端每次从缓冲区中取出M个内容包,将每个内容包标上相应的组号、控制数据集的标记Fn和时间截等等,打包后执行步骤205;在步骤205,源端检查是否有更新的控制数据集,如果有,则执行步骤206,先传输控制数据集到每个客户端;如果没有则执行步骤207;在步骤207,源端根据控制数据集中客户端的组别和客户端的IP地址和端口将M个内容包分别发送给M组的每一个客户端;在步骤208,每一组的客户端都接收到一个内容包,同组的客户端接收到的内容包相同,不同组别之间根据控制数据集中的客户端组别、IP地址和端口等通讯数据向不同组别的客户端主动发送其从源端接收到的内容包,当不同组别中与该客户端相对应的客户端为空时,不转发内容包。经过不同组别的客户端之间的相互交换内容包,每个客户端都可以接收到所有的内容包,组合成完整的内容。
如图5所示为客户端接收内容包的流程图,包括以下步骤在步骤301,客户端接收从源端或其他不同组别的客户端发送的内容包,然后执行步骤302;在步骤302,客户端将接收到的内容包村处在接收缓冲池中,然后执行步骤303;在步骤303,客户端更新标记单元中的标记表,在标记表中相应位置记上已收到标记,并记下在接收缓冲池的位置,然后执行步骤304;在步骤304,判断该接收到的内容包是否来自源端,如果来自源端则执行步骤305,向不同组别的相应的客户端主动转发该内容包;如果不是来自源端则执行步骤306;在步骤306,判断标记表中已到内容是否有连续性,如果有连续性的内容,则执行步骤307,将有连续性的内容包保存到存储单元或使用,然后执行步骤308;如果没有连续性的内容则执行步骤308;在步骤308,判断是否超出约定的接收时间,如果没有,则执行步骤301,继续接收内容包;如果超出约定的接收时间还未收到内容包,则执行步骤309;在步骤309,要求同组的客户端补发缺少的该内容包,当本组只有一个客户端或补发内容包不成功时,该客户端向源端要求补发所缺内容包。然后执行步骤310;在步骤310,判断是否超过约定的补包接收时间,如果没有,则执行步骤311,继续等待补发的内容包;如果已经超出了补包接收时间还未收到补发的内容包,则执行步骤312,按丢包处理。
本发明中,只有在客户端和源端连接成功后,客户端才可以跟源端或其它的客户端互相通信,也就是,只有登记在控制数据集上的客户端,以及源端才能相互正确传输内容,保证了内容传输的安全。
权利要求
1.数据分块传输方法,其特征在于包括以下步骤A1、用于发送数据的源端不断监控待接收数据的客户端的连接请求和断开连接,为请求传输同一内容的客户端建立一控制数据集,控制数据集包括各客户端相互通信用的必要数据和反映控制数据集变化的标记;B1、源端将加入到控制数据集中的客户端分成M组,每组中的客户端至少有一个且使每组中的客户端尽量相等,其中M为一等于1或大于1的自然数;C1、源端将控制数据集发送到客户端;D1、源端将客户请求传输的内容分成数据块分别传送给M组客户端;E1、M组客户端根据控制数据集相互之间交换数据块,组成完整的内容。
2.如权利要求1所述的数据分块传输方法,其特征在于还包括以下步骤当源端监测到有客户端请求连接和断开连接时,即变更控制数据集、重新标记控制数据集,并将变更后的控制数据集传输到已连接上的客户端。
3.如权利要求2所述的数据分块传输方法,其特征在于对变更后的控制数据集进行标记时是按照其变化的次序标记;所述控制数据集的传输是指只传输控制数据集的变化部分。
4.如权利要求3所述的数据分块传输方法,其特征在于所述控制数据集变化部分的传输包括以下步骤A2、源端对于连续变化的数据按设定时间间隔连续提取数据集并按照提取的先后次序顺序标记;B2、源端将最新数据集的整集与其前一个数据集的整集按符号进行比较,得出变化串;C2、将变化串进行变形并进行相应标记后得到变化集;D2、将变化集传输到客户端,以供客户端根据其当前的数据集将数据集更新为最新数据集,并将该最新数据集标记上与源端上的最新数据集相同的标记。
5.如权利要求1至4中任一项所述的数据分块传输方法,其特征在于步骤D1所述的内容分块传送包括以下步骤D11、源端将需传输的内容分成长度适合的块;D12、对数据块加上包括内容标记、块号、时间截和校验和的附加信息,打包放在待发的缓冲区;D13、源端每次从缓冲区中取出M个内容包,将M个内容包标上与M个组一一对应的组号,然后按照组号分别传输给各组中的所有客户端。
6.如权利要求5所述的数据分块传输方法,其特征在于步骤D12所述的块的块号是连续有序的,由块号判定该块所载内容的位置。
7.如权利要求6所述的数据分块传输方法,其特征在于步骤E1所述的M组客户端之间的数据交换为收到内容包的客户端根据最新的控制数据集中的客户端组别、客户端的通信数据,将接收到的内容包主动转发给与其自身所在组别不同的组别中与其相对应的客户端;当不同组别中与该客户端相对应的客户端为空时,不转发内容包。
8.如权利要求7所述的数据分块传输方法,其特征在于还包括补包步骤等待内容包的客户端在超过约定的接收时间内未能收到内容包,则根据最新的控制数据集,向同组的某个客户端发出补包请求,要求该客户端向其补发所缺内容包。
9.如权利要求8所述的数据分块传输方法,其特征在于在补包步骤中,同组的客户端在收到补包请求后,判断补包请求合法时,则查找所请求的内容包,如果找到则转发,如果找不到则转告原因。
10.如权利要求9所述的数据分块传输方法,其特征在于当本组只有一个客户端或补发内容包不成功时,该客户端向源端要求补发所缺内容包。
11.如权利要求8所述的数据分块传输方法,其特征在于客户端接收到内容包后包括以下处理步骤客户端将收到的内容包放置在接收缓冲池中,接收缓冲池将内容包以队列方式存储;在内容包标记表的相应位置记录已收到该内容包的标记,并记下该内容包在接收缓冲池中的位置;不断检查内容包标记表,判定已到内容是否有连续性,将有连续性的内容包保存或使用。
12.如权利要求10所述的数据分块传输方法,其特征在于客户端如果在超过约定的时间仍未能收到应收的内容包,则按丢包处理。
13.如权利要求10所述的数据分块传输方法,其特征在于所述源端依赖控制数据集给客户端传输内容,各客户端之间也依赖控制数据集相互通信,转发内容和补发内容。
14.如权利要求1所述的数据分块传输方法,其特征在于所述源端在客户端连接时首先进行初始化,检查客户端的合法性,只有合法的客户端才能进入控制数据集,初始化还包括源端将控制数据集传送给客户端。
15.如权利要求8所述的数据分块传输方法,其特征在于客户端定期向源端发送传输质量数据,同时此发送也作客户端存活标志;所述控制数据集还包括控制策略,所述控制策略为当客户端的传输质量超出设定的参数范围时,控制该客户端退出本内容传输,可以转入其他通信质量的内容传输组别或按断开连接处理。
16.如权利要求1所述的数据分块传输方法,其特征在于所述内容为音/视频数据、计算机文件或网络上的UDP数据包。
全文摘要
本发明提出了一种数据分块传输方法,包括以下步骤用于发送数据的源端不断监控待接收数据的客户端的连接请求和断开连接,为请求传输同一内容的客户端建立一控制数据集,控制数据集包括客户端的通讯数据和反映控制数据集变化的标记;源端将加入到控制数据集中的客户端分成M组,每组中的客户端至少有一个且使每组中的客户端尽量相等,其中M为一等于1或大于1的自然数;源端将控制数据集发送到客户端;源端将客户请求传输的内容分成数据块传送给M组客户端;M组客户端根据控制数据集相互之间交换数据块,组成完整的内容。本发明传输速度快、网络利用率高、安全性强。
文档编号H04L29/06GK1913440SQ200510021479
公开日2007年2月14日 申请日期2005年8月9日 优先权日2005年8月9日
发明者张永敏 申请人:张永敏