一种简单可靠的远程文件传输方法

文档序号:7686895阅读:138来源:国知局
专利名称:一种简单可靠的远程文件传输方法
技术领域
本发明涉及一种文件传输方法,尤其是一种用于hternet文件传输的简单可靠的远程文件传输方法。
背景技术
网络文件传输的协议有多种,其中最常见的是FTP和TFTP。FTP协议(File Transfer Protocol)即远程文件传输协议,是一个用于简化IP网络上系统之间文件传送的协议。采用FTP协议可使hternet用户高效地从网上的FTP服务器传输大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上,以达到资源共享和传递信息的目的。 TFTP (Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。它基于UDP协议而实现,它不具备通常的FTP的全部功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证等。FTP是hternet文件传输的基础,它由一系列规格说明文件组成,用于将资料从网络上的一台计算机传输到同一网络上的另一台计算机。同大多数hternet服务一样, FTP也是一个客户/服务器系统;用户通过一个客户机程序FTP,连接至在远程计算机上运行的服务器程序。FTP传输文件的步骤为1)客户端和服务端的21端口建立链接,发送用户名和密码,服务端验证通过后FTP链接建立;幻客户端发送LIST命令获取下载目录下的文件列表;幻客户端从文件列表中选取一个文件,获得文件大小,通过RETR命令获取文件; 当传输文件时,服务器和客户端建立一条TCP数据链路,文件传送完毕后,就关闭该TCP链路;4)循环执行步骤3,直到文件传送完毕。从上面的FTP步骤秘书可以看出,编码实现FTP 操作是相当复杂的,所以很多不复杂、开销不大的文件传输服务都是用TFTP。TFTP传输文件的步骤为1)客户端向服务器发送读取文件的请求,如果服务器批准此请求,则服务器打开连接;幻服务器向客户端发送定长为512字节的数据包,客户端收到数据包后对这个数据包发送ACK确认包,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认;幻重复步骤2,直到客户端收到一个小于512字节的数据包,然后关闭连接。当用TFTP进行文件传输时,由于TFTP使用的是不可靠的UDP,所以TFTP必须处理分组丢失和分组重复,分组丢失可通过发送方的超时与重传机制解决。由于TFTP的双方都是发送者和接收者,所以目前的技术方案采用的是双方超时重传的机制。采用FTP协议在FTP客户端和FTP服务器端进行文件的传输,由于操作方便,目前应用比较广泛,但是,采用FTP协议传输文件时,通常在得到FTP协议的用户和密码后即可对传输的文件进行编辑、修改等操作,安全性比较低,并且编码实现FTP操作比较复杂,网络故障很容易导致链接异常,从而影响应用程序的稳定性。当用TFTP进行文件传输时,由于TFTP使用的是不可靠的UDP,所以TFTP必须处理分组丢失和分组重复,分组丢失可通过发送方的超时与重传机制解决。TFTP是通过发送方的超时与重传机制解决分组丢失的,由于TFTP的双方都既是发送者又是接收者,如果双方都超时与重传,就可能会导致“持续重传问题”。TFTP服务器发送完数据包DATA [η]之后就开始在设定的时间Tl内等待TFTP客户端的确认包,TFTP客户端收到数据包后,发送了 ACK[n]确认包,之后就开始在设定的时间 Tl内等待下一个数据包DATA[n+l],但是这个ACK包在传输的过程中丢失了,于是设定的Tl 时间一到,TFTP服务器没有收到确认包,TFTP客户端也没有收到下一个数据包DATA[n+l], 服务器不知道是自己发送的数据包丢失还是客户端发送的ACK丢失。所以,TFTP服务器重发了数据包DATA[n],而客户端也不知道是DATA[n+l]丢失还是ACK[n]丢失,于是重传了 ACK[η]。这个时候问题就来了,客户端重发了 ACK[n]后,就再一次收到了 DATA[n](当然这个包直接丢弃,不再保存),然后发送这个包的确认包ACK [η]。服务器在重发了 DATA [η]后, 先是收到了客户端重发的ACK[n],然后发送数据包DATA[n+l],接着又收到了客户端刚发的ACK[n],于是又发了数据包DATA[n+l]。如此重复下去,直到传送完所有数据。这里TFTP 服务器端每个数据包都要发送两次,TFTP客户端的每个确认包也要发送两次。不但会造成传输效率低,而且传输的时间也会大大延长。

