一种数据的传输方法和装置的制作方法

文档序号:7965109阅读:138来源:国知局
专利名称:一种数据的传输方法和装置的制作方法
技术领域
本发明涉及数据传输领域,特别涉及一种数据传输的方法和装置。
背景技术
在高速信息化的今天,人们越来越多的通过网络来进行数据的传输。尤其是大数据的传输日益增加,使得网络设备承受了比较大的负荷。如何实现大数据高速、准确的传输对提高工作效率有着积极的意义。
目前现有技术是采用TCP的滑动窗口协议来完成数据的传输。TCP滑动窗口技术是通过动态改变窗口大小来调节两个实体之间的数据传输。TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为0时,发送方一般不能再发送数据包。但有两种情况除外;一种情况是可以发送紧急数据。例如,允许用户终止在远端机上的运行进程。另一种情况是可以发送一个1字节的数据包来通知接收方重新声明它希望接收的下一字节及发送方滑动窗口的大小。假定发送方设备以每一次三个数据包的方式发送数据,也就是说,窗口大小为3。发送方发送序列号为1、2、3的三个数据包,接收方设备成功接收数据包,用序列号4确认。发送方设备收到确认,继续以窗口大小3发送数据。当接受方设备要求降低或者增大网络流量时,可以对窗口大小进行减小或者增加。本例降低窗口大小为2,则每一次发送两个数据包。当接收方设备要求窗口大小为0,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据,要求暂停发送。发送方接收到携带窗口号为0的确认,停止这一方向的数据发送。
网管产品要求将网元设备收集的大量性能数据传送到性能数据服务器(PerformanceData Server PDS),进行性能数据的统一分析处理。对于大数据的传输,目前现有技术存在以下缺点1.现有技术中的大数据传输方法需要利用TCP/IP协议,而网管产品在单板上可能没有TCP/IP协议栈,如果要实现标准的TCP协议也需要增加成本,并占用较多的资源,而且标准TCP协议无法满足通信系统对TCP/IP协议栈的严格需求,如可扩展性等;
2.网管产品对性能采集数据记录(Performance Collection Data Record PCDR)进行高效的数据传输过程中,由于PCDR的大小不一,有的只几十字节,有的大到几十千字节,如果直接使用TCP协议,那么对于大于MTU(最大传输单元,一般系统默认的TCP/IP数据包最大值为1500)字节的PCDR就会在IP层自动进行分片处理,从而增加了大数据的处理过程,使得大数据的传输效率降低;3.TCP协议中的滑动窗口协议方法在确认和写操作问题上有两种机制一种是先发送确认后进行写,如果发送确认后,未完成写操作时系统发生崩溃,这时会丢失数据单元;另一种是先进行写后发送确认,如果完成了写操作,未发送确认时系统崩溃,数据会重传造成重复数据单元,显然这样的崩溃恢复机制是不可靠的;4.TCP协议中的滑动窗口协议由于是标准协议的实现方法,通信行业对标准协议有严格统一的规范,不可能对它进行一些更改,这也造成了TCP的滑动窗口协议方法在控制接口的扩展能力方面比较弱。

