谢慧,刘钊(中国电子科技集团公司第二十研究所,西安 710068)
基于无连接网络的文件可靠传输算法
谢慧,刘钊
(中国电子科技集团公司第二十研究所,西安710068)
摘要:
关键词:
目前我们所应用的无连接传输层协议[2]在数据传输之前数据发送端与接收端无握手和协商等行为,在数据传输过程中亦无传输控制和确认行为,对传输的数据没有可靠性的保障。本文提出了一种基于不可靠无连接网络的文件可靠传输方法,可提供高可靠性的文件传输服务。
基于无连接网络的应用层大文件可靠传输方式是在无连接网络现有协议栈的基础之上,通过在应用层对文件发送的发送端和接收端进行处理,实现可靠传输文件的功能。接收端与发送端同时连接在同一个无连接网络中;且任意一个发送端可以向无连接网络中出自身外的任一接收端节点发送文件。
在发送端,从文件头开始读取未被处理过的数据,并在读取出的数据开头位置通过增加时间、报文索引、报文标识位和报文长度封装为数据分组,以保证数据分组的唯一性[1]。分装完成的数据分组将被传输。在接收端,每接收到一个数据分组将会生成一个应答报文[3],该应答报文包含时间、报文索引、报文标识位和报文长度。数据分组将被按照报文索引值的升序加入缓冲区内。当缓冲区数据分组满足写入条件就会写入文件。在发送端,处理接收到的应答报文,并且计算被应答的报文从发出时刻到接收到应答时刻的时间差,该时间差将作为流量控制算法计算发送分组数量的依据,流量控制算法会控制数据包的发送速率。在传输过程中,如果有数据分组未及时接收到应答,将会被重传。基于无连接网络可靠传输示意图见图1。
文件发送端将文件中的数据读取并封装为数据分组,传输过程中发送文件采用双队列的方法,一个发送队列,一个传输队列。两个队列分别表示的含义为:发送队列中存放了网络中已经发送,但是尚未得到反馈信息确认的数据包;传输队列中存放了需要发送的数据包。
文件传输时发送端与接收端首先进行握手,确保传输信道的连通建立连接,将需要发送的原始文件进行分段处理,每段数据添加数据头并生成唯一的校验合法性文件,将这些数据包按照顺序放入发送队列,正确传输到对端的数据包需要反馈信息到发送端,对于丢失的数据包或者因合法性检验错误而被丢弃的数据包接收端均无需反馈信息。反馈的信息中包含了正确接受数据包的序号,数据包接收时间。每当发送端接收到反馈信息后,会将发送队列中相应的数据包取出队列。传输等待定时器超时后,发送队列中的数据包就是接收端没有正确接收的数据包,对剩余的数据包进行再次传输。
图1 基于无连接网络可靠传输示意图
2.1文件发送算法
首先将文件中的数据读取并封装为数据分组,并且发送;数据分组发送完成后,启动定时器。定时器的等待时间twait与底层网络延时tdelay和应用层处理时间tprocess密切相关,其关系由下述公式描述:
底层网络延时tdelay是网络特性;应用层处理时间tprocess是指处理一段数据,从封装到发送的时延。若在定时器等待的时间内收到所有应答,且发送队列已经为空,定时器关闭;若未收到应答,则再次发送数据。发送处理流程见图2。
在文件不断的发送过程中会收到相应的应答,通过从应答报文头中获取时间信息为Tp,并且获取当前时刻系统信息为Tc,那么往返时延计算公式为:
RTTarv是平均往返时延,其初始值为0,将公式(2)计算得到的往返时延RTT将带入下式(3),由公式(3)迭代计算得到RTTarv:
图2 发送处理流程
根据计算出的时延对文件发送进行流量控制,在网络负载较大的时候,减小数据包的发送速率,减轻网络的负载尽量不让网络出现拥塞而导致丢包;在网络负载较轻时,加快数据包的发送速率,尽可能地利用带宽。
同时获取应答报文头中的索引值信息,并且用该索引值遍历发送队列。如果发送队列中有数据分组的和应答报文的索引值相同,那么将该分组从发送队列中删除;否则,不对发送队列中的数据做处理。应答处理流程见图3。
2.2文件接收算法
当接收到数据分组时,首先根据数据分组产生对应的应答报文,并将应答包文封装,封装的信息包含:时间、报文索引、报文标识位和报文长度。上述若干项信息中时间和报文索引来自于接收到的数据分组,报文标识位和报文长度设置为应答报文默认值。封装完成后,将该应答报文发送。
同时处理收到的数据分组,获取数据分组头中的报文索引获得索引值IN。首先判断该索引值IN是否小于已写入文件的最大分组索引值。如果索引值IN小于已写入文件的最大分组索引值,继续接收分组数据;否则,将继续判断该索引值IN是否已经在缓冲区内,如果该索引值IN已经在缓冲区内,丢弃该数据;否则,依据获取数据分组头中的索引值IN,遍历缓冲区内所有数据分组。当满足条件:Sx,Sx+1是缓冲区内连续的两个分组,满足Sx.IN<IN<Sx+1.IN(x∈R),那么将接收到的数据分组将插入到Sx后;或者满足条件Srear.IN<IN(Srear.IN是缓冲区中最后一个分组),那么将接收到的数据分组将插入到Srear后。接收处理流程见图4。
图3 应答处理流程
判断缓冲区内的数据分组个数是否达到写文件的门限,或加入缓冲区的分组是否为“最后一个分组”。如若上述两个条件都不满足,那么继续接收数据;否则将计算在缓冲区内,以第一个数据分组为开头,将数据分组索引值按自然数升序计数且连续的数据分组个数,将连续的分组个数记为CIN。
判断如果在缓冲区内的第一个数据分组的索引值S1.IN是否满足条件:S1.IN==(已写入文件的最大分组索引值)+1。继续判断缓冲区的最后一个数据分组是否为“最后一个分组”:
如果判断结果为“真”,继续判断是否满足条件Slast.IN-Shead.IN+1==CIN。如果结果为“真”那么以二进制方式打开记录文件,将缓冲区内的数据分组以二进制方式写入记录文件,待写文件执行完成后关闭记录文件,然后更新已写入文件最大分组索引值。
图4 接收处理流程
如果判断结果为“假”,继续判断是否满足条件CIN≥缓冲区写入文件门限。如果结果为“真”那么进行写文件操作。
判断已写入文件最大分组索引值是否等于标记为“最后一个分组”的索引值,如果不相等表示文件没有写完,将缓冲区内已写入文件的数据分组删除;否则表示文件以及写完,将缓冲区内所有数据分组删除,然后结束。
本文设计的基于无连接网络的文件可靠传输方法,通过一次发送多个数据分组可以提高传输的效率;对数据分组求解往返时延可以感知底层网络的拥塞状况;流量控制算法可以自使用底层网络并调整一次发送的数据分组的个数,尽量避免网络出现拥塞;对发送的数据分组必须受到应答报文才能被认为发送成功,可以提高传输过程的鲁棒性。在接收端采用二进制批量写入文件的方式,可以减少打开和关闭文件的次数,
参考文献:
[1]王颖.基于流的无连接网络管理信息建模方法.北京邮电大学学报,2006(6).
[2]白正.基于UDP的报文可靠传输技术研究.网络安全技术与应用,2013(5).
[3]丁浩.一种基于C/S数据库系统的数据可靠传输算法.计算机工程,2005,29(8)
The Algorithms of File Reliable Transmission Based on the Connectionless Network
XIE Hui,LIU Zhao
(China Electronic Technology Company No.20,Xi'an 710068)
Abstract:
Proposes an algorithm of file reliable transmission based on connectionless network,this algorithm is used on application layer of connectionless network.In order to improve the transmission efficiency,file send port will send several groups of data at one time.Across the time delay that sending form file receive port to realize the situation of network and file transmission.The floor controlling algorithms adjust the number of data group,that avoid the congestion of network and improve the reliable of file transmission.
Keywords:
提出一种基于无连接网络的文件可靠传输算法,该算法应用于无连接网络的应用层,文件发送端通过一次发送多个数据分组可以提高传输的效率,并通过对文件接收端返回的数据时延感知底层网络的拥塞状况及文件传输情况,通过流量控制算法调整数据分组的个数,避免网络拥塞,提高文件传输的可靠性。
可靠传输;流量控制;重传
文章编号:1007-1423(2016)14-0060-04
DOI:10.3969/j.issn.1007-1423.2016.14.013
作者简介:
谢慧(1984-),女,陕西西安人,硕士研究生,工程师,研究方向为通信技术
刘钊(1989-),男,江苏南京人,硕士研究生,助理工程师,研究方向为软件架构
收稿日期:2016-03-25修稿日期:2016-05-10
Reliable Transmission;Flux Control;Retransmission