发明内容
本发明是为避免上述已有技术中存在的不足之处,提供一种简单可靠的远程文件传输方法,以提高远程文件的传输效率、提高传输可靠性并简化传输过程。本发明提供了一种简单可靠的远程文件传输方法。一种简单可靠的远程文件传输方法,包括以下步骤a.用户启动远程文件传输程序,进行远程文件传输程序的初始化;然后进入超时次数判断步骤客户端应用程序判断是否超时次数X > N(N为自然数且N > 2),若超时次数X < N则转入步骤b,若超时次数X > N则重新启动远程文件传输程序;b.客户端应用程序把用于请求远程文件传输的请求数据包发给TFTP服务器;c. TFTP服务器接收客户端发送的请求数据包,并根据请求数据包向客户端发送文件数据包;d.客户端接收TFTP服务器发送的文件数据包,并由客户端应用程序对所接收的文件数据包进行判断,判断该文件数据包是不是最后一个文件数据包;如果该文件数据包不是最后一个文件数据包,则转入步骤e ;如果该文件数据包是最后一个文件数据包,则转入步骤f ;e.由客户端应用程序判断该文件数据包是不是重复的文件数据包,如果是重复的文件数据包,则丢弃该文件数据包,客户端应用程序向TFTP服务器发送一个ACK确认包,跳转回步骤d ;如果不是重复的文件数据包,则保存该文件数据包,客户端应用程序向TFTP服务器发送一个ACK确认包,跳转回步骤d ;f.客户端应用程序向TFTP服务器发送一个ACK确认包,然后结束文件传输工作。本发明的简单可靠的远程文件传输方法的特点也在于在所述步骤d中,客户端应用程序在接收TFTP服务器发送的文件数据包时,判断客户端应用程序从发出请求数据包的时刻起,是否在预设时间Tl内接收到TFTP服务器发送的第一个文件数据包,若客户端应用程序未在预设时间Tl内接收到第一个文件数据包, 则将超时次数X加1后返回所述步骤a的超时次数判断步骤;若客户端应用程序在预设
4时间Tl内接收到第一个文件数据包,则客户端应用程序向TFTP服务器发送一个ACK确认包;在所述步骤d中,客户端接收TFTP服务器发送的第K个文件数据包时(K为自然数且 K ^ 2),判断客户端应用程序从开始接收第K个文件数据包的时刻起,是否在预设时间T2 内接收到第K个文件数据包,若客户端应用程序未在预设时间T2内接收到第K个文件数据包,则返回步骤a ;若客户端应用程序在预设时间T2内接收到第K个文件数据包,判断第K 个文件数据包是不是最后一个文件数据包;如果第K个文件数据包不是最后一个文件数据包,则转入步骤e ;如果第K个文件数据包是最后一个文件数据包,则转入步骤f。在所述步骤d中,客户端应用程序判断文件数据包是不是最后一个文件数据包的方法是若文件数据包的长度小于512字节,则判定该文件数据包为最后一个文件数据包。在所述步骤e中,客户端应用程序判断文件数据包是不是重复的文件数据包的方法是获取该文件数据包的编号,并将该文件数据包的编号与上一个文件数据包的编号相比较,如果该文件数据包的编号不大于上一个文件数据包的编号,则认定该文件数据包为重复的文件数据包。与已有技术相比,本发明有益效果体现在通过超时次数判断步骤和操作成功后回复ACK,使得无论服务器发送的数据包丢失还是客户端发送的数据包(ACK)丢失,都由服务器超时重传数据包,提高了数据传输的可靠性。在客户端与服务器建立连接之后,从开始接收数据时起,如果在设定的时间T2内没有完成文件数据包的接收,即重新启动文件传输程序,避免超时等待,保证数据传输的可靠性和传输效率。本发明的远程文件传输方法,具有实现简单、数据传输可靠性和传输效率高等优点。