发明内容
为了克服现有技术中TCP滑动窗口协议实现复杂、对大数据包要在IP层进行分片处理的缺点,本发明提出了一种数据的传输方法和装置。
所述技术方案如下首先使用控制命令帧在数据发送端和数据接收端建立块传输通道,然后所述数据发送端以固定大小滑动窗口的方式发送数据帧到所述数据接收端,所述数据接收端定期扫描当前滑动窗口内容,并且根据扫描结果发送所述数据帧的应答帧到所述数据发送端,所述数据发送端发送所述数据接收端请求的数据帧,一直到所述数据接收端收到了全部的数据帧,最后使用控制命令帧关闭所述块传输通道。
在数据发送端和数据接收端的缓冲区分别设立大小相同且固定的滑动窗口,将数据打包成块数据,并将块内数据分解成大小相同的数据帧,并执行以下步骤步骤A建立数据发送端和数据接收端之间的块传输通道;步骤B所述数据发送端向所述数据接收端发送所述滑动窗口中包含的数据帧;步骤C所述数据接收端接收到所述数据帧后,并定期扫描当前滑动窗口的数据帧的接收情况,根据扫描结果滑动当前滑动窗口,向所述数据发送端发送所述数据帧的应答,所述应答的内容包括请求发送的开始帧号和帧的数量;步骤D所述数据发送端收到所述数据帧的应答后,根据收到的所述数据帧的应答内容进行后续数据帧的发送,并执行步骤C,直至所述块数据中的数据帧全部发送完毕;
步骤E关闭所述数据发送端和所述数据接收端之间的块传输通道;步骤F重复执行步骤A至E,直到所述数据接收端收到所述数据发送端发送的全部所述块数据。
所述步骤A具体包括步骤A1所述数据发送端向所述数据接收端发送建立块传输通道的请求,所述请求的内容包括所述数据发送端发送的块数据的编号;步骤A2所述数据接收端收到所述请求后,向所述数据发送端发送建立块传输通道的应答,所述应答的内容包括所述数据接收端的块数据的编号;步骤A3检查是否是新启动,如果是,所述数据发送端向所述数据接收端发送强制建立块传输通道的请求,否则比较所述数据发送端当前的块数据编号和所述数据接收端的块数据编号是否一致,如果一致则块传输通道建立成功,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求。
所述步骤C中根据扫描结果滑动当前滑动窗口的步骤具体包括当所述数据接收端收到所述数据发送端发送的全部数据时,所述数据接收端的当前滑动窗口向数据尾帧方向滑动一个满窗口,并要求所述数据发送端向数据尾帧方向滑动一满窗口发送其窗口内的数据。
所述步骤C中根据扫描结果滑动当前滑动窗口的步骤具体包括当所述数据接收端没有收到所述数据发送端发送的全部数据时,所述数据接收端的当前滑动窗口滑动到第一个丢帧处,并要求所述数据发送端从丢帧处重新发送数据。
所述步骤D具体包括所述数据发送端收到所述数据帧的应答后,如果所述请求发送的开始帧号落在当前滑动窗口的范围内,则根据收到的所述数据帧的应答内容进行后续数据帧的发送,如果所述请求发送的开始帧号连续多次落在当前滑动窗口的范围外,则向所述数据接收端发送强制建立块传输通道的请求,重新发送所述块数据,直至所述块数据中的数据帧全部发送完毕。
所述步骤E具体包括步骤E1所述数据发送端向所述数据接收端发送关闭所述块传输通道的请求,所述请求的内容包括该块的编号和该块的总校验和;步骤E2所述数据接收端收到关闭所述块通道的请求后,将所述数据接收端收到的所述块数据进行保存,向所述数据发送端发送关闭所述块传输通道的应答,所述应答的内容包括所述数据接收端的块编号和所述块的保存应答;
步骤E3所述数据发送端收到所述应答后,检查所述块的保存是否成功,如果是则所述数据接收端将其状态进行持久化,所述持久化的信息为成功保存的所述块数据的编号,完成所述块数据的发送,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求。
所述将数据打包成块数据之前还包括将所述数据压缩的步骤。
本发明还提供了一种数据传输装置,所述装置包括数据发送端和数据接收端,所述数据发送端包括块通道建立请求发送模块、数据帧发送模块、块通道关闭请求模块,所述数据接收端包括块通道建立请求应答模块、定期扫描模块、数据帧接收模块、块通道关闭请求应答模块;所述块通道建立请求发送模块用于所述数据发送端向所述数据接收端发送建立块传输通道的请求,所述请求的内容包括所述数据发送端发送的块数据的编号;所述数据帧发送模块用于所述数据发送端向所述数据接收端发送所述滑动窗口中包含的数据帧和根据接收到的所述数据帧的应答进行所述数据帧的发送;所述块通道关闭请求发送模块用于所述数据发送端向所述数据接收端发送关闭所述块传输通道的请求,所述请求的内容包括该块的编号和该块的总校验和;所述块通道建立请求应答模块用于所述数据接收端收到所述请求后,向所述数据发送端发送建立块传输通道的应答,所述应答的内容包括所述数据接收端的块数据的编号;所述定期扫描模块用于所述数据接收端接收到所述数据帧后,并定期扫描当前滑动窗口的数据帧的接收情况,根据扫描结果滑动当前滑动窗口,向所述数据发送端发送所述数据帧的应答,所述应答的内容包括请求发送的开始帧号和帧的数量;所述数据帧接收模块用于接收所述数据发送端发送的数据帧;所述块通道关闭请求应答模块用于向所述数据发送端发送关闭所述块传输通道的应答,所述应答的内容包括所述数据接收端的块编号和所述块的保存应答。
所述装置进一步包括检查模块,所述检查模块用于检查是否是新启动,如果是,所述数据发送端向所述数据接收端发送强制建立块传输通道的请求,否则比较所述数据发送端当前的块数据编号和所述数据接收端的块数据编号是否一致,如果一致则块传输通道建立成功,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求。
所述定期扫描模块包括数据帧检查单元,所述数据帧检查单元用于检查所述数据接收端的数据帧的接收情况,如果检查到所述数据接收端收到全部数据,所述数据接收端的当前滑动窗口向数据尾帧方向滑动一个满窗口,并要求所述数据发送端向数据尾帧方向滑动一满口发送其窗口内的数据;如果检查到所述数据接收端没有收到全部数据,所述数据接收端的当前滑动窗口滑动到第一个丢帧处,并要求所述数据发送端从丢帧处重新发送数据。
所述数据帧发送模块包括帧号检查单元,所述帧号检查单元用于检查请求发送的开始帧号是否落在当前滑动窗口的范围内,如果落在当前滑动窗口范围内,则根据收到的所述数据帧的应答内容进行后续数据帧的发送,如果所述请求发送的开始帧号连续多次落在当前滑动窗口的范围外,则向所述数据接收端发送强制建立块传输通道的请求,重新发送所述块数据,直至所述块数据中的数据帧全部发送完毕。
所述块通道关闭请求应答模块包括块数据保存单元、块数据保存检查单元、状态持久化单元;所述块数据保存单元用于将所述数据接收端收到的所述块数据进行保存;所述块数据保存检查单元用于检查所述块数据的保存是否成功,如果成功则所述数据接收端将其状态进行持久化,完成所述块数据的发送,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求;所述状态持久化单元用于将所述数据接收端的所述块数据的成功保存状态信息进行持久化。
采用本发明所述方法与现有技术相比的有益效果是1.本发明所述方法由于引入了滑动窗口协议的上层控制命令,使得大数据的传输不要求协议栈底层存在TCP/IP协议栈,这样大大地提高了适用性;2.本发明所述方法对要发送的数据进行压缩打包并分帧发送(帧大小控制在小于MTU范围内),有效地克服了大数据在传输过程中在IP层自动进行分片处理地问题,提高了传输效率;3.本发明所述方法在数据接收端引入了状态持久化机制,使得崩溃恢复机制得以可靠的实现;4.本发明所述方法可以不需要TCP/IP协议栈,这样就解除了标准TCP协议的种种限制,从而大大地提高了控制接口的扩展能力,使得大数据的传输得以简单化。


