極速下載站 —— 提供優(yōu)質(zhì)軟件下載服務(wù),感受全新的極速下載體驗(yàn)!

最近更新 | 軟件專題 | 軟件分類 | 軟件排行

您的位置:極速下載站資訊首頁軟件教程電腦軟件教程 → FTP傳輸?shù)膬煞N模式 [serv-u圖文教程]

FTP傳輸?shù)膬煞N模式 [serv-u圖文教程]

時(shí)間:2011-03-12 11:57:27  作者:不思議游戲  瀏覽量:3346

主動(dòng)模式(active):

我們知道,F(xiàn)TP是由TCP封包的模式連接,TCP 這種封包由于需要經(jīng)過 Server 端與 Client 端兩邊的『三次握手』之后,才能確定聯(lián)機(jī),也就是需要執(zhí)行ACK確認(rèn)的動(dòng)作,需要經(jīng)過以下幾個(gè)動(dòng)作。

圖1:FTP傳輸?shù)膬煞N模式

Client 端主動(dòng)向 Server 端發(fā)送聯(lián)機(jī)需求: 首先client端會(huì)隨機(jī)選取1024以上的端口來主動(dòng)聯(lián)機(jī)到server端提供的21端口,也就是會(huì)主動(dòng)發(fā)送一個(gè)封包到server。 

Server 端接受后,響應(yīng)給 Client 端:當(dāng) Server 接收到 Client 的要求之后,會(huì)響應(yīng) Client 端的需求,此時(shí) Server 端會(huì)建立等待聯(lián)機(jī)的資源,并且將一帶有 SYN 與確認(rèn) (ACK) 的封包送回 Client 端; 

Client 端回應(yīng)確認(rèn)封包:在 Client 端接收到來自 Server 端告知的封包后,會(huì)再次的發(fā)送一個(gè)確認(rèn)封包給主機(jī),此時(shí),兩邊才會(huì)正式的建立起聯(lián)機(jī)的通道,這個(gè)步驟 1 ~ 3 就是 Three-Way Handshake(三次握手)。需要注意的是,這個(gè)已經(jīng)建立聯(lián)機(jī)的通道(通常是 port 21)僅能進(jìn)行 FTP 的『指令』而已,如果該指令涉及到數(shù)據(jù)的傳送(data transfer)時(shí),例如上傳或下載等等,那么就需要額外建立一條數(shù)據(jù)傳輸?shù)耐ǖ啦判?( ftp-data )!而數(shù)據(jù)傳輸?shù)耐ǖ澜t需要繼續(xù)底下的步驟;

 圖2:FTP傳輸?shù)膬煞N模式

Client 端發(fā)送數(shù)據(jù)傳輸要求的命令給 Server:當(dāng)需要進(jìn)行數(shù)據(jù)的傳輸時(shí),Client 端會(huì)啟用另一個(gè)高于 1024 的端口來做為聯(lián)機(jī)的準(zhǔn)備(這個(gè)高于 1024 的端口與步驟 1 那個(gè)端口不是同一個(gè)!),并且 Client 端會(huì)主動(dòng)的利用剛剛已經(jīng)建立的指令信道(通常是 port 21)發(fā)送一個(gè)命令告訴 Server 說:『我已經(jīng)準(zhǔn)備好一個(gè)數(shù)據(jù)傳輸?shù)亩丝诹耍?qǐng)準(zhǔn)備進(jìn)行傳輸吧』! 

Server 端以 ftp-data 端口主動(dòng)聯(lián)機(jī)到 Client :收到命令之后的 Server 會(huì)『主動(dòng)』的以 ftp-data 端口(一般為 port 20)向 Client 端通知的那個(gè)高于 1024 的端口進(jìn)行聯(lián)機(jī)。

Client 端響應(yīng)主機(jī)端,并繼續(xù)完成三次握手:在接到 Server 來的封包之后, Client 會(huì)響應(yīng)一個(gè)帶有 ACK 確認(rèn)的封包,并繼續(xù)來完成另一個(gè)三次握手的程序,此時(shí),數(shù)據(jù)傳輸?shù)耐ǖ啦耪降慕ⅰ?/p>

以上就是client端以主動(dòng)模式連接Server端的過程,適合FTP 服務(wù)器和PC客戶端的直接建立連接,使用到的端口: 
(1)命令通道的 (預(yù)設(shè)為port 21) 。
(2)數(shù)據(jù)傳輸?shù)?(預(yù)設(shè)為port 20)。

被動(dòng)模式(passive)

還有一種網(wǎng)絡(luò)狀況,就是Client 端是在防火墻后端,或者是NAT主機(jī)后端,這個(gè)時(shí)候client端和server端之間建立FTP連接時(shí),就會(huì)出現(xiàn)一些不一樣的狀況。
FTP client 是在 NAT 主機(jī)的后端,那由于我們的 NAT 主機(jī)會(huì)自動(dòng)的紀(jì)錄 client 端向外聯(lián)機(jī)的信息,所以在 Client 依上面步驟 1 送出要求封包后,步驟 2 的 FTP 回傳的封包可以透過 NAT 轉(zhuǎn)交給 client ,這沒有問題!所以, Client 連接到 Server 的命令通道 ( port 21 )可以正確的被建立起來的。不過,Client 端在建立起了命令通道之后,對(duì) Server 下達(dá)數(shù)據(jù)傳輸?shù)拿畛鯐?huì)出現(xiàn)一些問題,我們以底下的圖示來說明好了:

由于目前的 NAT 主機(jī)可以記錄由內(nèi)部計(jì)算機(jī)聯(lián)機(jī)出去的信息,因此,由 port 21 的聯(lián)機(jī)可以順利的被建立起來; 

當(dāng) Client 端由 port 21 下達(dá)數(shù)據(jù)傳輸?shù)拿顣r(shí),此時(shí)client會(huì)告訴 FTP Server 說:『我開了一個(gè) >1024 的端口,請(qǐng)來連接吧』! 

這個(gè)時(shí)候要特別留意的是,client經(jīng)過NAT主機(jī)聯(lián)機(jī)后,在 FTP Server 看到的client的 IP 其實(shí)是 NAT 那部主機(jī)的!所以,這個(gè)時(shí)候 FTP Server 會(huì)主動(dòng)的由 port 20 向 NAT 主機(jī)的 >1024 那個(gè) port 要求建立聯(lián)機(jī)!

經(jīng)過上圖我們會(huì)發(fā)現(xiàn),F(xiàn)TP Server會(huì)根據(jù)client的命令去連接那個(gè)>1024的端口,NAT主機(jī)或者防火墻并沒有那個(gè)開啟那個(gè)>1024的端口,所以就會(huì)造成無法連接的問題。

既然這樣不能正常連接,那么我們就讓client主動(dòng)去連接服務(wù)器,這樣就不會(huì)出現(xiàn)上述的問題了,這種方式我們稱之為“被動(dòng)模式(passive)”。被動(dòng)模式會(huì)經(jīng)過經(jīng)過以下幾個(gè)步驟:

Client 端主動(dòng)向 Server 端發(fā)送聯(lián)機(jī)需求:

Server 端接受后,響應(yīng)給 Client 端:

Client 端回應(yīng)確認(rèn)封包:上面這三個(gè)步驟與主動(dòng)式聯(lián)機(jī)一樣,同樣的完成三次握手后,建立命令通道了!底下說明被動(dòng)式數(shù)據(jù)傳輸信道的建立。

12下一頁>

相關(guān)資訊

相關(guān)軟件

電腦軟件教程排行
最新電腦軟件教程
軟件教程分類

更多常用電腦軟件

更多同類軟件專題