本發(fā)明屬于數(shù)據(jù)傳輸?shù)募夹g(shù)領(lǐng)域,特別涉及基于TCP的FTP下載方法。
背景技術(shù):
FTP是TCP/IP協(xié)議組中協(xié)議之一。FTP協(xié)議包括兩個部分,其一為FTP服務器,其二為FTP客戶端。如圖1所示,其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協(xié)議訪問位于FTP服務器上的資源。在開發(fā)網(wǎng)站的時候,通常利用FTP協(xié)議把網(wǎng)頁或程序傳到Web服務器上。此外,由于FTP傳輸效率非常高,在網(wǎng)絡上傳輸大的文件時,一般也采用該協(xié)議。
但是目前的FTP技術(shù)也有其缺點,即在網(wǎng)絡不擁塞的情況,實際下載速率遠遠達不到標稱速率。特別是為客戶安裝完網(wǎng)絡硬件設備之后,在網(wǎng)絡上啟用基于FTP協(xié)議的網(wǎng)絡應用,結(jié)果發(fā)現(xiàn)FTP的下載速率與標稱的規(guī)格有很大差距。傳統(tǒng)方法在遇到這樣的問題是通過增大緩存,可是增大緩存的方法一方面增加設備的成本,另一方面也未能很明顯的提升帶寬。
如專利申請201410764780.7公開了一種用于FTP協(xié)議的上傳數(shù)據(jù)的方法及其下載數(shù)據(jù)的方法,該方法包括:S101,普通節(jié)點向關(guān)鍵節(jié)點發(fā)送上傳數(shù)據(jù)請求;S102,所述關(guān)鍵節(jié)點接收上傳數(shù)據(jù)請求,并向所述普通節(jié)點發(fā)送確認發(fā)送信息;S103,所述普通節(jié)點接收確認發(fā)送信息后,向所述關(guān)鍵節(jié)點上傳數(shù)據(jù);以及S104,所述關(guān)鍵節(jié)點接收所述數(shù)據(jù),并將所述數(shù)據(jù)上傳至服務器。該用于FTP協(xié)議的上傳數(shù)據(jù)的方法及其下載數(shù)據(jù)的方法通過FTP進行大量小文件傳輸,保證了文件的快速傳輸。該方法是通過對文件大小的判斷來控制數(shù)據(jù)的傳輸,仍然解決不了上述問題。
技術(shù)實現(xiàn)要素:
為解決上述問題,本發(fā)明的目的在于提供一種基于TCP的FTP下載方法,該方法能夠在不增加緩存和硬件成本的基礎(chǔ)上大大提升了FTP的實際下載速率。
為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下。
一種基于TCP的FTP下載方法,其特征在于所示方法在FTP開始運行后,基于兩種算法來增加擁塞窗口,在穩(wěn)定狀態(tài)時,使用擁塞避免算法線性增加擁塞窗口;在傳輸開始時,或者超時重傳或者空閑很長時間,這時使用慢啟動算法來增加擁塞窗口。
慢啟動算法為:
cwndn+1=cwndn+MTU
擁塞避免算法:
其中,cwndn是當前窗口大小。
具體步驟如下:
101、啟動FTP服務器,指定下載的數(shù)據(jù);
102、用戶端與FTP服務器建立TCP會話;
103、啟動下載;下載中,啟動擁塞避免算法線性增加擁塞窗口;在傳輸開始時,或者超時重傳或者空閑很長時間,使用慢啟動算法來增加擁塞窗口;
104、下載結(jié)束。
所述103步驟中,F(xiàn)TP服務器和用戶端程序不斷監(jiān)控實時帶寬和鏈路往返延時。
進一步,所述103步驟中,包括有:
1031、判斷當前網(wǎng)絡是否擁塞,是則進入下一步啟動慢啟動算法,否則進入啟動擁塞避免算法步驟;
1032、啟動慢啟動算法,保持A值不變,或者減少A,減慢開窗速度,減小下載帶寬;
1033、啟動擁塞避免算法,增大A值,加快開窗速度,增大下載帶寬。
更進一步,在判斷完網(wǎng)絡是否擁塞后,還包括有:判斷當前鏈路往返延時(RTT)是否過大?如若正常則保持A值不變,保持正常開窗和下載速度;如若過大,則增大A值,加快開窗速度,增大下載帶寬。
本發(fā)明通過該方法,能夠在不增加緩存和其它硬件成本的基礎(chǔ)上,實現(xiàn)對下載網(wǎng)絡的實時監(jiān)控,通過增加擁塞窗口來提高下載速度,在不增加緩存的情況下,能夠大大提高FTP的實際下載速率。
附圖說明
圖1是現(xiàn)有技術(shù)所實施的下載硬件結(jié)構(gòu)圖。
圖2是本發(fā)明所實施的軟件控制流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明所實施的方法,在FTP開始運行后,基于兩種算法來增加擁塞窗口。在穩(wěn)定狀態(tài)時,使用擁塞避免算法線性增加擁塞窗口;在傳輸開始時,或者超時重傳或者空閑很長時間,這時使用慢啟動算法來增加擁塞窗口。這兩個過程所使用的公式分別如下:
慢啟動算法為:
cwndn+1=cwndn+MTU (1)
擁塞避免算法:
其中,cwndn是當前窗口大小。
因為FTP一旦開始經(jīng)過慢啟動后,將一直處于擁塞避免階段,因此影響速率的主要在擁塞避免階段,所以只關(guān)注公式(2)。從公式(2)看出這是一個增函數(shù),但是增量會越來越小,它應該有個極限值。
為便于計算,將公式(2)改成算式(3)的一般形似。
其中A=MTU2,然后進一步簡化,得
左右兩邊同乘以x,得
x2+x*Δx=x2+A (5)
進一步化簡,得
x*Δx=A (6)
假設從最初的最大窗口的一半調(diào)整到最大窗口所需要時間為T。由于擁塞避免時窗口的大小在每個RTT(網(wǎng)絡延時)調(diào)整一次,那么T時間內(nèi),窗口調(diào)整的次數(shù):M=T/RTT。于是,將算式(6)在每個時刻的值求和,得
算式(7)左邊表達式中,是一個微小量,因此左邊表達式的求和運算等價于下面的積分運算:
其中Xmax為最大窗口,結(jié)合算式(7)和(8)得:
再引入一個公式:
其中rmax為FTP的最大帶寬,將(12)和M=T/RTT帶入(11),得
從算式(13)可以看出:
1.算式左側(cè)的T表示從最初的最大窗口的一半調(diào)整到最大窗口所需時間。它越大,表明調(diào)整到最大窗口的時間越長,也表明平均帶寬越小。
2.由于窗口大小和實際帶寬是正相關(guān)的關(guān)系。rmax越大,T成3次方增大,這樣窗口調(diào)整時間T就越長,于是平均帶寬與期望帶寬的偏差就越大。而rmax比較小時,平均帶寬與期望帶寬的偏差并不明顯。
3.式中RTT參數(shù)是鏈路往返延時,這個延時很大的話同樣會增加T,從而影響FTP吞吐量。因此要盡量減少網(wǎng)絡延時(如減少數(shù)據(jù)流傳輸路徑,使用低延時的傳輸媒介),添加適當?shù)木彺妫乐咕W(wǎng)絡過早丟包,可以減少RTT,但是如果緩存太大則會增加RTT。
因此通過使用較大的A值,或者在協(xié)議中使用自適應的A值,即在小帶寬應用中使用較小的A值,在大帶寬應用中使用較大的A值。這樣在高速率(rmax)和高延時RTT(有些地方的網(wǎng)絡它的延時就很大,而且難以改變),可以通過A來抵消高速率(rmax)和高延時RTT的影響,從而獲得較小的T,從而FTP的帶寬可以獲得顯著提升。
基于此,本發(fā)明所實現(xiàn)的方法包括具體步驟如下:
S101、啟動ftp server,指定下載的數(shù)據(jù)。
S102、用戶端,打開ftp下載軟件,輸入ftp server IP地址,與ftp server建立TCP會話。
S103、會話建立后,啟動下載。
S104、ftp server和用戶端程序不斷監(jiān)控實時帶寬和鏈路往返延時。
S105、判斷當前網(wǎng)絡是否擁塞?是則進入S106,否則進入S107步驟。
S106、啟動慢啟動算法,保持A值不變,或者減少A,減慢開窗速度,減小下載帶寬。
S107、啟動擁塞避免算法,增大A值,加快開窗速度,增大下載帶寬。
S108、判斷當前鏈路往返延時(RTT)是否過大?如若正常則進入步驟S110,如果過大,則進入步驟S109。
S109、增大A值,加快開窗速度,增大下載帶寬。
S110、保持A值不變,保持正常開窗和下載速度。
S111、下載結(jié)束。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。