CN101656756B - 一种发送速率自适应控制的文件传输方法及其系统 - Google Patents

一种发送速率自适应控制的文件传输方法及其系统 Download PDF

Info

Publication number
CN101656756B
CN101656756B CN200910092785A CN200910092785A CN101656756B CN 101656756 B CN101656756 B CN 101656756B CN 200910092785 A CN200910092785 A CN 200910092785A CN 200910092785 A CN200910092785 A CN 200910092785A CN 101656756 B CN101656756 B CN 101656756B
Authority
CN
China
Prior art keywords
piece
message
file
thread
client
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.)
Expired - Fee Related
Application number
CN200910092785A
Other languages
English (en)
Other versions
CN101656756A (zh
Inventor
王劲林
齐向东
刘学
李良斌
尤佳莉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Acoustics CAS
Beijing Hili Technology Co Ltd
Original Assignee
Beijing Zhongke Yixun Technology Co ltd
Institute of Acoustics CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Yixun Technology Co ltd, Institute of Acoustics CAS filed Critical Beijing Zhongke Yixun Technology Co ltd
Priority to CN200910092785A priority Critical patent/CN101656756B/zh
Publication of CN101656756A publication Critical patent/CN101656756A/zh
Application granted granted Critical
Publication of CN101656756B publication Critical patent/CN101656756B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种发送速率自适应控制的文件传输方法及其系统,采用UDP协议发送文件数据,其他指令全部由TCP协议完成;所述的文件数据以“块”为每次传输和验证完整性的基本单位,并通过采用动态调整发送“块”的大小细粒度调整发送速率;服务器将文件切分成1~N个“文件片段”,每个文件片段由一个UDP发送线程进行发送;服务器将按照预设的块的大小进行发送,客户端根据接收到块的完整性来验证结果是否请求服务器重发,如果服务器接收到客户端的重发请求,则会动态调整块的大小。并且采用动态调整传输线程数目来调整发送速率。本方法虽增加了少量网络开销,却有效地利用客户端接入的网络资源,降低了整个文件的传输时间。

Description

一种发送速率自适应控制的文件传输方法及其系统
技术领域
本发明涉及网络环境中文件传输技术领域,特别涉及一种发送速率自适应控制的文件传输方法及其系统。 
背景技术
在网络环境中点对点文件传输通常采用文件传输协议(FTP,File TransferProtocol)、超文本传输协议(HTTP,Hyper Text Transfer Protocol)等协议,其基本方法是采用传输控制协议(TCP,Transmission Control Protocol)来保证传输的可靠性。但是,这种可靠性的保证牺牲了传输效率,增加了传输时间,影响终端(用户)的体验。美国第6,085,251号专利公开了一种通过并行传输文件的方法来提高文件的传输效率。在这种方法中,一个服务器将单个文件分割成多个数据包,同时并行地向一个客户端发送这些数据包,最后客户端按照服务器提供的文件分割信息合并这些数据包。该方法采用的传输协议是FTP,虽然比单个FTP线程提高了传输效率,但还是无法避免TCP带来的开销。本专利并未提供或公开传输速率的控制。 
此外,利用用户数据报协议(UDP,User Datagram Protocol)可以提高传输效率,但由于UDP是一种无连接的传输层协议,特点是“简单不可靠”,UDP协议本身无法可靠信息传送。简单文件传输协议(TFTP,Trivial File Transfer Protocol)是利用UDP协议传输文件,通过重传机制能保证文件的完整性,但客户端每收到一个数据包都要给服务器发送一个确认包,这样增加了部分网络开销,且服务器在发出下一个数据包以前必须得到客户端上一个数据包的确认,也影响发送效率。 
中国第CN1981470A号专利公开了一种基于UDP协议并能实时调整传输速率的方法。在这种方法中,服务器以预估的传输速率发送数据,根据客户端返回的确认信号来进一步估计和调整发送速率。这种方法在时变网络下能调整发送速率,但客户端每收到一个“带标识的内容分组”都要向服务器返回确认,同样增加了部分网络开销;并且返回确认包也是通过UDP协议向服务器发送,在网络丢包严重的情况下,一个“带标识的内容分组”将出现多次重发。 
因此,需要一种高效的文件传输系统,该系统能根据客户端和网络的能力自动调整传输速率,且服务器端确切知道客户端接收报文状态,以避免多次重发,从而,能在客户端和网络能力允许下,能使整个文件传输时间缩短。 
发明内容
本发明的目的在于,提供一种根据客户端能力和网络能力能自适应控制传输速率的文件传输方法及其系统,以使该系统能最大限度的利用网络和客户端资源。 
为实现上述目的,本发明的一种发送速率自适应控制的文件传输方法,采用UDP协议发送文件数据,其他指令全部由TCP协议完成;所述的文件数据以“块”为每次传输和验证完整性的基本单位,并通过采用动态调整发送“块”的大小细粒度调整发送速率;该方法的步骤包括: 
1)客户端发起文件下载请求时,把能接收的块的最大值MaxBlock发给服务器端,服务器端的块信息同步模块在MaxBlock范围内取一个块的大小预计算文件片段切分的块的总数BlockNum,并把块信息发送给客户端; 
2)服务器端通过文件分片模块完成大文件的切分,把每一个大文件按上述的块的大小,切分成1~N个文件片段;每个文件片段由1~M个块组成,每个块都由1~L个报文组成,每个块和报文都有一个标识,块的标识在所属的文件片段中具有唯一性,报文标识在所属的块中也具有唯一性; 
3)服务器端通过UDP发送线程完成文件数据的发送,利用UDP协议按照报文的序号从小到大的顺序将每个文件片段的块信息发送给客户端; 
4)客户端根据块的大小预设接收时长,在设定时延后,验证一个接收块的完整性;如果块完整,将写入临时文件;如果块不完整,将根据块中报文丢失情况利用TCP协议向服务器请求重传整个块或缺少的报文; 
5)服务器端接收到重传整个块或缺少的报文的请求时,将请求重发的块编号或报文编号通知给发送线程管理模块,通过发送线程管理模块找到发送该块或缺少的报文的UDP发送线程,通知该UDP发送线程重新发送; 
6)服务器端通过块调整模块调整发送“块”的大小来细粒度调整发送速率,所述的块调整模块定时到重发管理模块查询这段时间内客户端的重发请求记录,然后到发送线程管理模块查询这段时间内已发送给客户端的块或报文的记录,根据请求重发和已发送的比率决定是否调整块的大小,当服务器端调整了块的大小时,把调整结果通知TCP收发线程,由TCP收发线程重新发送块信息通知客户端; 
7)客户端接收到所有的文件片段时,通过文件合并模块将根据文件片段描述信息重新组织文件。 
所述的块的大小是根据请求重发和已发送的比率进行调整,请求重发的比例高, 说明网络拥塞,服务器端要缩小块的大小;请求重发的比例低,表明网络丢包率低或服务器端和客户端处理能力强,服务器端就可以增加块的大小。 
该方法还进一步包括客户端可根据本地资源请求服务器调整发送线程数目,以利用传输线程数目来动态粗粒度调整发送速率的步骤: 
在初始条件下,客户端请求服务器端启动一个UDP发送线程进行发送;然后,服务器端的发送线程管理模块根据接收到的中心调度模块增加或减少线程的指令,开启或挂起UDP发送线程; 
当客户端探测自身还有能力开启一个或多个接收线程时,将请求服务器再开启其他线程进行发送其他文件片段,在同一时刻,所有的工作的发送线程发送的块的大小一致; 
当客户端资源紧张时,将通知服务器减少一个或多个接收线程,服务器按照线程开启时间倒序停止线程发送。 
所述的客户端的本地资源包括:自身的计算资源、网络资源和/或内存资源利用率。 
所述的块信息包括:块所属的文件片段编号(FilePieceID)、块在文件片段中的唯一编号(BlockID)和块包括的报文数(PackageNum)。 
所述的块信息指令被封装在TCP中,其数据结构为“文件片段总数+第一个文件片段所包括的块信息+第二个文件片段所包括的块信息+...+第N个文件片段所包括的块信息”,文件片段所包括的块信息数据结构为“文件片段编号+起始块编号+结束块编号+块所包含的报文数+最后块编号+最后块包括的报文数”。 
所述的文件数据被封装到UDP报文中,每个报文有一个文件片段编号、块编号和报文编号,这3个编号都从1开始递增,在文件中,文件片段编号唯一,在一个文件片段中,块编号和报文编号唯一,通过这3个编号,每个报文都能确定所属的文件片段、所属的块。 
所述的步骤4)中如果块不完整,客户端可采取3种策略处理该块: 
41)直接丢弃该块,向服务器请求重发该块; 
42)在内存保留该块,接着检查该块丢失的报文,向服务器请求重发丢失的报文;或 
43)接着检查该块丢失的报文,当丢失报文和块总报文数达到预设定的比率,如,50%,将丢弃该块,向服务器请求重发该块,反之,在内存保留该块,向服务 器请求重发丢失的报文。 
本发明的另一目的在于提供一种发送速率自适应控制的文件传输系统,包括服务器端和客户端,其特征在于:所述的服务器端采用UDP协议发送文件数据,其他指令全部由TCP协议完成;所述的文件数据以“块”为每次传输和验证完整性的基本单位,并通过采用动态调整发送“块”的大小细粒度调整发送速率; 
所述的服务器端包括: 
一文件分片模块,用于完成大文件的切分,把每一个大文件按一定大小,切分成1~N个文件片段;所述的每个文件片段由1~M个块组成,每个块都由1~L个报文组成,每个块和报文都有一个标识,块的标识在所属的文件片段中具有唯一性,报文标识在所属的块中也具有唯一性; 
块信息同步模块,用于根据客户端发起文件下载请求时发给服务器端的能接收的块的最大值MaxBlock,在MaxBlock范围内取一个块的大小预计算文件片段切分的块的总数BlockNum,并把块信息发送给客户端; 
UDP发送线程,用于完成文件数据的发送,利用UDP协议按照报文的序号从小到大的顺序将每个文件片段的块信息发送给客户端; 
一重发管理模块,用于接收客户端根据块中报文丢失情况利用TCP协议向服务器端发送的重传整个块或缺少的报文的请求,将请求重发的块编号或报文编号,通知发送线程管理模块; 
一发送线程管理模块,用于维护客户端占用的UDP线程、UDP线程所负责发送的文件片段对应关系和UDP线程本身状态,根据块编号及其块所属的文件片段找到发送的该块的UDP发送线程,通知该UDP发送线程重新发送; 
TCP收发线程,用于完成块信息同步、文件下载请求、重发请求、UDP线程数目调整请求的指令的传输; 
一块调整模块,用于定时到重发管理模块查询这段时间内客户端的重发请求记录,然后到发送线程管理模块查询这段时间内已发送给客户端的块或报文的记录,根据请求重发和已发送的比率决定是否调整块的大小,当服务器端调整了块的大小时,把调整结果通知TCP收发线程,由TCP收发线程重新发送块信息通知客户端; 
一中心调度模块,用于协调上述各模块之间的工作,服务器端只有一个中心调度模块,并维护正在下载的客户端在线信息; 
所述的客户端对应地包括: 
一TCP收发线程,用于完成块信息同步信息的接收、向服务器发起文件下载请求和重发请求; 
一文件合并模块,用于完成验证文件分段的完整性,并安装文件分段信息把完整的文件分段拼写成完整的源文件; 
一逻辑处理模块,用于完成协调各模块之间的工作,并维护客户端的UDP接收线程信息,和 
UDP接收线程,用于完成文件数据的接收,一个UDP接收线程和一个服务器的UDP发送线程一一对应。 
所述的块的大小是根据请求重发和已发送的比率进行调整,请求重发的比例高,说明网络拥塞,服务器端要缩小块的大小;请求重发的比例低,表明网络丢包率低或服务器端和客户端处理能力强,服务器端就可以增加块的大小。 
所述的发送线程管理模块,还进一步地用于接收中心调度模块增加或减少线程的指令,开启或挂起UDP线程,以利用传输线程数目来动态粗粒度调整发送速率。 
本发明在一个文件片段发送时,数据的传输和完整性验证的基本单位是块。在服务器开始发送一个文件片段,先利用TCP协议将预设的块的大小(即包含的报文数)通知给客户端,客户端根据块的大小预设定块的接收时延;服务器将按照报文序号从小到大的顺序进行发送,客户端在设定的时延后,验证一个接收块的完整性,如果块完整,将写入临时文件,如果块不完整,将利用TCP协议请求服务器重新传输整个块或块中的报文;服务器重发信息通知给发送线程,并根据请求重发和已发送比率进行调整块的大小,并利用TCP协议把调整后的块的大小通知给发送线程和客户端。该方法中块的大小是根据请求重发的情况进行调整,请求重发的比例高,说明网络拥塞,服务器要缩小块的大小;请求重发的比例低,表明网络丢包率低或服务器和客户端处理能力强,服务器可以增加块的大小。 
本发明还可利用调整发送线程数目来动态粗粒度调整发送速率的方法:服务器将文件切分若干个文件片段并生成文件片段描述信息,每个文件片段由一个UDP发送线程进行发送;服务器端将文件片段描述信息发送给客户端;客户端可根据本地资源请求服务器改变发送线程数目;当客户端接收到所有的文件片段时,将根据文件片段描述信息重新组织文件。 
本发明的按块传输是指服务器将每个文件片段的块信息发送给客户端,客户端从同步的块信息中获取每块包括的报文数;服务器利用UDP协议将按照报文的序号从小到大的顺序进行发送;客户端根据块的大小预设接收时长,在设定的时延后,验证一个接收块的完整性,如果块完整,将写入临时文件;如果不完整,客户端将先在内存保留此块,并查询缺少的报文,请求服务器重传整个块或缺少的报文。 
所述的报文是传输的最小单位,除一个文件最后一个报文,其他报文大小固定,每个报文并能封装在一个UDP报文中;例如,一个报文大小可以为MTU-28字节。 
所述的块由1~L个报文组成,块是客户端验证数据完整性的基本单位,块的大小可调整。所述的块信息包括:块所属的文件片段标识(FilePieceID)、块在文件片段中的唯一标识(BlockID)和块包括的报文数(PackageNum),对每次通知给客户端所有的块信息中,PackageNum最多为两种,一个文件片段中最后的块可能和前面的块所包括的报文数可能不一致。 
所述的块信息同步的方法包括:客户端发起文件下载请求时,把能接收的块的最大值(MaxBlock)发给服务器端,服务器在MaxBlock范围内取一个块的大小,服务器预计算文件片段切分的块的总数(BlockNum),并把块信息发送给客户端;当服务器调整了块的大小,重新发送块信息。因为每次通知给客户端所有的块信息中,PackageNum最多为两种,服务器可以采用压缩的方式进行发送块信息,例如指令为:FilePieceID+BlockNum+起始BlockID+结束BlockID+PackageNum(+结束BlockID2+PackageNum2)。 
所述的重传的方法为当客户端验证该块不完整时,根据块中报文丢失向服务器请求重传整个块或缺少的报文,服务器接收到请求时,通知发送线程重发;客户端在预设的时延后,如果再次验证块不完整,再次请求服务器重发。 
所述的块调整的方法为服务器根据客户端请求重发的情况进行调整,具体为根据请求重发和已发送的报文数比率进行调整。 
所述的客户端接收块时延设定的方法包括:因为UPD协议不能保证接收的顺序和发送顺序相同,服务器虽然按照块报文标识从小到大顺序发送,但是,报文到达客户端的顺序不能保证与发送的顺序一致;每次客户端接收到服务器通知块的大小时,预估一个块接收所需的时间(即块接收时延),在不丢包或出错的情况下,所估计的时间应该基本保证一个块的所有报文都能接收到;时长大小可以根据实际接收的速率和块的大进行调整。 
本发明的优点在于,本发明利用UDP协议完成文件数据传输,并利用TCP协议完成重传请求指令、文件分段信息通知指令和块信息通知指令。该方法充分利用了UDP协议的简单、快速特性和TCP可靠性,在提高传输效率的同时,可靠性也得到保证。本发明虽增加了少量网络开销,却有效地利用客户端接入的网络资源,在增加0.6%的开销下,缩短了文件整体传输时间。 
附图说明
图1为本发明的系统组成图; 
图2为本发明的客户端工作流程图; 
图3为本发明的服务器工作流程图; 
图4为本发明的服务器向客户端多线程发送文件示意图; 
图5为本发明的服务器向客户端所发送的文件数据报文数据结构图; 
图6为本发明的服务器向客户端所发送的块信息报文数据结构图。 
具体实施方式
下面,结合附图对本发明的流量自适应控制的文件传输方法及其系统进行详细地说明。 
图1为本发明的流量自适应控制的文件传输系统组成图,该系统包括服务器端和客户端。 
服务器包括:101)TCP收发线程、102)中心调度模块、103)文件分片模块、104)重发管理模块、105)发送线程管理模块、106)UDP发送线程、107)块调整模块,其中, 
101)TCP收发线程完成:块信息同步、文件下载请求、重发请求、UDP线程数目调整请求等指令的传输,一个TCP收发线程能为多个客户端提高服务,一台服务器并行允许多个TCP收发线程; 
102)中心调度模块协调各模块之间的工作,一台服务器只有一个中心调度模块,并维护正在下载的客户端在线信息; 
103)文件分片模块完成大文件的切分,把每一个大文件按一定大小,例如,1G字节,切分成文件片段,在一台服务器中,每个文件存一份文件片段; 
104)发送线程管理模块接收中心调度模块增加或减少线程的指令,开启或挂起UDP线程,并维护客户端占用的UDP线程、UDP线程所负责发送的文件片段对应关系和UDP线程本身状态; 
105)UDP发送线程完成文件数据的发送。在一个服务器上,有很多UDP发送线程,一个客户端同时可以占用几个UDP发送线程,但一个UDP发送线程同时只能为一个客户端服务,同时也只能负责发布一个文件片段; 
106)重发管理模块收到终端请求的重发的块编号或报文编号,通知发送线程管理模块,线程管理模块根据块编号和块所属的文件片段找到发送的该块的UDP发送线程,通知该线程重新发送; 
107)块调整模块定时,例如,180秒,到重发管理模块查询这段时间内客户端的重发请求记录,然后到发送线程管理模块查询这段时间内已发送给客户端的块(或报文)记录,根据2个记录比率决定是否调整块的大小,然后把调整结果通知TCP收发线程,TCP收发线程通知该客户端块的调整后信息。 
客户端包括:108)TCP收发线程、109)文件合并模块、110)逻辑处理模块、111)UDP接收线程,其中, 
108)TCP收发线程完成:块信息同步信息的接收、向服务器发起文件下载请求、和重发请求,一个TCP收发线程能为一个客户端上的多个UDP接收线程服务服务,一个客户端上只开启一个TCP收发线程; 
109)文件合并模块完成:验证文件分段的完整性,并安装文件分段信息把完整的文件分段拼写成完整的源文件; 
110)逻辑处理模块完成:协调各模块之间的工作,一台客户端只有一个逻辑处理模块,并维护客户端的UDP接收线程信息, 
111)UDP接收线程完成文件数据的接收,一个客户端同时开启UDP接收线程数目由403)方法决定的,一个UDP接收线程和一个服务器的UDP发送线程一一对应,同时也只能负责接收一个文件片段的数据。 
图2、3分别为本发明的客户端、服务器工作流程图,具体步骤包括:201)客户端发起文件下载请求、301)服务器处理文件下载请求、202)客户端接收文件准备、302)服务器发送文件、203)客户端接收文件、303)服务器处理重发请求、304)服务器调整块的大小、305)服务器通知客户端调整后的块信息、204)客户端处理调整后的块信息、205)客户端调整块接收时延。 
201)客户端发起文件下载请求:客户端通过TCP协议向服务器发送下载文件请求,携带将要下载的文件命名和自身能接收的块的最大值(MaxBlock); 
301)服务器处理文件下载请求:当服务器接收到一个客户端下载文件请求时,服务器在MaxBlock范围内取一个块的大小,服务器预计算文件片段切分的块的总数(BlockNum),并通知给客户端文件片段信息和块信息;通知数据结构如图6所示; 
202)客户端接收文件准备:客户端在接收到文件片段信息和块信息后,开启一个UDP接收线程、设定块的大小、估算接收每个块需要的时间,并把文件接收端口通知给服务器; 
302)服务器发送文件:在服务器接收到客户端UDP接收端口后,开启一个UDP发送线程,并按照报文的序号进行发送,直到一个文件片段发送完毕; 
203)客户端接收文件:客户端接收线程按照块的接收时延,依次检查每个块的完整性,在一个接收时延内,如待检查块的数据完整,将写入临时文件,如果数据不完整,客户端3种策略处理该数据块: 
203-1)直接丢弃该块,向服务器请求重发该块; 
203-2)在内存保留该块,接着检查该块丢失的报文,向服务器请求重发丢失的报文; 
203-3)接着检查该块丢失的报文,当丢失报文和块总报文数达到一定比率,例如,50%,将丢弃该块,向服务器请求重发该块,反之,在内存保留该块,向服务器请求重发丢失的报文; 
303)服务器处理重发请求:当服务器接收到客户端请求块或报文重发信息时,重发管理模块记录该信息,并通知线程管理器重发,线程管理模块根据块编号和块所属的文件片段找到发送的该块的UDP发送线程,通知该线程重新发送; 
304)服务器调整块的大小:块调整模块定时检查是否要调整块的大小,具体为根据请求重发的报文数和已发送的报文总数比率进行调整: 
304-1)当该比率小于预设定的比率最小值时,将适当增加块的大小; 
304-2)当该比率大于预设定的比率最大值时,将适当减少块的大小; 
304-3)当该比率在设定比率范围内时,将保持块的大小; 
例如,设定比率最小值为1%、最大值为10%,块调整模块检查到的比率为20%,将减少块的大小; 
305)服务器通知客户端调整后的块信息:当服务器对应一个客户端每修改一次块的大小,UDP发送线程就要重新调整未发送完的文件片段,服务器并把重新调整后的块信息通知给客户端,通知数据结构如图6所示; 
204)客户端处理调整后的块信息:客户端接收到块信息通知,将调整UDP接收线程块的大小,并调整块接收时延; 
205)客户端调整块接收时延:每次客户端接收到服务器通知块的大小时,预估一个块接收所需的时间(即块接收时延),然后,客户端再根据实际接收的速率和块的大进行调整接收时延,当在此时延内,接收到的报文总数和块所包含的报文总是比例大于设定的值时,将缩小时延;当该比例小于某个设定的值时,将增加延时;当该比例在设定的范围内,时延大小不变; 例如,块的大小为100个报文,在一个时延内,设定的最大比例为3,最小为2,如果接收到的报文数目大于400个,可以减少时延,如果接收的报文数目为150个,可以增加时延。 
图4为本发明的服务器向客户端多线程发送文件示图,服务器利用文件传输线程数目来动态粗粒度调整发送速率,包括: 
401)服务器将文件切分若干个文件片段并生成文件片段描述信息,在一个文件中,每个文件片段有唯一的编号,每个文件片段由一个UDP发送线程负责发送和重发;在同一时刻,所有的工作的发送线程发送的块的大小一致; 
402)在客户端请求下载时,服务器将文件片段描述信息发送给客户端,见301);当客户端接收到所有的文件片段时,将根据文件片段描述信息重新组织文件; 
403)线程数目调整方法:在初始条件下,客户端请求服务器启动一个线程进行发送;当客户端探测自身还有能力开启一个或多个接收线程时,将请求服务器再开启其他线程进行发送其他文件片段;当客户端资源紧张时,将通知服务器减少一个或多个接收线程,服务器按照线程开启时间倒序停止线程发送。 
图5为本发明的服务器向客户端所发送的文件数据报文数据结构图,发送的文件数据被封装到UDP报文中,每个报文有一个文件片段编号、块编号和报文编号,这3个编号都是从1开始递增,在文件中,文件片段编号唯一,在一个文件片段中,块编号和报文编号唯一,通过这3个编号,每个报文都确定所属的文件片段、所属的块。 
图6为本发明的服务器向客户端所发送的块信息报文数据结构图,指令信息被封装在TCP中,数据结构为:文件片段总数+第一个文件片段所包括的块信息+第二个文件片段所包括的块信息+......,文件片段所包括的块信息数据结构为:文件片段编号+起始块编号+结束块编号+这些块所包含的报文数+最后块编号+最后块包括的报文数。 
本发明以应用于网络环境下文件传输方法,整个方法和系统和具体网络类型、文件类型和文件格式无关,具有普遍性。对于本技术领域的技术人员,在不脱离发明原理的前提下,对本发明做出改动,例如,调整实例中参数、字节长度等,也视为本发明的保护范围。 