图1是本发明所述FSSWTP协议栈层次图;图2是本发明所述数据发送端窗口示意缓冲图;
图3是本发明所述数据接收端窗口示意缓冲图;图4是本发明所述固定大小滑动窗口协议的控制方法流程图;图5是本发明所述大数据传输的装置结构图。
具体实施例方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。
为了解决大的PCDR在IP层自动进行分片处理的问题,本发明将多个PCDR数据打包成块数据,并将块内数据分解成大小相同的数据帧,数据发送时以块为控制单位,以帧(FRAME)为数据传输单元,帧的大小取1024字节或其它保证不会被IP分片的大小,并以固定窗口大小的滑动窗口方法来控制数据帧进行有效传输,在控制命令帧和数据传输帧中辅以数据校验来保证其有效性和安全性,在数据接收端引入状态持久化机制来实现崩溃恢复的可靠性。本发明还可以先将多个PCDR压缩后打包成块数据,这样可以进一步地提高数据的传输效率,而且本发明所述方法不仅适用于大数据的传输,对于一般数据的传输也有着同样的意义。
本发明所述的技术方案中,首先提出了固定大小滑动窗口传输协议(FSSWTP)。FSSWTP是个单边控制协议,由数据发送端(DST-Data Send Termination)发起控制命令,数据接收端(DRT-Data Receive Termination)根据控制命令产生应答。其协议栈可分为四层,如图1所示,从底到上分别是底层(LL-Lower Layer),协议不指定、IP层或兼容性IP层(和IETF RFC 791兼容)、TCP/UDP层或兼容性TCP/UDP层(和IETF RFC 793/768兼容)及FSSWTP层,其中IP层及TCP/UDP层可以缺失,FSSWTP直接通过LL层进行通讯及数据传输,其上为使用大数据滑动窗口传输方法的应用层。
下面首先描述FSSWTP的控制命令帧和数据传输帧的结构。FSSWTP控制命令帧和数据传输帧中的项如表1所示。

表1
在上述帧结构中,“Version”表示协议版本号;“Instantation Identity”表示滑动窗口实例的唯一标识。“Command Code”表示控制命令帧和数据传输帧的帧命令码。“Data Length”表示Application Data项中数据的长度。“Check Sum”表示整个帧的校验和。“Application Data”表示帧的应用数据,在Application Data项之前的各项构成控制命令帧和数据传输帧的头部。
控制命令帧和数据传输帧的帧命令码包括如下三对命令码BLOCK_REQUEST_SEND请求发送块帧BLOCK_REQUESTSEND_ACK 请求发送块帧的应答帧BLOCK_END 块结束帧BLOCK_END_ACK 块结束帧的应答帧FRAME_SEND数据帧FRAME_SEND_ACK数据帧的应答帧下面详细叙述FSSWTP的控制命令帧和数据传输帧的具体结构1)请求发送块帧和请求发送块帧的应答帧这一对命令用来打开一个块的传输通道。
请求发送块帧BLOCK_REQUEST_SEND帧结构如表2所示

表2上述帧结构的具体说明如下Block Identity该块的编号。
Block Data Length该块的数据总长度。
Start Data Frame Number该块的数据帧的起始帧号。
Data Frame Amount该块的数据帧的总帧数。
Force Flag当表示非强制时DRT接收后要同步数据帧帧号;当表示强制时DRT接收后要同时同步块编号与数据帧帧号并清空缓冲区。
Compression Identity该块所使用的压缩算法的标识。
请求发送块帧的应答帧BLOCK_REQUESTSEND ACK帧结构如表3所示

表3上述帧结构的具体说明如下Block Identity of DRTDRT的块的编号。
Data Frame Number of SW HeaderDRT滑动窗口头的帧号。
2)块结束帧和块结束帧的应答帧这一对命令用来关闭一个数据已被完全接收的块传输通道。
块结束帧BLOCK END帧结构如表4所示

