本发明属于数据传输的技术领域,特别涉及基于TCP的FTP下载方法。
背景技术:
FTP是TCP/IP协议组中协议之一。FTP协议包括两个部分,其一为FTP服务器,其二为FTP客户端。如图1所示,其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
但是目前的FTP技术也有其缺点,即在网络不拥塞的情况,实际下载速率远远达不到标称速率。特别是为客户安装完网络硬件设备之后,在网络上启用基于FTP协议的网络应用,结果发现FTP的下载速率与标称的规格有很大差距。传统方法在遇到这样的问题是通过增大缓存,可是增大缓存的方法一方面增加设备的成本,另一方面也未能很明显的提升带宽。
如专利申请201410764780.7公开了一种用于FTP协议的上传数据的方法及其下载数据的方法,该方法包括:S101,普通节点向关键节点发送上传数据请求;S102,所述关键节点接收上传数据请求,并向所述普通节点发送确认发送信息;S103,所述普通节点接收确认发送信息后,向所述关键节点上传数据;以及S104,所述关键节点接收所述数据,并将所述数据上传至服务器。该用于FTP协议的上传数据的方法及其下载数据的方法通过FTP进行大量小文件传输,保证了文件的快速传输。该方法是通过对文件大小的判断来控制数据的传输,仍然解决不了上述问题。
技术实现要素:
为解决上述问题,本发明的目的在于提供一种基于TCP的FTP下载方法,该方法能够在不增加缓存和硬件成本的基础上大大提升了FTP的实际下载速率。
为实现上述目的,本发明的技术方案如下。
一种基于TCP的FTP下载方法,其特征在于所示方法在FTP开始运行后,基于两种算法来增加拥塞窗口,在稳定状态时,使用拥塞避免算法线性增加拥塞窗口;在传输开始时,或者超时重传或者空闲很长时间,这时使用慢启动算法来增加拥塞窗口。
慢启动算法为:
cwndn+1=cwndn+MTU
拥塞避免算法:
其中,cwndn是当前窗口大小。
具体步骤如下:
101、启动FTP服务器,指定下载的数据;
102、用户端与FTP服务器建立TCP会话;
103、启动下载;下载中,启动拥塞避免算法线性增加拥塞窗口;在传输开始时,或者超时重传或者空闲很长时间,使用慢启动算法来增加拥塞窗口;
104、下载结束。
所述103步骤中,FTP服务器和用户端程序不断监控实时带宽和链路往返延时。
进一步,所述103步骤中,包括有:
1031、判断当前网络是否拥塞,是则进入下一步启动慢启动算法,否则进入启动拥塞避免算法步骤;
1032、启动慢启动算法,保持A值不变,或者减少A,减慢开窗速度,减小下载带宽;
1033、启动拥塞避免算法,增大A值,加快开窗速度,增大下载带宽。
更进一步,在判断完网络是否拥塞后,还包括有:判断当前链路往返延时(RTT)是否过大?如若正常则保持A值不变,保持正常开窗和下载速度;如若过大,则增大A值,加快开窗速度,增大下载带宽。
本发明通过该方法,能够在不增加缓存和其它硬件成本的基础上,实现对下载网络的实时监控,通过增加拥塞窗口来提高下载速度,在不增加缓存的情况下,能够大大提高FTP的实际下载速率。
附图说明
图1是现有技术所实施的下载硬件结构图。
图2是本发明所实施的软件控制流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明所实施的方法,在FTP开始运行后,基于两种算法来增加拥塞窗口。在稳定状态时,使用拥塞避免算法线性增加拥塞窗口;在传输开始时,或者超时重传或者空闲很长时间,这时使用慢启动算法来增加拥塞窗口。这两个过程所使用的公式分别如下:
慢启动算法为:
cwndn+1=cwndn+MTU (1)
拥塞避免算法:
其中,cwndn是当前窗口大小。
因为FTP一旦开始经过慢启动后,将一直处于拥塞避免阶段,因此影响速率的主要在拥塞避免阶段,所以只关注公式(2)。从公式(2)看出这是一个增函数,但是增量会越来越小,它应该有个极限值。
为便于计算,将公式(2)改成算式(3)的一般形似。
其中A=MTU2,然后进一步简化,得
左右两边同乘以x,得
x2+x*Δx=x2+A (5)
进一步化简,得
x*Δx=A (6)
假设从最初的最大窗口的一半调整到最大窗口所需要时间为T。由于拥塞避免时窗口的大小在每个RTT(网络延时)调整一次,那么T时间内,窗口调整的次数:M=T/RTT。于是,将算式(6)在每个时刻的值求和,得
算式(7)左边表达式中,是一个微小量,因此左边表达式的求和运算等价于下面的积分运算:
其中Xmax为最大窗口,结合算式(7)和(8)得:
再引入一个公式:
其中rmax为FTP的最大带宽,将(12)和M=T/RTT带入(11),得
从算式(13)可以看出:
1.算式左侧的T表示从最初的最大窗口的一半调整到最大窗口所需时间。它越大,表明调整到最大窗口的时间越长,也表明平均带宽越小。
2.由于窗口大小和实际带宽是正相关的关系。rmax越大,T成3次方增大,这样窗口调整时间T就越长,于是平均带宽与期望带宽的偏差就越大。而rmax比较小时,平均带宽与期望带宽的偏差并不明显。
3.式中RTT参数是链路往返延时,这个延时很大的话同样会增加T,从而影响FTP吞吐量。因此要尽量减少网络延时(如减少数据流传输路径,使用低延时的传输媒介),添加适当的缓存,防止网络过早丢包,可以减少RTT,但是如果缓存太大则会增加RTT。
因此通过使用较大的A值,或者在协议中使用自适应的A值,即在小带宽应用中使用较小的A值,在大带宽应用中使用较大的A值。这样在高速率(rmax)和高延时RTT(有些地方的网络它的延时就很大,而且难以改变),可以通过A来抵消高速率(rmax)和高延时RTT的影响,从而获得较小的T,从而FTP的带宽可以获得显著提升。
基于此,本发明所实现的方法包括具体步骤如下:
S101、启动ftp server,指定下载的数据。
S102、用户端,打开ftp下载软件,输入ftp server IP地址,与ftp server建立TCP会话。
S103、会话建立后,启动下载。
S104、ftp server和用户端程序不断监控实时带宽和链路往返延时。
S105、判断当前网络是否拥塞?是则进入S106,否则进入S107步骤。
S106、启动慢启动算法,保持A值不变,或者减少A,减慢开窗速度,减小下载带宽。
S107、启动拥塞避免算法,增大A值,加快开窗速度,增大下载带宽。
S108、判断当前链路往返延时(RTT)是否过大?如若正常则进入步骤S110,如果过大,则进入步骤S109。
S109、增大A值,加快开窗速度,增大下载带宽。
S110、保持A值不变,保持正常开窗和下载速度。
S111、下载结束。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。