一种基于因特网标准文件传输协议的文件断点上载方法

文档序号:7600954阅读:189来源:国知局
专利名称:一种基于因特网标准文件传输协议的文件断点上载方法
技术领域
本发明属于因特网标准文件传输协议应用领域,具体涉及一种基于因特网标准文件传输协议的文件断点上载方法。
背景技术
FTP(File Transfer Protocol)即标准文件传输协议(RFC959),是在TCP(Transmission Control Protocol,传输控制协议)/IP(InternetProtocol,因特网协议)环境中传输文件的一种公共标准协议,一般在OSI/RM(Open Systems Interconnection Reference Model,开放系统互联参考模型)的应用层实现。FTP是目前因特网上共享文件和传输文件的最主要方法,通过FTP的应用,可以很方便地对远程文件进行访问和管理,并为网络主机之间高效可靠的传输文件提供协议支持。FTP协议提供了一个名为REST的基本命令支持文件下载过程的中断后续传,但却没有提供文件上载过程中断后续传的基本命令。
FTP协议模型是一种典型的C/S(Client-Server,客户端-服务器)结构,由一个或多个FTP客户端和一个FTP服务器构成,具体结构如图1所示。FTP客户端与FTP服务器之间交换文件时将会建立两种连接,一种是命令连接,另一种是数据连接。命令连接是双方通讯和交流的信道,客户端发出的FTP基本命令和服务器返回的应答信息通过这个信道来传送。数据连接是双方进行文件传送的信道,上载或者下载的文件数据通过该信道来传送,同时因数据连接发起方的不同又将文件传送模式分为主动模式和被动模式,主动模式是指由FTP服务器发起数据连接,被动模式是指由FTP客户端发起数据连接。
FTP协议提供了几十条基本命令用于FTP客户端与FTP服务器之间的控制与交互,这些基本命令包括USER、PASS、PORT、PASV、STOR、STOU、APPE、RETR、REST等等。FTP客户端发出的命令和FTP服务器回复的信息都在命令连接中传送,遵循请求-响应机制,其基本交互过程简述如下(1)FTP客户端发送基本FTP控制命令到FTP服务器;(2)FTP服务器首先执行该命令,然后将命令的执行结果返回给FTP客户端;(3)FTP客户端解析服务器返回的执行结果信息,进而决定下一步的操作。
现在广泛使用的FTP客户端所实现的文件上载过程,以被动传输模式为例,主动传输模式类似,原理是相同的,具体步骤如下(1)FTP客户端利用套接字(Socket)和TCP/IP协议与目标FTP服务器建立命令连接;(2)FTP客户端发送FTP用户名,命令格式为USER xxxx\r\n,此处xxxx是指用户名;(3)FTP客户端发送FTP用户密码,命令格式为PASS xxxx\r\n,此处xxxx是指用户密码;(4)FTP客户端设置数据传送格式,如果以二进制格式传送文件则命令为TYPE i\r\n;(5)FTP客户端发送PASV\r\n命令,并从FTP服务器的回复中检索出服务器的IP地址和临时开放的端口号;(6)FTP客户端发送STOR xxxx\r\n命令,其中STOR后面的参数xxxx是指要在服务器上创建的文件名;(7)FTP客户端重新创建一个套接字(Socket),利用步骤(5)中FTP服务器返回的IP地址和临时端口号与服务器建立数据连接;(8)FTP客户端利用数据连接把本地文件传送到FTP服务器上,文件传送结束后关闭此数据连接;(9)FTP客户端关闭命令连接,至此一次文件上载过程结束。
图2给出了目前广泛使用的FTP客户端所实现的文件上载过程。
上述的目前通用的FTP文件上载方法在网络足够稳定、网速足够快和文件大小适中的情况下能够顺利完成文件上载的功能,但是如果在文件传送的过程中因为种种原因发生中断,则FTP服务器会把已经上载到服务器上的文件块当成不合法的文件删除,因此下一次无法恢复中断现场,所以就不得不重新上载整个文件。由于因特网的网络环境很复杂,不同用户接入因特网的速度也有快有慢,而且有时用户上载的文件很大,因此使用目前通用的FTP文件上载的方法传送过程中发生中断的可能性也就很大,但中断后又必须重新上载整个文件,因此给因特网用户带来不便,特别是在因特网环境复杂、易中断、数据传输速度慢以及传送文件巨大、传输时间长的情况下,这种不足体现得更为明显。
目前没有发现任何相关文档、文献、专利、记录了本发明中描述的断点上载方法。