图1为本发明的远程文件传输方法的流程图。图2为本发明的远程文件传输方法的系统结构简图。图1和图2中标号201 TFTP服务器,202客户端。以下通过具体实施方式
,并结合附图对本发明作进一步说明。
具体实施例方式参见图1 图2,一种简单可靠的远程文件传输方法,包括以下步骤a.用户启动远程文件传输程序(S301),进行远程文件传输程序的初始化;然后进入超时次数判断步骤客户端应用程序判断是否超时次数X 为自然数且N >2) S302, 若超时次数X < N则转入步骤b,若超时次数X > N则重新启动远程文件传输程序;b.客户端应用程序把用于请求远程文件传输的请求数据包发给TFTP服务器 S303 ;c. TFTP服务器201接收客户端202发送的请求数据包,并根据请求数据包向客户端202发送文件数据包;d.客户端202接收TFTP服务器201发送的文件数据包,并由客户端应用程序对所接收的文件数据包进行判断,判断该文件数据包是不是最后一个文件数据包S307 ;如果该文件数据包不是最后一个文件数据包,则转入步骤e ;如果该文件数据包是最后一个文件数据包,则转入步骤f;e.由客户端应用程序判断该文件数据包是不是重复的文件数据包S308,如果是重复的文件数据包,则丢弃该文件数据包S309,客户端应用程序向TFTP服务器201发送一个ACK确认包S311,跳转回步骤d ;如果不是重复的文件数据包,则保存该文件数据包 S310,客户端应用程序向TFTP服务器201发送一个ACK确认包,跳转回步骤d ;f.客户端应用程序向TFTP服务器201发送一个ACK确认包S312,然后结束文件传输工作。在所述步骤d中,客户端应用程序在接收TFTP服务器201发送的文件数据包时, 判断客户端应用程序从发出请求数据包的时刻起,是否在预设时间Tl内接收到TFTP服务器201发送的第一个文件数据包S304,若客户端应用程序未在预设时间Tl内接收到第一个文件数据包,则将超时次数X加1后返回所述步骤a的超时次数判断步骤;若客户端应用程序在预设时间Tl内接收到第一个文件数据包,则客户端应用程序向TFTP服务器201发送一个ACK确认包S305。通过预设时间Tl来避免接收文件超时,如果由于网络故障使得接收失败,就通过超时次数判断,从而可以再次进行网络连接,从而提高传输效率,避免等待时间过长。在所述步骤d中,客户端接收TFTP服务器201发送的第K个文件数据包时(K为自然数且K ,判断客户端应用程序从开始接收第K个文件数据包的时刻起,是否在预设时间T2内接收到第K个文件数据包S306,若客户端应用程序未在预设时间T2内接收到第 K个文件数据包,则返回步骤a ;若客户端应用程序在预设时间T2内接收到第K个文件数据包,判断第K个文件数据包是不是最后一个文件数据包S307 ;如果第K个文件数据包不是最后一个文件数据包,则转入步骤e ;如果第K个文件数据包是最后一个文件数据包,则转入步骤f。通过预设时间T2来避免接收第一个数据包以外的数据包超时,如果由于网络故障使得接收失败,就直接返回,再次进行网络连接,从而提高传输效率。在所述步骤d中,客户端应用程序判断文件数据包是不是最后一个文件数据包 S307的方法是若文件数据包的长度小于512字节,则判定该文件数据包为最后一个文件数据包。若文件数据包的长度不小于512字节,则判定该文件数据包不是最后一个文件数据包,转入步骤e。在所述步骤e中,客户端应用程序判断文件数据包是不是重复的文件数据包S308 的方法是获取该文件数据包的编号,并将该文件数据包的编号与上一个文件数据包的编号相比较,如果该文件数据包的编号不大于上一个文件数据包的编号,则认定该文件数据包为重复的文件数据包。该文件数据包的编号大于上一个文件数据包的编号,则认定该文件数据包不是重复的文件数据包,则保存该文件数据包,客户端应用程序向TFTP服务器发送一个ACK确认包。如图2所示,本发明的远程文件传输系统包括服务器(TFTP服务器201)和客户端 202(内设客户端应用程序),两者之前通过有线网络或者无线网络连接。服务器主要是提供远程传输文件和发送数据包(根据客户端的请求)。客户端主要负责以下操作发送远程文件传输请求数据包、接收数据包、判断数据包、保存数据包、发送确认数据包。客户端应用程序发送远程文件传输请求,通过网络把请求数据包发给服务器,接着就等待着服务器发送的数据包。客户端应用程序接收到TFTP服务器发送的数据包。客户端应用程序对接收到的数据包进行判断,判断是不是重复数据包,是不是最后一个数据包。 客户端应用程序根据判断结果保存接收到的数据包。客户端应用程序保存接收到的数据包之后向服务器发送一个确认数据包。
权利要求
1.一种简单可靠的远程文件传输方法,其特征是,包括以下步骤a.用户启动远程文件传输程序(S301),进行远程文件传输程序的初始化;然后进入超时次数判断步骤客户端应用程序判断是否超时次数X > N(N为自然数且N > 2) (S302), 若超时次数X < N则转入步骤b,若超时次数X > N则重新启动远程文件传输程序;b.客户端应用程序把用于请求远程文件传输的请求数据包发给TFTP服务器(S303);c.TFTP服务器(201)接收客户端(20 发送的请求数据包,并根据请求数据包向客户端(20 发送文件数据包;d.客户端(20 接收TFTP服务器(201)发送的文件数据包,并由客户端应用程序对所接收的文件数据包进行判断,判断该文件数据包是不是最后一个文件数据包(S307);如果该文件数据包不是最后一个文件数据包,则转入步骤e ;如果该文件数据包是最后一个文件数据包,则转入步骤f;e.由客户端应用程序判断该文件数据包是不是重复的文件数据包(S308),如果是重复的文件数据包,则丢弃该文件数据包(S309),客户端应用程序向TFTP服务器O01)发送一个ACK确认包(S311),跳转回步骤d ;如果不是重复的文件数据包,则保存该文件数据包 (S310),客户端应用程序向TFTP服务器O01)发送一个ACK确认包,跳转回步骤d;f.客户端应用程序向TFTP服务器O01)发送一个ACK确认包(S312),然后结束文件传输工作。
2.根据权利要求1所述的远程文件传输方法,其特征是,在所述步骤d中,客户端应用程序在接收TFTP服务器(201)发送的文件数据包时,判断客户端应用程序从发出请求数据包的时刻起,是否在预设时间Tl内接收到TFTP服务器O01)发送的第一个文件数据包 (S304),若客户端应用程序未在预设时间Tl内接收到第一个文件数据包,则将超时次数X 加1后返回所述步骤a的超时次数判断步骤;若客户端应用程序在预设时间Tl内接收到第一个文件数据包,则客户端应用程序向TFTP服务器(201)发送一个ACK确认包(S305);在所述步骤d中,客户端接收TFTP服务器O01)发送的第K个文件数据包时(K为自然数且K >幻,判断客户端应用程序从开始接收第K个文件数据包的时刻起,是否在预设时间T2内接收到第K个文件数据包(S306),若客户端应用程序未在预设时间T2内接收到第 K个文件数据包,则返回步骤a ;若客户端应用程序在预设时间T2内接收到第K个文件数据包,判断第K个文件数据包是不是最后一个文件数据包(S307);如果第K个文件数据包不是最后一个文件数据包,则转入步骤e ;如果第K个文件数据包是最后一个文件数据包,则转入步骤f。
3.根据权利要求1所述的远程文件传输方法,其特征是,在所述步骤d中,客户端应用程序判断文件数据包是不是最后一个文件数据包(S307)的方法是若文件数据包的长度小于512字节,则判定该文件数据包为最后一个文件数据包。
4.根据权利要求1所述的远程文件传输方法,其特征是,在所述步骤e中,客户端应用程序判断文件数据包是不是重复的文件数据包(S308)的方法是获取该文件数据包的编号,并将该文件数据包的编号与上一个文件数据包的编号相比较,如果该文件数据包的编号不大于上一个文件数据包的编号,则认定该文件数据包为重复的文件数据包。
全文摘要
本发明公开了一种简单可靠的远程文件传输方法,用户启动远程文件传输程序,客户端应用程序把请求数据包发给TFTP服务器;TFTP服务器向客户端发送文件数据包;客户端接收TFTP服务器发送的文件数据包,并判断文件数据包是不是最后一个文件数据包和是不是重复的文件数据包;接收完最后一个文件数据包后,客户端应用程序向TFTP服务器发送一个ACK确认包,然后结束文件传输工作。本发明的远程文件传输方法,具有实现简单、数据传输可靠性和传输效率高等优点。
文档编号H04L1/18GK102201903SQ20111015029
公开日2011年9月28日 申请日期2011年6月7日 优先权日2011年6月7日
发明者王凯 申请人:合肥华云通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1