Claims (12)

1.一种发送速率自适应控制的文件传输方法,其特征在于:该方法采用UDP协议发送文件数据,其他指令全部由TCP协议完成;所述的文件数据以“块”为每次传输和验证完整性的基本单位,并通过采用动态调整发送“块”的大小细粒度调整发送速率;该方法的步骤包括:
1)客户端发起文件下载请求时,把能接收的块的最大值MaxBlock发给服务器端,服务器端的块信息同步模块在MaxBlock范围内取一个块的大小预计算文件片段切分的块的总数BlockNum,并把块信息发送给客户端;
2)服务器端通过文件分片模块完成大文件的切分,把每一个大文件按上述的块的大小,切分成1~N个文件片段;每个文件片段由1~M个块组成,每个块都由1~L个报文组成,每个块和报文都有一个标识,块的标识在所属的文件片段中具有唯一性,报文标识在所属的块中也具有唯一性;
3)服务器端通过UDP发送线程完成文件数据的发送,利用UDP协议按照报文的序号从小到大的顺序将每个文件片段的块信息发送给客户端;
4)客户端根据块的大小预设接收时长,在设定时延后,验证一个接收块的完整性;如果块完整,将写入临时文件;如果块不完整,将根据块中报文丢失情况利用TCP协议向服务器请求重传整个块或缺少的报文;
5)服务器端接收到重传整个块或缺少的报文的请求时,将请求重发的块编号或报文编号通知给发送线程管理模块,通过发送线程管理模块找到发送该块或缺少的报文的UDP发送线程,通知该UDP发送线程重新发送;
6)服务器端通过块调整模块调整发送“块”的大小来细粒度调整发送速率,所述的块调整模块定时到重发管理模块查询这段时间内客户端的重发请求记录,然后到发送线程管理模块查询这段时间内已发送给客户端的块或报文的记录,根据请求重发和已发送的比率决定是否调整块的大小,当服务器端调整了块的大小时,把调整结果通知TCP收发线程,由TCP收发线程重新发送块信息通知客户端;
7)客户端接收到所有的文件片段时,通过文件合并模块将根据文件片段描述信息重新组织文件。
2.根据权利要求1所述的发送速率自适应控制的文件传输方法,其特征在于:所述的块的大小是根据请求重发和已发送的比率进行调整,请求重发的比例高,说明网络拥塞,服务器端要缩小块的大小;请求重发的比例低,表明网络丢包率低或服务器端和客户端处理能力强,服务器端就可以增加块的大小。 
3.根据权利要求1所述的发送速率自适应控制的文件传输方法,其特征在于:该方法还进一步包括客户端可根据本地资源请求服务器调整发送线程数目的步骤:
在初始条件下,客户端请求服务器端启动一个UDP发送线程进行发送;然后,服务器端的发送线程管理模块根据接收到的中心调度模块增加或减少线程的指令,开启或挂起UDP发送线程;
当客户端探测自身还有能力开启一个或多个接收线程时,将请求服务器再开启其他线程进行发送其他文件片段,在同一时刻,所有的工作的发送线程发送的块的大小一致;
当客户端资源紧张时,将通知服务器减少一个或多个接收线程,服务器按照线程开启时间倒序停止线程发送。
4.根据权利要求3所述的发送速率自适应控制的文件传输方法,其特征在于:所述的客户端的本地资源包括:自身的计算资源、网络资源和/或内存资源利用率。
5.根据权利要求1所述的发送速率自适应控制的文件传输方法,其特征在于:所述的块信息包括:块所属的文件片段编号(FilePieceID)、块在文件片段中的唯一编号(BlockID)和块包括的报文数(PackageNum)。
6.根据权利要求5所述的发送速率自适应控制的文件传输方法,其特征在于:所述的块信息指令被封装在TCP中,其数据结构为“文件片段总数+第一个文件片段所包括的块信息+第二个文件片段所包括的块信息+...+第N个文件片段所包括的块信息”,文件片段所包括的块信息数据结构为“文件片段编号+起始块编号+结束块编号+块包含的报文数+最后块编号+最后块包括的报文数”。
7.根据权利要求1所述的发送速率自适应控制的文件传输方法,其特征在于:所述的文件数据被封装到UDP报文中,每个报文有一个文件片段编号、块编号和报文编号,这3个编号都从1开始递增,在文件中,文件片段编号唯一,在一个文件片段中,块编号和报文编号唯一,通过这3个编号,每个报文都能确定所属的文件片段、所属的块。
8.根据权利要求1所述的发送速率自适应控制的文件传输方法,其特征在于:所述的步骤4)中如果块不完整,客户端可采取3种策略处理该数据块:
41)直接丢弃该块,向服务器请求重发该块;
42)在内存保留该块,接着检查该块丢失的报文,向服务器请求重发丢失的报文;或 
43)接着检查该块丢失的报文,当丢失报文和块总报文数达到预设定的比率,将丢弃该块,向服务器请求重发该块,反之,在内存保留该块,向服务器请求重发丢失的报文。
9.根据权利要求8所述的发送速率自适应控制的文件传输方法,其特征在于:所述的步骤43)中的预设定的比率为50%。
10.一种发送速率自适应控制的文件传输系统,包括服务器端和客户端,其特征在于:所述的服务器端采用UDP协议发送文件数据,其他指令全部由TCP协议完成;所述的文件数据以“块”为每次传输和验证完整性的基本单位,并通过采用动态调整发送“块”的大小细粒度调整发送速率;
所述的服务器端包括:
一文件分片模块,用于完成大文件的切分,把每一个大文件按一定大小,切分成1~N个文件片段;所述的每个文件片段由1~M个块组成,每个块都由1~L个报文组成,每个块和报文都有一个标识,块的标识在所属的文件片段中具有唯一性,报文标识在所属的块中也具有唯一性;
块信息同步模块,用于根据客户端发起文件下载请求时发给服务器端的能接收的块的最大值MaxBlock,在MaxBlock范围内取一个块的大小预计算文件片段切分的块的总数BlockNum,并把块信息发送给客户端;
UDP发送线程,用于完成文件数据的发送,利用UDP协议按照报文的序号从小到大的顺序将每个文件片段的块信息发送给客户端;
一重发管理模块,用于接收客户端根据块中报文丢失情况利用TCP协议向服务器端发送的重传整个块或缺少的报文的请求,将请求重发的块编号或报文编号,通知发送线程管理模块;
一发送线程管理模块,用于维护客户端占用的UDP线程、UDP线程所负责发送的文件片段对应关系和UDP线程本身状态,根据块编号及其块所属的文件片段找到发送的该块的UDP发送线程,通知该UDP发送线程重新发送;
TCP收发线程,用于完成块信息同步、文件下载请求、重发请求、UDP线程数目调整请求的指令的传输;
一块调整模块,用于定时到重发管理模块查询这段时间内客户端的重发请求记录,然后到发送线程管理模块查询这段时间内已发送给客户端的块或报文的记录,根据请求重发和已发送的比率决定是否调整块的大小,当服务器端调整了块的大小 时,把调整结果通知TCP收发线程,由TCP收发线程重新发送块信息通知客户端;和
一中心调度模块,用于协调上述各模块之间的工作,服务器端只有一个中心调度模块,并维护正在下载的客户端在线信息;
所述的客户端对应地包括:
一TCP收发线程,用于完成块信息同步信息的接收、向服务器发起文件下载请求和重发请求;
一文件合并模块,用于完成验证文件分段的完整性,并安装文件分段信息把完整的文件分段拼写成完整的源文件;
一逻辑处理模块,用于完成协调各模块之间的工作,并维护客户端的UDP接收线程信息,和
UDP接收线程,用于完成文件数据的接收,一个UDP接收线程和一个服务器的UDP发送线程一一对应。
11.根据权利要求10所述的发送速率自适应控制的文件传输系统,其特征在于:所述的块的大小是根据请求重发和已发送的比率进行调整,请求重发的比例高,说明网络拥塞,服务器端要缩小块的大小;请求重发的比例低,表明网络丢包率低或服务器端和客户端处理能力强,服务器端就可以增加块的大小。
12.根据权利要求10所述的发送速率自适应控制的文件传输系统,其特征在于:所述的发送线程管理模块,还进一步地用于接收中心调度模块增加或减少线程的指令,开启或挂起UDP线程。 
CN200910092785A 2009-09-17 2009-09-17 一种发送速率自适应控制的文件传输方法及其系统 Expired - Fee Related CN101656756B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910092785A CN101656756B (zh) 2009-09-17 2009-09-17 一种发送速率自适应控制的文件传输方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910092785A CN101656756B (zh) 2009-09-17 2009-09-17 一种发送速率自适应控制的文件传输方法及其系统