发明内容
针对现有技术中存在的缺陷,本发明的目的是利用现有的FTP协议基本命令和特定的控制技术,实现FTP客户端在前一次文件上载过程被中断时下一次依然能从断点处继续上载的功能。
为达到以上目的,本发明采用的技术方案是一种基于因特网标准文件传输协议的文件断点上载方法,包括以下步骤(1)FTP客户端利用套接字和TCP/IP协议与目标FTP服务器建立命令连接;(2)FTP客户端先后向FTP服务器发送用户名和密码,从而登录FTP服务器;(3)登录后,FTP客户端将数据传送格式设置为二进制格式;(4)FTP客户端将数据传输模式设置为被动模式,并从FTP服务器的回复信息中检索出FTP服务器的IP地址和其临时开放的用于建立数据连接的端口号;(5)FTP客户端向FTP服务器发出一个文件上载命令;(6)FTP客户端重新创建一个套接字,利用该套接字和步骤(4)中FTP服务器返回的IP地址和临时端口号与FTP服务器建立数据连接;(7)建立数据连接之后,FTP客户端先从需要上载的文件中选择部分内容作为文件头,将其传送到FTP服务器端,然后关闭该数据连接,此时服务器会认为当前文件已经正常传送结束了,因而会把该文件头作为合法文件保存在服务器端,相当于需要上载的文件在FTP服务器上留下了一个存根,为后续的文件追加和可能的断点上载打下了基础;向FTP服务器传送文件头另外一个原因是FTP基本协议不提供在FTP服务器端创建空文件的基本命令;如果传送文件头时中断,则需要重新上载该文件头,但是因为文件头很小,所以即使重新传送耗费的时间也可以忽略不计;(8)重复步骤(3)和步骤(4);(9)FTP客户端向FTP服务器发出追加上载文件的命令,此处的文件名与步骤(5)中的文件名相同;(10)FTP客户端重新创建一个套接字,利用该套接字和步骤(8)中FTP服务器返回的IP地址和临时端口号与FTP服务器之间再次建立数据连接;(11)FTP客户端将文件体分成若干个文件块,文件体是指需要上载的文件除去文件头后余下的部分,然后将文件块传送到服务器端并追加到已存在于FTP服务器的文件里,直至剩余内容全部分块传送完毕,然后关闭该数据连接,如果在分块追加文件体时发生中断,此时需要重新上载发生中断的文件块,但是由于损失的只是一小块文件传送的时间,因此对整个文件的影响也可以忽略;(12)FTP客户端关闭命令连接,至此一次文件上载过程结束。
更进一步,步骤(4)中FTP客户端的数据传输模式也可以设置为主动模式,其他步骤一样。
步骤(7)中所选的文件头大小为0.1k字节到1k字节,步骤(11)中对文件体进行分块时,每个文件块的大小1k字节到16k字节。
本发明的效果在于可以在不改变现有FTP协议的前提下在FTP客户端实现文件上载过程中的断点续传,将文件传输过程中由于中断所造成的重复上载的损失降到了最少。


