亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于TCP的FTP下載方法與流程

文檔序號:11960402閱讀:228來源:國知局
一種基于TCP的FTP下載方法與流程

本發(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

擁塞避免算法:

<mrow> <msub> <mi>cwnd</mi> <mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mi>cwnd</mi> <mi>n</mi> </msub> <mo>+</mo> <mfrac> <mrow> <msup> <mi>MTU</mi> <mn>2</mn> </msup> </mrow> <mrow> <msub> <mi>cwnd</mi> <mi>n</mi> </msub> </mrow> </mfrac> </mrow>

其中,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)

擁塞避免算法:

<mrow> <msub> <mi>cwnd</mi> <mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mi>cwnd</mi> <mi>n</mi> </msub> <mo>+</mo> <mfrac> <mrow> <msup> <mi>MTU</mi> <mn>2</mn> </msup> </mrow> <mrow> <msub> <mi>cwnd</mi> <mi>n</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

其中,cwndn是當前窗口大小。

因為FTP一旦開始經(jīng)過慢啟動后,將一直處于擁塞避免階段,因此影響速率的主要在擁塞避免階段,所以只關(guān)注公式(2)。從公式(2)看出這是一個增函數(shù),但是增量會越來越小,它應該有個極限值。

為便于計算,將公式(2)改成算式(3)的一般形似。

<mrow> <msub> <mi>x</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>&Delta;</mi> <mi>t</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>x</mi> <mi>t</mi> </msub> <mo>+</mo> <mfrac> <mi>A</mi> <msub> <mi>x</mi> <mi>t</mi> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

其中A=MTU2,然后進一步簡化,得

<mrow> <mi>x</mi> <mo>+</mo> <mi>&Delta;</mi> <mi>x</mi> <mo>=</mo> <mi>x</mi> <mo>+</mo> <mfrac> <mi>A</mi> <mi>x</mi> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

左右兩邊同乘以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)在每個時刻的值求和,得

<mrow> <msub> <mi>x</mi> <msub> <mi>t</mi> <mn>0</mn> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mn>0</mn> </msub> </msub> <mo>+</mo> <msub> <mi>x</mi> <msub> <mi>t</mi> <mn>1</mn> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mn>1</mn> </msub> </msub> <mo>+</mo> <msub> <mi>x</mi> <msub> <mi>t</mi> <mn>2</mn> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mn>2</mn> </msub> </msub> <mo>+</mo> <mn>............</mn> <mo>+</mo> <msub> <mi>x</mi> <msub> <mi>t</mi> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </msub> <mo>=</mo> <mi>A</mi> <mo>*</mo> <mi>M</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

算式(7)左邊表達式中,是一個微小量,因此左邊表達式的求和運算等價于下面的積分運算:

<mrow> <msub> <mi>x</mi> <msub> <mi>t</mi> <mn>0</mn> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mn>0</mn> </msub> </msub> <mo>+</mo> <msub> <mi>x</mi> <msub> <mi>t</mi> <mn>1</mn> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mn>1</mn> </msub> </msub> <mo>+</mo> <msub> <mi>x</mi> <msub> <mi>t</mi> <mn>2</mn> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mn>2</mn> </msub> </msub> <mo>+</mo> <mn>............</mn> <mo>+</mo> <msub> <mi>x</mi> <msub> <mi>t</mi> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </msub> <mo>*</mo> <msub> <mi>&Delta;x</mi> <msub> <mi>t</mi> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </msub> <munderover> <mo>&Integral;</mo> <mrow> <msub> <mi>X</mi> <mi>max</mi> </msub> <mo>/</mo> <mn>2</mn> </mrow> <msub> <mi>X</mi> <mi>max</mi> </msub> </munderover> <mi>x</mi> <mi>d</mi> <mi>x</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo> </mrow> </mrow>

其中Xmax為最大窗口,結(jié)合算式(7)和(8)得:

<mrow> <munderover> <mo>&Integral;</mo> <mrow> <msub> <mi>X</mi> <mi>max</mi> </msub> <mo>/</mo> <mn>2</mn> </mrow> <msub> <mi>X</mi> <mi>max</mi> </msub> </munderover> <mi>x</mi> <mi>d</mi> <mi>x</mi> <mo>=</mo> <mi>A</mi> <mo>*</mo> <mi>M</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mfrac> <msup> <mi>x</mi> <mn>2</mn> </msup> <mn>2</mn> </mfrac> <msubsup> <mo>|</mo> <mrow> <msub> <mi>X</mi> <mi>max</mi> </msub> <mo>/</mo> <mn>2</mn> </mrow> <msub> <mi>X</mi> <mi>max</mi> </msub> </msubsup> <mo>=</mo> <mi>A</mi> <mo>*</mo> <mi>M</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mfrac> <mrow> <mn>3</mn> <mo>*</mo> <msup> <msub> <mi>X</mi> <mi>max</mi> </msub> <mn>2</mn> </msup> </mrow> <mn>8</mn> </mfrac> <mo>=</mo> <mi>A</mi> <mo>*</mo> <mi>M</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> </mrow>

再引入一個公式:

<mrow> <mfrac> <msub> <mi>X</mi> <mi>max</mi> </msub> <mrow> <mi>R</mi> <mi>T</mi> <mi>T</mi> </mrow> </mfrac> <mo>=</mo> <msub> <mi>r</mi> <mi>max</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>12</mn> <mo>)</mo> </mrow> </mrow>

其中rmax為FTP的最大帶寬,將(12)和M=T/RTT帶入(11),得

<mrow> <mi>T</mi> <mo>=</mo> <mfrac> <mrow> <mn>3</mn> <mo>*</mo> <msup> <msub> <mi>r</mi> <mi>max</mi> </msub> <mn>2</mn> </msup> <mo>*</mo> <msup> <mi>RTT</mi> <mn>3</mn> </msup> </mrow> <mrow> <mn>8</mn> <mo>*</mo> <mi>A</mi> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

從算式(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)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1