Publications (2)

Publication Number Publication Date
CN101656756A CN101656756A (zh) 2010-02-24
CN101656756B true CN101656756B (zh) 2012-09-05

Family

ID=41710842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910092785A Expired - Fee Related CN101656756B (zh) 2009-09-17 2009-09-17 一种发送速率自适应控制的文件传输方法及其系统

Country Status (1)

Country Link
CN (1) CN101656756B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109474642A (zh) * 2019-01-08 2019-03-15 郑州云海信息技术有限公司 基于以太网udp协议数据传输方法、装置、设备及介质

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848067B (zh) * 2010-06-22 2015-01-28 中兴通讯股份有限公司 一种自适应带宽的数据传输方法及系统
CN102404182B (zh) * 2010-09-07 2014-12-31 中国移动通信集团公司 传输控制方法及装置
CN102111301A (zh) * 2011-03-28 2011-06-29 上海云高软件科技有限公司 一种通用文件传输系统及其实现方法
CN102340507A (zh) 2011-10-18 2012-02-01 中兴通讯股份有限公司 大对象传输方法及系统
WO2013091172A1 (zh) 2011-12-20 2013-06-27 华为技术有限公司 内容分发网络中文件下载方法、装置和系统
CN103188622A (zh) * 2011-12-30 2013-07-03 富泰华工业(深圳)有限公司 文件收发系统和方法及其文件收发装置
CN103248452B (zh) * 2012-02-10 2017-02-15 宇龙计算机通信科技(深圳)有限公司 数据发送装置、数据接收装置、终端和数据传输方法
CN102938791A (zh) * 2012-11-22 2013-02-20 上海文广互动电视有限公司 3d电视内容信息发送速率自适应控制的文件传输方法
CN103973421A (zh) 2013-02-06 2014-08-06 腾讯科技(深圳)有限公司 文件传送方法及装置
CN103856558B (zh) * 2014-01-22 2017-07-14 北京京东尚科信息技术有限公司 一种用于终端应用的数据处理方法和装置
CN104065643A (zh) * 2014-05-07 2014-09-24 上海文广互动电视有限公司 基于树形逻辑的多媒体网络传输方法及系统
CN104967634A (zh) * 2014-05-21 2015-10-07 腾讯科技(北京)有限公司 文件上传方法及装置
CN104022852B (zh) * 2014-06-25 2017-12-05 北京奇艺世纪科技有限公司 一种文件传输方法及装置
KR102196492B1 (ko) 2014-07-04 2020-12-30 삼성전자주식회사 통신 시스템에서 데이터 송수신 장치 및 방법
CN105450365A (zh) * 2014-08-20 2016-03-30 北大方正集团有限公司 消息发送和消息接收装置及其方法和消息交互系统
CN105430035A (zh) * 2014-09-18 2016-03-23 腾讯科技(北京)有限公司 一种上传网络数据的方法和装置
CN105635217B (zh) * 2014-11-03 2019-07-26 广州市动景计算机科技有限公司 文件下载的方法及装置
CN105573775B (zh) * 2014-11-05 2019-04-09 京微雅格(北京)科技有限公司 Fpga配置文件加载方法和解码器
CN105656967A (zh) * 2014-11-20 2016-06-08 中兴通讯股份有限公司 微波设备版本批量下载方法及装置
CN104618337B (zh) * 2014-12-31 2018-01-02 浙江理工大学 一种基于tcp/udp混合协议的流媒体无线自适应传输方法
CN104796460B (zh) * 2015-03-26 2019-03-22 小米科技有限责任公司 文件传输方法和装置
CN104967663A (zh) * 2015-05-12 2015-10-07 无锡天脉聚源传媒科技有限公司 一种文件传输方法及系统、文件发送装置与文件接收装置
CN105119968A (zh) * 2015-07-15 2015-12-02 天脉聚源(北京)教育科技有限公司 一种图片传输方法及装置
CN105450321B (zh) * 2015-11-06 2018-01-02 瑞斯康达科技发展股份有限公司 一种网络数据传输方法及装置
CN105491132A (zh) * 2015-12-11 2016-04-13 北京元心科技有限公司 文件服务器、终端及其文件分包传输方法
CN106059936B (zh) * 2016-08-10 2019-09-27 北京海誉动想科技股份有限公司 云系统组播文件的方法及装置
CN106341241B (zh) * 2016-08-18 2019-08-23 北京海誉动想科技股份有限公司 高丢包率云系统组播文件的方法及装置
CN107979582B (zh) * 2016-10-25 2020-08-14 央视国际网络无锡有限公司 一种udp数据流传输方法及其装置
CN106936852B (zh) * 2017-04-26 2020-03-06 海南云江科技有限公司 一种数据发送和接收方法、设备以及数据传输系统
CN107172181B (zh) * 2017-06-07 2020-12-04 河南辉煌城轨科技有限公司 一种基于双线程的文件传输方法
US10873535B2 (en) * 2017-08-10 2020-12-22 Mediatek Inc. Method and apparatus for avoiding packet fragmentation in mobile communications
CN108366112A (zh) * 2018-02-06 2018-08-03 杭州朗和科技有限公司 客户端的数据传输方法及系统、介质和计算设备
CN108965112A (zh) * 2018-08-09 2018-12-07 江苏神州信源系统工程有限公司 使用即时通讯软件进行文件传输的方法及装置
CN109327730B (zh) * 2018-09-11 2020-05-26 视联动力信息技术股份有限公司 一种数据包下载的方法和装置
CN109600423B (zh) * 2018-11-20 2021-07-06 深圳绿米联创科技有限公司 数据同步方法、装置、电子设备及存储介质
CN111211878B (zh) * 2018-11-22 2023-02-07 杭州海康威视系统技术有限公司 一种文件传输方法、装置、系统及电子设备
CN109660383B (zh) * 2018-11-23 2022-04-12 中国船舶重工集团公司第七0七研究所 一种信息化任务系统自适应网络接口模型
CN109451541A (zh) * 2018-12-21 2019-03-08 中国电子科技集团公司第三十研究所 一种无线网络环境下基于udp的数据传输速率自适应方法
CN109756568B (zh) * 2018-12-29 2022-05-27 上海掌门科技有限公司 文件的处理方法、设备及计算机可读存储介质
CN111586103A (zh) * 2020-04-08 2020-08-25 北京明略软件系统有限公司 一种文件片段下载方法及装置
CN111787105B (zh) * 2020-07-01 2023-07-07 深圳市有方科技股份有限公司 文件传输方法、装置、计算机设备和存储介质
CN112073386A (zh) * 2020-08-18 2020-12-11 浙江鸿城科技有限责任公司 一种基于udp协议无窗口可随机选取的文件传输方法
CN112492033A (zh) * 2020-11-30 2021-03-12 深圳市移卡科技有限公司 文件传输方法、系统及计算机可读存储介质
CN113612737A (zh) * 2021-07-20 2021-11-05 天津七所精密机电技术有限公司 一种基于分组与重传机制的长报文可靠传输方法
CN114079654B (zh) * 2022-01-05 2022-06-21 荣耀终端有限公司 数据重传方法、系统及相关装置
CN114553863B (zh) * 2022-04-27 2022-08-05 中国工商银行股份有限公司 文件传输方法及装置、存储介质和电子设备
CN116389178B (zh) * 2023-04-07 2023-11-03 国家气象信息中心(中国气象局气象数据中心) 一种数据文件udp组播丢失帧级补调方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1284809A (zh) * 1999-08-12 2001-02-21 阿尔卡塔尔公司 一个用户与至少一个数据库通信的方法
CN1504037A (zh) * 2001-04-27 2004-06-09 �Ҵ���˾ 数据通信方法、数据通信系统和程序
US20060023713A1 (en) * 2004-07-13 2006-02-02 Samsung Electronics Co., Ltd Retransmission control method and apparatus using the same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1284809A (zh) * 1999-08-12 2001-02-21 阿尔卡塔尔公司 一个用户与至少一个数据库通信的方法
CN1504037A (zh) * 2001-04-27 2004-06-09 �Ҵ���˾ 数据通信方法、数据通信系统和程序
US20060023713A1 (en) * 2004-07-13 2006-02-02 Samsung Electronics Co., Ltd Retransmission control method and apparatus using the same

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JP特开2006-13911A 2006.01.12
李永胜,黄兰红,刘红军.基于UDP协议的多文件传输.《广西民族大学学报》.2007,第13卷(第2期),全文. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109474642A (zh) * 2019-01-08 2019-03-15 郑州云海信息技术有限公司 基于以太网udp协议数据传输方法、装置、设备及介质