表4
上述帧结构的具体说明如下Block Identity该块的编号。
Total Check Sum该块的总校验和。
结束帧的应答帧BLOCK_END_ACK帧结构如表5所示

表5上述帧结构的具体说明如下Block Identity of DRTDRT的块的编号。
Save ResultDRT的块的保存应答,如果保存失败,DST将重发该块的数据。
3)数据帧和数据帧的应答帧该对命令用于帧数据的传输和控制。数据帧FRAME_SEND帧结构如表6所示

表6上述帧结构的具体说明如下Frame Number该数据帧的帧号。
Frame Data该块具体分配到这一数据帧的数据。
数据帧的应答帧FRAME_SEND_ACK帧结构如表7所示

表7上述帧结构的具体说明如下Request Begin Frame Number请求发送的数据帧的开始帧号。
Request Frame Count请求发送的从Request Begin Frame Number开始的数据帧数量。
参见图2和图3,DST和DRT都维持一个存储数据的缓冲区,在缓冲区中引入固定大小滑动窗口。滑动窗口由窗口头和窗口尾之间的缓冲区组成,该滑动窗口之间的区域为固定的大小。DST和DRT分别使用一个合适的大小相同的滑动窗口。数据帧的应答帧驱动DST和DRT缓冲区中的窗口头帧号和窗口尾帧号保持同步,DST保证数据帧号在一个块范围内不会翻转。在DRT,当前滑动窗口范围内的帧对应允许接收的帧,窗口头以前的帧是已收到且已发回确认的帧,不允许接收,窗口尾后的帧要等待滑动窗口滑动才能接收。如果数据帧的应答帧中请求开始的数据帧号落在DST当前滑动窗口范围内,DST就滑动窗口继续发送DRT请求的数据帧;如果数据帧的应答帧中请求开始的数据帧号连续多次(连续3次以上)落在DST当前滑动窗口范围外,DST向DRT发送表示强制的请求发送块帧,准备重发当前块的数据。
为了加快数据传输速度,需要选择一个合适的发送滑动窗口大小,可参考如下的计算公式假设网络往返时延RTT是T1(s),网络带宽B(Mbps),传输的数据帧大小N(KB),DRT滑窗扫描间隔T2(s),DST处理延时T3(s),DRT处理延时T4(s)。则每秒最大可传输数据帧帧数是MAXSENDSIZE=(1-(T1+T3+T4)*(1/T2))*B*1024/8/N。DST最大滑窗大小MAXSWSIZE=(T2-T1-T3-T4)*B*1024/8/N。
本发明所述大数据的传输方法是分帧后的块数据的传输控制方法。FSSWTP的控制是以块为单位进行数据的发送,参见图4,块数据的传输过程包括如下步骤步骤A数据发送端向数据接收端发送建立块传输通道的请求,数据接收端向数据发送端发送应答,建立块传输通道。具体包括以下步骤步骤l01DST向DRT发送请求发送块帧,即建立块传输通道的请求,该帧的内容包括该块的编号、该块的数据总长度、该块的数据帧的起始帧号、该块的数据帧的总帧数、该请求发送块帧为非强制、以及该块所使用的压缩算法的标识。
步骤102DRT收到DST的请求发送块帧后,向DST发送请求发送块帧的应答帧,该帧的内容包括DRT的块编号和DRT滑动窗口头的帧号。
步骤103检查是否新启动,是执行步骤104,否则执行步骤105;步骤104DST向DRT重新发送强制的请求发送块帧,即重新建立块传输通道的请求,该帧的内容包括该块的编号、该块的数据总长度、该块的数据帧的起始帧号、该块的数据帧的总帧数、该请求发送块帧为强制、以及该块所使用的压缩算法的标识;DRT收到DST的请求后,向DST发送应答,并执行步骤106。
步骤105比较DST发送请求的块编号和收到应答的块编号是否一致,一致执行步骤106,否则执行步骤104。
至此,块通道建立成功,将进行数据帧的发送和接收。
步骤B数据发送端向数据接收端发送滑动窗口中包含的数据帧。具体包括以下步骤步骤106DST以固定大小滑动窗口的方式向DRT发送滑动窗口中包含的数据帧,数据帧的内容包括该数据帧的帧号和分配到该数据帧的数据。
步骤C数据接收端接收到所述数据帧后,并定期扫描当前滑动窗口的数据帧的接收情况,根据扫描结果滑动当前滑动窗口,向数据发送端发送数据帧的应答,应答的内容包括请求发送的开始帧号和帧的数量。具体包括以下步骤步骤107DRT接收到第一个数据帧后,启动定时器,以后定期扫描以检查当前滑动窗口内数据帧的接收情况,并按扫描结果滑动当前滑动窗口,以及向DST发送数据帧的应答帧,应答帧的内容包括请求发送的开始帧号和帧的数量。由于本步骤的具体内容比较复杂,将在后面进行详细叙述。
步骤D数据发送端收到数据帧的应答后,根据收到的数据帧的应答内容进行后续数据帧的发送,并执行步骤C,直至块数据中的数据帧全部发送完毕;步骤108DST收到DRT的应答帧后,检查请求发送的开始帧号是否落在DST当前滑动窗口范围内,如果是,说明请求发送的开始帧号以前的数据帧已经接收到,DST滑动当前滑动窗口,发送请求的数据帧,执行步骤109,如果多次落在当前滑动窗口范围外,说明DRT当前滑动窗口位置出现异常,执行步骤104;步骤109扫描DRT当前滑动窗口的数据帧,查看是否收到所有数据帧,如果是执行步骤110,否则执行步骤106;步骤E关闭数据发送端和数据接收端之间的块传输通道。具体包括以下步骤步骤110DST向DRT发送块结束帧,即关闭块传输通道的请求,该帧的内容包括该块的编号和该块的总校验和;步骤111DRT收到DST的块结束帧后,将块数据进行保存,向DST发送块结束帧的应答帧,应答帧的内容包括DRT的块的编号和DRT的块的保存应答;步骤112DST收到块结束帧的应答帧后,检查块的保存是否成功,如果是则数据接收端将其状态进行持久化,持久化的信息为成功保存的块数据的编号,执行步骤113,否则执行步骤104;步骤113完成块数据的发送。
步骤F重复执行步骤A至E,直到数据接收端收到数据发送端发送的全部块数据。具体包括以下步骤步骤114数据接收端检查是否收到了数据发送端发送的全部的块数据,如果收到了全部的块数据,数据发送端就结束数据的发送,否则执行步骤115;步骤115数据发送端继续向数据接收端发送下一个块数据,执行步骤101。
在DST,所有发送的帧(命令帧和数据帧)响应超时都会重发,但帧的内容不变。
所有帧都有校验和(Check Sum),接收后都要检验正确与否,不正确则直接丢弃。
步骤107具体处理过程如下本发明在DRT引入定期扫描来查看数据帧的接收情况。首先定期扫描DRT的当前滑动窗口内容,然后根据扫描结果DRT的当前滑动窗口进行滑动,最后向DST发送数据帧的应答帧。扫描结果大致分为以下两种情况1.正常情况DRT收到DST发送的全部数据帧。DRT的当前滑动窗口先滑动,然后发送Request Begin Frame Number和Request Frame Count,取值分别为当前滑动窗口尾帧号+1的帧号和0XFFFF的FRAME_SEND_ACK;DST收到该FRAME_SEND_ACK后,根据FRAME_SEND_ACK的Request Frame Count的值为0XFFFF,发送从Request BeginFrame Number开始的一满窗口的数据;2.非正常情况DRT没有收到DST发送的全部数据帧,即丢帧。在丢帧情况下,DRT会要求DST从丢帧处重新开始发送。
丢帧如果是数据接收端当前滑动窗口头数据桢,则数据接收端的当前滑动窗口先不滑动,向数据发送端发送请求开始帧号为当前滑动窗口的首窗口号,请求发送的帧的数量为1的数据帧的应答帧。
丢帧如果是包含数据接收端窗口头数据帧的连续的数据帧,则数据接收端的当前滑动窗口先不滑动,向数据发送端发送请求开始帧号为当前滑动窗口的首窗口号,请求发送的帧的数量为丢帧个数的数据帧的应答帧。
丢帧如果是任意一个非数据接收端窗口头数据帧或任意多个非连续的非数据接收端窗口头数据帧,则数据接收端的当前滑动窗口向前滑动到丢帧开始处,向数据发送端发送请求开始帧号为所述丢帧的帧号,请求发送的帧的数量为1的数据帧的应答帧。
丢帧如果是连续的数据接收端非窗口头数据帧,则数据接收端的当前滑动窗口向前滑动到第一个丢帧处,向数据发送端发送请求开始帧号为第一个丢帧的帧号,请求发送的帧的数量为丢帧个数的数据帧的应答帧。
丢帧如果是数据接收端窗口尾数据帧,则数据接收端的当前滑动窗口向前滑动到窗口尾,向数据发送端发送请求开始帧号为当前滑动窗口的尾窗口号,请求发送的帧的数量为0XFFFF的数据帧的应答帧。
丢帧如果是包含数据接收端窗口尾数据帧的连续数据帧,则数据接收端的当前滑动窗口向前滑动到第一个丢帧处,向数据发送端发送请求开始帧号为第一个丢帧的帧号,请求发送的帧的数量为0XFFFF的数据帧的应答帧。
下面以一个具体的例子来详细的说明上述过程例设窗口大小为10,DST及DRT当前的窗口号为10~19,DST首先发送一个窗口共10帧的数据,其帧号为10~19,当DRT定期扫描时发现其接收到如下窗口号的数据;a)12,13,14,15,16,17,19(其中缺少了10,11,18)DRT先不滑动窗口,发送Request Begin Frame Number和Request Frame Count取值分别为10和2的FRAME_SEND_ACK;DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,如果其为DST端当前窗口的首窗口号且Request Frame Count不为0XFFFF则发送其所要求的帧号为10和11的数据帧;DRT定期扫描后,发现缺少18号帧,DRT先窗口滑动8帧,发送Request Begin FrameNumber和Request Frame Count取值分别为18和1的FRAME_SEND_ACK给DST;
DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,因为18号帧不为DST端当前窗口的首窗口号,则将当前窗口向前滑动8帧,并发送帧号为20-27的数据帧,这样处理主要是防止帧号为18的帧滞后到达,减少发送重帧的数量;DRT定期扫描后,发现缺少18号帧,因为是窗口头数据帧,DRT先不滑动窗口,发送Request Begin Frame Number和Request Frame Count取值分别为18和1的FRAME_SEND_ACK给DST;DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,因为18号帧为DST端当前窗口的首窗口号,且Request FrameCount不为0XFFFF,则发送所要求的帧号为18的数据帧;至此缺少的帧号为10、11、18的数据帧DRT全部收到。
b)10,11,12,13,16,17(其中缺少14,15,18,19)DRT先窗口滑动4帧,发送Request Begin Frame Number和Request Frame Count取值分别为14和2的FRAME_SEND_ACK;DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,因为不为DST端当前窗口的首窗口号则将当前窗口向前滑动4帧,并发送帧号为20、21、22、23的数据帧,这样处理主要是防止帧号为14、15的帧滞后到达,减少发送重帧的数量;DRT定期扫描后,发现缺少帧号为14、15、18、19的数据帧,因为是窗口头数据帧,DRT先不滑动窗口,发送Request Begin Frame Number和Request Frame Count取值分别为14和2的FRAME_SEND_ACK给DST;DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,因为14号帧为DST端当前窗口的首窗口号,且Request FrameCount不为0XFFFF,则发送所要求的帧号为14、15的数据帧;DRT定期扫描后,发现缺少帧号为18、19的数据帧,DRT向前滑动窗口4帧,发送Request Begin Frame Number和Request Frame Count取值分别为18和2的FRAME_SEND_ACK给DST;DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,因为18号帧不为DST端当前窗口的首窗口号则将当前窗口向前滑动4帧,并发送帧号为24、25、26、27的数据帧;
DRT定期扫描后,发现缺少帧号为18、19的数据帧,因为是窗口头数据帧,DRT先不滑动窗口,发送Request Begin Frame Number和Request Frame Count取值分别为18和2的FRAME_SEND_ACK给DST;DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,因为18号帧为DST端当前窗口的首窗口号,且Request FrameCount不为0XFFFF,则发送所要求的帧号为18、19的数据帧;至此帧号为14、15、18、19的数据帧DRT全部收到。
c)10,11,12,13,14,15,16,17(其中少18,19)DRT先窗口滑动8帧,发送Request Begin Frame Number和Request Frame Count取值分别为18和0XFFFF的FRAME_SEND_ACK;DST收到该FRAME_SEND_ACK后,先对FRAME_SEND_ACK的Request BeginFrame Number进行判断,因为其不为DST端当前窗口的首窗口号则将当前窗口向前滑动8帧,并发送一满窗口的数据,即发送帧号为18~27的数据帧,这样处理主要是减少处理的复杂度。
至此帧号为18、19的数据帧DRT全部收到。
d)10,11,12,13,14,15,16,17,18,19(都接收到)DRT先窗口滑动10帧,发送Request Begin Frame Number和Request Frame Count取值分别为20和0XFFFF的FRAME_SEND_ACK;DST收到该FRAME_SEND_ACK后,根据FRAME_SEND_ACK的Request FrameCount的值为0XFFFF,发送从Request Begin Frame Number开始的一满窗口的数据,即发送帧号为20~29的数据帧。
参见图5,本发明还提供了一种数据传输装置,装置包括数据发送端和数据接收端,数据发送端包括块通道建立请求发送模块、数据帧发送模块、块通道关闭请求发送模块,数据接收端包括块通道建立请求应答模块、定期扫描模块、数据帧接收模块、块通道关闭请求应答模块;块通道建立请求发送模块用于数据发送端向数据接收端发送建立块传输通道的请求,请求的内容包括数据发送端发送的块数据的编号;数据帧发送模块用于数据发送端向数据接收端发送滑动窗口中包含的数据帧和根据接收到的数据帧的应答进行数据帧的发送;块通道关闭请求发送模块用于数据发送端向数据接收端发送关闭块传输通道的请求,请求的内容包括该块的编号和该块的总校验和;块通道建立请求应答模块用于数据接收端收到请求后,向数据发送端发送建立块传输通道的应答,应答的内容包括数据接收端的块数据的编号;定期扫描模块用于数据接收端接收到数据帧后,并定期扫描当前滑动窗口的数据帧的接收情况,根据扫描结果滑动当前滑动窗口,向数据发送端发送数据帧的应答,应答的内容包括请求发送的开始帧号和帧的数量;数据帧接收模块用于接收数据发送端发送的数据帧;块通道关闭请求应答模块用于向数据发送端发送关闭块传输通道的应答,应答的内容包括数据接收端的块编号和块的保存应答;装置进一步包括检查模块,检查模块可以位于数据发送端或数据接收端,检查模块用于检查是否是新启动,如果是,数据发送端向数据接收端发送强制建立块传输通道的请求,否则比较数据发送端当前的块数据编号和数据接收端的块数据编号是否一致,如果一致则块传输通道建立成功,否则数据发送端向数据接收端发送强制建立块传输通道的请求;定期扫描模块包括数据帧检查单元,数据帧检查单元用于检查数据接收端的数据帧的接收情况,如果检查到数据接收端收到全部数据,数据接收端的当前滑动窗口向数据尾帧方向滑动一个满窗口,并要求数据发送端向数据尾帧方向滑动一满口发送其窗口内的数据;如果检查到数据接收端没有收到全部数据,数据接收端的当前滑动窗口滑动到第一个丢帧处,并要求数据发送端从丢帧处重新发送数据;数据帧发送模块包括帧号检查单元,帧号检查单元用于检查请求发送的开始帧号是否落在当前滑动窗口的范围内,如果落在当前滑动窗口范围内.则根据收到的数据帧的应答内容进行后续数据帧的发送,如果请求发送的开始帧号连续多次落在当前滑动窗口的范围外,则向数据接收端发送强制建立块传输通道的请求,重新发送块数据,直至块数据中的数据帧全部发送完毕;块通道关闭请求应答模块包括块数据保存单元、块数据保存检查单元、状态持久化单元;块数据保存单元用于将数据接收端收到的块数据进行保存;块数据保存检查单元用于检查块数据的保存是否成功,如果成功则数据接收端将其状态进行持久化,完成块数据的发送,否则数据发送端向数据接收端发送强制建立块传输通道的请求;
状态持久化单元用于将数据接收端的块数据的成功保存状态信息进行持久化。
以上所述的实施例只是本发明较优选的具体实施方式
的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
权利要求
1.一种数据传输方法,其特征在于,在数据发送端和数据接收端的缓冲区分别设立大小相同且固定的滑动窗口,将数据打包成块数据,并将块内数据分解成大小相同的数据帧,并执行以下步骤步骤A建立数据发送端和数据接收端之间的块传输通道;步骤B所述数据发送端向所述数据接收端发送所述滑动窗口中包含的数据帧;步骤C所述数据接收端接收到所述数据帧后,并定期扫描当前滑动窗口的数据帧的接收情况,根据扫描结果滑动当前滑动窗口,向所述数据发送端发送所述数据帧的应答,所述应答的内容包括请求发送的开始帧号和帧的数量;步骤D所述数据发送端收到所述数据帧的应答后,根据收到的所述数据帧的应答内容进行后续数据帧的发送,并执行步骤C,直至所述块数据中的数据帧全部发送完毕;步骤E关闭所述数据发送端和所述数据接收端之间的块传输通道;步骤F重复执行步骤A至E,直到所述数据接收端收到所述数据发送端发送的全部所述块数据。
2.如权利要求1所述的数据传输方法,其特征在于,所述步骤A具体包括步骤A1所述数据发送端向所述数据接收端发送建立块传输通道的请求,所述请求的内容包括所述数据发送端发送的块数据的编号;步骤A2所述数据接收端收到所述请求后,向所述数据发送端发送建立块传输通道的应答,所述应答的内容包括所述数据接收端的块数据的编号;步骤A3检查是否是新启动,如果是,所述数据发送端向所述数据接收端发送强制建立块传输通道的请求,否则比较所述数据发送端当前的块数据编号和所述数据接收端的块数据编号是否一致,如果一致则块传输通道建立成功,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求。
3.如权利要求1所述的数据传输方法,其特征在于,所述步骤C中根据扫描结果滑动当前滑动窗口的步骤具体包括当所述数据接收端收到所述数据发送端发送的全部数据时,所述数据接收端的当前滑动窗口向数据尾帧方向滑动一个满窗口,并要求所述数据发送端向数据尾帧方向滑动一满窗口发送其窗口内的数据。
4.如权利要求1所述的数据传输方法,其特征在于,所述步骤C中根据扫描结果滑动当前滑动窗口的步骤具体包括当所述数据接收端没有收到所述数据发送端发送的全部数据时,所述数据接收端的当前滑动窗口滑动到第一个丢帧处,并要求所述数据发送端从丢帧处重新发送数据。
5.如权利要求1所述的数据传输方法,其特征在于,所述步骤D具体包括所述数据发送端收到所述数据帧的应答后,如果所述请求发送的开始帧号落在当前滑动窗口的范围内,则根据收到的所述数据帧的应答内容进行后续数据帧的发送,如果所述请求发送的开始帧号连续多次落在当前滑动窗口的范围外,则向所述数据接收端发送强制建立块传输通道的请求,重新发送所述块数据,直至所述块数据中的数据帧全部发送完毕。
6.如权利要求1所述的数据传输方法,其特征在于,所述步骤E具体包括步骤E1所述数据发送端向所述数据接收端发送关闭所述块传输通道的请求,所述请求的内容包括该块的编号和该块的总校验和;步骤E2所述数据接收端收到关闭所述块通道的请求后,将所述数据接收端收到的所述块数据进行保存,向所述数据发送端发送关闭所述块传输通道的应答,所述应答的内容包括所述数据接收端的块编号和所述块的保存应答;步骤E3所述数据发送端收到所述应答后,检查所述块的保存是否成功,如果是,则所述数据接收端将其状态进行持久化,所述持久化的信息为成功保存的所述块数据的编号,完成所述块数据的发送,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求。
7.如权利要求1所述的数据传输方法,其特征在于,所述将数据打包成块数据之前还包括将所述数据压缩的步骤。
8.一种数据传输装置,其特征在于,所述装置包括数据发送端和数据接收端,所述数据发送端包括块通道建立请求发送模块、数据帧发送模块、块通道关闭请求发送模块,所述数据接收端包括块通道建立请求应答模块、定期扫描模块、数据帧接收模块、块通道关闭请求应答模块;所述块通道建立请求发送模块用于所述数据发送端向所述数据接收端发送建立块传输通道的请求,所述请求的内容包括所述数据发送端发送的块数据的编号;所述数据帧发送模块用于所述数据发送端向所述数据接收端发送所述滑动窗口中包含的数据帧和根据接收到的所述数据帧的应答进行所述数据帧的发送;所述块通道关闭请求发送模块用于所述数据发送端向所述数据接收端发送关闭所述块传输通道的请求,所述请求的内容包括该块的编号和该块的总校验和;所述块通道建立请求应答模块用于所述数据接收端收到所述请求后,向所述数据发送端发送建立块传输通道的应答,所述应答的内容包括所述数据接收端的块数据的编号;所述定期扫描模块用于所述数据接收端接收到所述数据帧后,并定期扫描当前滑动窗口的数据帧的接收情况,根据扫描结果滑动当前滑动窗口,向所述数据发送端发送所述数据帧的应答,所述应答的内容包括请求发送的开始帧号和帧的数量;所述数据帧接收模块用于接收所述数据发送端发送的数据帧;所述块通道关闭请求应答模块用于向所述数据发送端发送关闭所述块传输通道的应答,所述应答的内容包括所述数据接收端的块编号和所述块的保存应答。
9.如权利要求8所述的数据传输装置,其特征在于,所述装置进一步包括检查模块,所述检查模块用于检查是否是新启动,如果是,所述数据发送端向所述数据接收端发送强制建立块传输通道的请求,否则比较所述数据发送端当前的块数据编号和所述数据接收端的块数据编号是否一致,如果一致则块传输通道建立成功,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求。
10.如权利要求8所述的数据传输装置,其特征在于,所述定期扫描模块包括数据帧检查单元,所述数据帧检查单元用于检查所述数据接收端的数据帧的接收情况,如果检查到所述数据接收端收到全部数据,所述数据接收端的当前滑动窗口向数据尾帧方向滑动一个满窗口,并要求所述数据发送端向数据尾帧方向滑动一满口发送其窗口内的数据;如果检查到所述数据接收端没有收到全部数据,所述数据接收端的当前滑动窗口滑动到第一个丢帧处,并要求所述数据发送端从丢帧处重新发送数据。
11.如权利要求8所述的数据传输装置,其特征在于,所述数据帧发送模块包括帧号检查单元,所述帧号检查单元用于检查请求发送的开始帧号是否落在当前滑动窗口的范围内,如果落在当前滑动窗口范围内,则根据收到的所述数据帧的应答内容进行后续数据帧的发送,如果所述请求发送的开始帧号连续多次落在当前滑动窗口的范围外,则向所述数据接收端发送强制建立块传输通道的请求,重新发送所述块数据,直至所述块数据中的数据帧全部发送完毕。
12.如权利要求8所述的数据传输装置,其特征在于,所述块通道关闭请求应答模块包括块数据保存单元、块数据保存检查单元、状态持久化单元;所述块数据保存单元用于将所述数据接收端收到的所述块数据进行保存;所述块数据保存检查单元用于检查所述块数据的保存是否成功,如果成功则所述数据接收端将其状态进行持久化,完成所述块数据的发送,否则所述数据发送端向所述数据接收端发送强制建立块传输通道的请求;所述状态持久化单元用于将所述数据接收端的所述块数据的成功保存状态信息进行持久化。
全文摘要
本发明公开了一种数据的传输方法和装置,属于数据传输领域。为了克服现有技术中TCP滑动窗口协议实现复杂、对大数据包要在IP层进行分片处理的缺点,本发明提出了一种利用固定大小滑动窗口传输协议进行大数据传输的方法首先使用块命令控制帧建立块传输通道,然后通过此块通道,以固定大小滑动窗口的方式进行块数据的传输,最后关闭块传输通道完成块数据的传输。本发明提供了一种数据的传输装置,用于完成大数据的传输。本发明还引入了定期扫描机制,简单实用满足了大数据快速准确的传输要求,而且还引入了滑动窗口协议的上层控制命令及数据接收端的状态持久化机制,使得崩溃恢复机制、压缩机制得以实现。
文档编号H04L1/00GK1889529SQ200610103680
公开日2007年1月3日 申请日期2006年7月28日 优先权日2006年7月28日
发明者王 锋, 陈宇杰, 张烽, 左克群, 干志良, 聂更亮, 吴越 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1