图1是FTP协议模型示意图;图2是当前普遍使用的FTP客户端文件上载实现流程图;图3是本发明所应用的FTP客户端文件上载实现流程图;图4是本发明所应用的FTP客户端中断后进行文件断点上载的实现流程图。
具体实施例方式
下面结合附图对本发明作一步的描述,以被动模式为例,主动模式类似,二者的原理是一致的(1)FTP客户端如果运用本发明进行FTP文件上载的实施过程详细描述如下1)FTP客户端创建本地套接字,应用TCP/IP协议与目标FTP服务器的开放端口,端口一般默认是21,也可能是别的,建立命令连接;2)FTP客户端先后发送USER xxxx\r\n和PASS xxxx\r\n命令将用户名和密码发送到FTP服务器端以登录FTP服务器,此处USER xxxx\r\n命令中的xxxx是指用户名,PASS xxxx\r\n命令中的xxxx是指用户密码;3)登录后,FTP客户端应用TYPE命令设置数据传送格式,如果以二进制格式传送文件则发出的命令为TYPE i\r\n;4)FTP客户端发送PASV\r\n命令,待FTP服务器给出回复后从回复信息中检索出FTP服务器的IP地址和其临时开放的用于建立数据连接的端口号;5)FTP客户端发送STOR xxxx\r\n命令,向FTP服务器表明要发起一次文件上载过程,STOR后面的参数xxxx是指要在服务器上创建的文件名;6)FTP客户端重新创建一个套接字,利用步骤4)中FTP服务器返回的IP地址和临时端口号用该套接字与服务器之间建立数据连接;7)FTP客户端先从需要上载的文件中取出大小为1K字节的文件头,然后将该文件头数据利用数据连接传送到FTP服务器端,然后关闭该数据连接。如果需要上载文件的实际体积小于等于1K字节则文件已经上载完毕,直接跳转到步骤13);如果文件体积大于1K字节,由于数据连接被客户端正常关闭,因此服务端就认为文件已经上载结束,所以也正常关闭了已上载到服务器上的文件部分,虽然在FTP客户端看来这个文件是不完整、不可用的,但在FTP服务器看来这个文件是完整的、合法的,相当于被上载的文件在FTP服务器上留下了一个存根,为后续的文件追加和可能的断点上载打下了基础;8)FTP客户端再次发送TYPE命令设置数据传送格式,步骤同3);9)FTP客户端再次发送PASV\T\n命令并获取到FTP服务器返回的IP地址和临时开放的端口号,步骤同4);10)FTP客户端发送APPE xxxx\r\n命令,向FTP服务器表明要发起一次文件追加上载的过程,APPE后面的参数xxxx是指文件名,该文件名与步骤5)中的文件名相同;11)FTP客户端重新创建一个套接字,利用步骤9)中FTP服务器返回的IP地址和临时端口号用该套接字与服务器之间建立数据连接;12)FTP客户端将文件体以16K字节为单位分成若干个文件块,文件体是指需要上载的文件除去文件头余下的部分,然后将文件块利用步骤11)中建立的数据连接把数据传送到FTP服务器端,直至文件体的所有数据都传送结束,此时关闭该数据连接;13)FTP客户端关闭命令连接,至此一次文件上载过程结束。
上述过程具体实现流程图参见图3。
(2)如果FTP客户端在采用本发明进行上载文件的过程中发生中断,则可按如下方式实现文件的断点上载1)FTP客户端创建本地套接字,应用TCP/IP协议与目标FTP服务器的开放端口,端口一般默认是21,也可能是别的,建立命令连接;2)FTP客户端先后发送USER xxxx\r\n和PASS xxxx\r\n命令将用户名和密码发送到FTP服务器端以登录FTP服务器,此处USER xxxx\r\n命令中的xxxx是指用户名,PASS xxxx\r\n命令中的xxxx是指用户密码;3)如果上一次中断发生在上载文件头的过程中,则重新传送整个文件,实现流程见图3;4)如果上一次中断发生在文件体分块追加的过程中,则FTP客户端首先向FTP服务器发送SIZE xxxx\r\n命令,此处xxxx是需要进行断点上载的文件名,然后从FTP服务器返回的信息中检索出目标文件已上载到服务器上的文件体积,假设该体积是X字节;5)FTP客户端应用TYPE命令设置数据传送格式,如果以二进制格式传送文件则发出的命令为TYPE i\r\n;6)FTP客户端发送PASV\r\n命令,待FTP服务器给出回复后从回复信息中检索出FTP服务器的IP地址和其临时开放的用于建立数据连接的端口号;7)FTP客户端发送APPE xxxx\r\n命令,此处xxxx是需要进行断点上载的文件名,向FTP服务器表明要发起一次文件追加上载的过程;8)FTP客户端重新创建一个套接字,利用步骤6)中FTP服务器返回的IP地址和临时端口号用该套接字与服务器之间建立数据连接;9)FTP客户端把步骤4)中获得的X数值做为文件偏移值,将本地文件的文件读指针偏移到X字节处,然后以16K字节为单位继续从文件中读取数据并利用步骤8)中建立的数据连接把数据传送到FTP服务器端,直至文件的所有剩余数据都传送结束,此时关闭该数据连接;10)FTP客户端关闭命令连接,至此一次文件的断点上载过程结束。
上述的文件断点上载过程流程图参见图4。
权利要求
1.一种基于因特网标准文件传输协议的文件断点上载方法,包括以下步骤(1)FTP客户端利用套接字和TCP/IP协议与目标FTP服务器建立命令连接;(2)FTP客户端先后向FTP服务器发送用户名和密码,从而登录FTP服务器;(3)登录后,FTP客户端将数据传送格式设置为二进制格式;(4)FTP客户端将数据传输模式设置为被动模式,并从FTP服务器的回复信息中检索出FTP服务器的IP地址和其临时开放的用于建立数据连接的端口号;(5)FTP客户端向FTP服务器发出一个文件上载命令;(6)FTP客户端重新创建一个套接字,利用该套接字和步骤(4)中FTP服务器返回的IP地址和临时端口号与FTP服务器建立数据连接;(7)建立数据连接之后,FTP客户端先从需要上载的文件中选择部分内容作为文件头,将其传送到FTP服务器端,然后关闭该数据连接;(8)重复步骤(3)和步骤(4);(9)FTP客户端向FTP服务器发出追加上载文件的命令,此处的文件名与步骤(5)中的文件名相同;(10)FTP客户端重新创建一个套接字,利用该套接字和步骤(8)中FTP服务器返回的IP地址和临时端口号与FTP服务器之间再次建立数据连接;(11)FTP客户端将文件体分成若干个文件块,文件体是指需要上载的文件除去文件头后余下的部分,然后将文件块传送到服务器端并追加到已存在于FTP服务器的文件里,直至剩余内容全部分块传送完毕,然后关闭该数据连接,如果在分块追加文件体时发生中断,此时需要重新上载发生中断的文件块,但是由于损失的只是一小块文件传送的时间,因此对整个文件的影响也可以忽略;(12)FTP客户端关闭命令连接,至此一次文件上载过程结束。
2.如权利要求1所述的一种基于因特网标准文件传输协议的文件断点上载方法,其特征是步骤(4)中FTP客户端的数据传输模式也可以设置为主动模式,其他步骤一样。
3.如权利要求1或2所述的一种基于因特网标准文件传输协议的文件断点上载方法,其特征是步骤(7)中所选的文件头大小为0.1k字节到1k字节。
4.如权利要求3所述的一种基于因特网标准文件传输协议的文件断点上载方法,其特征是步骤(11)中对文件体进行分块时,每个文件块的大小为1k字节到16k字节。
全文摘要
本发明涉及一种基于因特网标准文件传输协议即FTP协议的文件断点上载方法,属于因特网标准文件传输协议应用领域。现有技术中,利有FTP协议进行文件上载时,在传送过程中可能发生中断,FTP服务器会把已经上载的文件块当成不合法的文件删除,所以中断后只能重新上载整个文件,耗时耗力。本发明所述的方法,在需要上载的文件中选择部分内容作为文件头发送到FTP服务器,之后关闭与服务器之间的数据连接,然后重新与FTP服务器建立数据连接,将剩余文件内容分块全部传送并追加到已存在服务器的文件里。采用本发明所述的方法,可以在现有FTP协议的基础上实现文件上载过程中的断点续传,将由于中断所造成的重复上载的损失降到了最少。
文档编号H04L29/06GK1622553SQ200410101648
公开日2005年6月1日 申请日期2004年12月20日 优先权日2004年12月20日
发明者王伟 申请人:北京北大方正电子有限公司, 北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1