Also Published As

Publication number Publication date
CN101656756A (zh) 2010-02-24

Similar Documents

Publication Publication Date Title
CN101656756B (zh) 一种发送速率自适应控制的文件传输方法及其系统
US8930569B2 (en) Methods and apparatus for optimum file transfers in a time-varying network emvironment
CN102685204B (zh) 数据资源传输的方法和设备
CN102006283B (zh) 数据传输的方法和装置
US7349337B1 (en) Techniques for shaping data transmission rates
US10027781B2 (en) TCP link configuration method, apparatus, and device
WO2008112779A3 (en) Systems and methods for dynamic bandwidth control by proxy
US20110252152A1 (en) Reliable messaging system and method
US20040098748A1 (en) MPEG-4 live unicast video streaming system in wireless network with end-to-end bitrate-based congestion control
US20120170445A1 (en) Efficient application-layer automatic repeat request retransmission method for reliable real-time data streaming in networks
CN111211878A (zh) 一种文件传输方法、装置、系统及电子设备
CN101854286B (zh) 基于用户数据报协议的数据流发送、接收方法及装置
WO2002030067A1 (fr) Systeme de retransmission de paquets, dispositif de transmission de paquets, dispositif de reception de paquets, procede de retransmission de paquets, procede de transmission de paquets et procede de reception de paquets
DE60211335D1 (de) Echtzeitpaketisierung und Wiederübertragung in Streaming Anwendungen
EP2661029B1 (en) Avoiding Delayed Data
CN104065643A (zh) 基于树形逻辑的多媒体网络传输方法及系统
CN102395156A (zh) 应用于pdcp实体和rlc实体间的数据传输方法及装置
WO2006063349B1 (en) Methods and media access controller for broadband wireless communications with variable data unit size and delayed data unit construction
JP2006081193A (ja) 信頼性のないプロトコルによる頑強な通信システム及び方法
CN105245271B (zh) 卫星通信网络加速装置以及方法
CN105791154B (zh) 一种基于udp的数据传输方法及装置
CN102823207A (zh) 一种数据包的转发方法和设备
CN102938791A (zh) 3d电视内容信息发送速率自适应控制的文件传输方法
AU2007344308A1 (en) Method of real-time transmission/reception of data in packets between a server and a client terminal, corresponding server and terminal
CN102420684A (zh) Tcp数据流的处理方法以及通信设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100190 Institute of acoustics, Chinese Academy of Sciences, No. 21 West Fourth Ring Road, Haidian District, Beijing

Patentee after: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES

Patentee after: BEIJING ZHONGKE HAILI TECHNOLOGY Co.,Ltd.

Address before: 100190 Institute of acoustics, Chinese Academy of Sciences, No. 21 West Fourth Ring Road, Haidian District, Beijing

Patentee before: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES

Patentee before: BEIJING ZHONGKE YIXUN TECHNOLOGY Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120905