FTP主动模式和被动模式讲解
主動模式FTP與被動模式FTP該如何選擇?
? ?無論是主動模式還是被動模式,其要進(jìn)行文件傳輸都必須依次建立兩個連接,分別為命令連接與數(shù)據(jù)連結(jié)。而主動模式與被動模式的差異主要體現(xiàn)在數(shù)據(jù)連結(jié)通道上。為了說明兩者的差異,我將主要對這個數(shù)據(jù)連結(jié)進(jìn)行比較詳細(xì)的說明。?
當(dāng)FTP客戶端需要登陸到FTP服務(wù)器上的時候,服務(wù)器與客戶端需要進(jìn)行一系列的身份驗證過程,這個過程就叫做命令連接。如在客戶端向服務(wù)器發(fā)起連接請求的時候,客戶端會隨即的選擇某個TCP端口來跟FTP服務(wù)器的21號端口進(jìn)行連接,這主要是通過TCP三方握手來實現(xiàn)的。當(dāng)三方握手完成之后,客戶端與服務(wù)器之間便建立了命令連接通道。不過這個通道的用途是非常有限的,其主要用來傳輸FTP的相關(guān)指令。如查看文件列表、刪除文件等等,而不能夠用來在客戶 端與服務(wù)端進(jìn)行文件傳輸。為此這個通道就被稱之為命令通道。而跟數(shù)據(jù)傳輸相關(guān)的為數(shù)據(jù)通道。?
到客戶端與服務(wù)器建立了連接之后,可能客戶端暫時不需要進(jìn)行數(shù)據(jù)傳輸。如只是需要查看目錄下的文件或則其他相關(guān)的動作。此時之需要命令連接通道就可以完 成了。如果此時客戶端需要往FTP服務(wù)器上上傳或者下載文件的話,就需要在客戶端與服務(wù)器端再建立一條額外的數(shù)據(jù)傳輸連接。?
二、主動模式的實現(xiàn)與特點。?
? 當(dāng)客戶端發(fā)出數(shù)據(jù)傳輸?shù)闹噶钪?如上傳數(shù)據(jù)或者下載文件),客戶端會啟用另外一個端口監(jiān)聽等待連接,并利用先前建立的命令連接通道告訴FTP服務(wù)器其監(jiān)聽的端口號。然后FTP服務(wù)器會利用端口20和剛才的FTP客戶端所告知的端口再次進(jìn)行三方握手。三次握手成功后便建立了一條數(shù)據(jù)傳輸通道。注意此時數(shù)據(jù) 連結(jié)通道建立的過程中,是FTP服務(wù)器的20號端口主動連接FTP客戶端的,為此這種連接方式就叫做主動模式。?
三、被動模式的實現(xiàn)與特點。?
被動操作模式在建立命令連接通道的時候,跟主動操作模式是相同的。兩者主要的差異就在于數(shù)據(jù)傳輸通道的建立上面。但是如果用戶需要進(jìn)行數(shù)據(jù)傳輸?shù)臅r候, 則FTP客戶端會通過命令通道告訴FTP服務(wù)器,如會向服務(wù)器發(fā)出一個PASV指令。這個指令就是告訴服務(wù)期,要采用被動模式建立連接。如果采用被動操作 模式,服務(wù)期會選擇自身的一個端口來進(jìn)行監(jiān)聽連接(而在主動操作模式下是利用客戶端的一個端口來進(jìn)行監(jiān)聽連接),并再次利用命令連接通道告訴客戶端“我為 你開啟了哪個端口,你要建立數(shù)據(jù)連接的話就跟我的哪個端口聯(lián)系”。客戶端在接到這個信息后,就會在自己操作系統(tǒng)上選擇一個數(shù)據(jù)連接的通信端口,與服務(wù)器提 供的端口進(jìn)行三方握手,并最終建立起可以進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ馈?
可見,從技術(shù)上來說,主動模式與被動操作模式的主要差異就在于誰開啟一個端口來進(jìn)行監(jiān)聽連接,誰等待(提供端口)、誰主動。雖然在技術(shù)上的差異比較小,但是其在具體的應(yīng)用上卻有很大的不同。?
四、兩者該如何選擇??
當(dāng)企業(yè)的網(wǎng)絡(luò)環(huán)境不同,兩個操作模式的應(yīng)用效果是不同的。這主要是主動操作模式與被動操作模式在數(shù)據(jù)的傳輸通道建立上有一定的差異。從以上的分析中我們 可以看出,在主動操作模式下,FTP服務(wù)器的20號端口是主動同客戶端聯(lián)系,建立數(shù)據(jù)傳輸通道的。而在被動操作模式下,則FTP服務(wù)器是被動的等待,等待 客戶段與其的20號端口建立連接。不要小看這個細(xì)小的差異,這個差異卻決定了兩者應(yīng)用環(huán)境的不同。?
一般來說,如果這個FTP服務(wù)器只對企業(yè)的內(nèi)部局域網(wǎng)客戶提供文件傳輸?shù)姆?wù),那么基本上兩者的應(yīng)用效果沒有很大的差異。但是如果企業(yè)網(wǎng)絡(luò)外部的用戶也 需要通過互聯(lián)網(wǎng)與FTP服務(wù)器進(jìn)行文件傳輸?shù)脑?#xff0c;就會有很大的不同。這主要是因為,在數(shù)據(jù)通道建立的過程中,客戶端會在另一個端口上監(jiān)聽等待連接,并利用 命令連接通道告訴服務(wù)器其監(jiān)聽的端口好。然后企業(yè)的邊界路由器會將FTP的IP地址轉(zhuǎn)換為合法的公網(wǎng)IP地址(假設(shè)企業(yè)由于公網(wǎng)IP地址有限,在邊界路由 器上通過NAT服務(wù)向外部用戶提供FTP連接)。如果此時采用的是自動操作模式的話,則在連接這個數(shù)據(jù)通道的過程中FTP服務(wù)器會主動跟邊界路由器的端口 進(jìn)行通信(因為FTP服務(wù)器認(rèn)為這臺邊界路由器,其實就是NAT服務(wù)器,就是FTP客戶段)。但是實際上不是,而且也有可能沒有啟用這個端口。為此客戶端 與FTP服務(wù)器之間的連接最終沒有建立起來。所以說,如果采用主動操作模式的話,當(dāng)FTP服務(wù)器部署在NAT等服務(wù)器后面的時候,則FTP服務(wù)器與客戶端 之間只能夠建立命令連接通道,而無法建立起數(shù)據(jù)傳輸通道。如果FTP服務(wù)器與客戶端之間還有防火墻的話,在連接的過程中也會出現(xiàn)以上類似的情況。?
而如果是采用被動操作模式的話,是客戶端主動跟服務(wù)器的20號端口進(jìn)行連接的。為此在數(shù)據(jù)傳輸通道建立的過程中,即使中間有NAT服務(wù)器或者防火墻,也 會準(zhǔn)確無誤的連接到FTP服務(wù)器的數(shù)據(jù)傳輸接口。所以說,如果在客戶端與FTP服務(wù)器之間存在防火墻或者NAT服務(wù)器等類似設(shè)備的話,那么在FTP服務(wù)器 部署的時候,最好采用被動操作模式。否則的話,很可能只能夠建立命令連接通道,而無法進(jìn)行數(shù)據(jù)傳輸。?
在 FTP服務(wù)器部署的時候,其默認(rèn)采用的是主動操作模式。如果企業(yè)FTP服務(wù)器的用戶都是在內(nèi)部網(wǎng)絡(luò)中的,即不用像外部網(wǎng)絡(luò)的用戶提供FTP連接的需求,那 么采用這個默認(rèn)操作方式就可以了。但是如果一些出差在外的員工或者員工在家庭辦公時也需要訪問企業(yè)內(nèi)部的FTP服務(wù)器,而此時出于安全的考慮或者公網(wǎng)IP 地址數(shù)量的限制,企業(yè)往往會把FTP服務(wù)器部署在防火墻或者NAT服務(wù)器的后面,此時這個主動操作模式就不行了。如果企業(yè)中通過互聯(lián)網(wǎng)來訪問企業(yè)內(nèi)部 FTP服務(wù)器的員工比較多的時候,那么最好能夠一勞永逸的解決這個問題,即在FTP服務(wù)器上進(jìn)行設(shè)置,強(qiáng)制客戶端在連接的時候采用被動操作模式。相反如果 用戶比較少的話,而且用戶又具有一定的計算機(jī)知識,那么可以不在服務(wù)器上進(jìn)行設(shè)置。而是在連接的過程中,通過FTP客戶端來設(shè)置。如在某些FTP客戶端 上,會有一個Passive Transfers等類似的選項。選中這個選項就表示以被動操作方式進(jìn)行傳輸。而沒有選中這個選項的客戶端則仍然采用主動操作模式來進(jìn)行連接。
實施背景:
公司數(shù)據(jù)備份服務(wù)器(SYSTEM:WINDOWS SERVER 2003 ),數(shù)據(jù)采集方式為:FTP上傳方式。基于安全考慮,該服務(wù)器只允許基于ftp服務(wù)的tcp20、21端口數(shù)據(jù)流通過。
FTP模式說明:
FTP是基于TCP的服務(wù),使用2個端口,一個數(shù)據(jù)端口和一個命令端口(也可叫做控制端口)。
固定的命令端口:21
數(shù)據(jù)端口:(取決于連接模式)20或者>1024其它端口
主動FTP
主動方式的FTP是這樣的:客戶端從一個任意的非特權(quán)端口N(N>1024)連接到FTP服務(wù)器的命令端口,也就是21端口。然后客戶端開始監(jiān)聽端口N+1,并發(fā)送FTP命令"port N+1"到FTP服務(wù)器。接著服務(wù)器會從它自己的數(shù)據(jù)端口(20)連接到客戶端指定的數(shù)據(jù)端口(N+1)。
針對FTP服務(wù)器前面的防火墻來說,必須允許以下通訊才能支持主動方式FTP:
1. 任何端口到FTP服務(wù)器的21端口 (客戶端初始化的連接 S<-C)
2. FTP服務(wù)器的21端口到大于1024的端口(服務(wù)器響應(yīng)客戶端的控制端口 S->C)
3. FTP服務(wù)器的20端口到大于1024的端口(服務(wù)器端初始化數(shù)據(jù)連接到客戶端的數(shù)據(jù)端口 S->C)
4. 大于1024端口到FTP服務(wù)器的20端口(客戶端發(fā)送ACK響應(yīng)到服務(wù)器的數(shù)據(jù)端口 S<-C)
總結(jié):
服務(wù)器主動連接客戶端
命令連接:客戶端>1024端口->?服務(wù)器21端口
數(shù)據(jù)連接:客戶端>1024端口<-?服務(wù)器20端口
被動FTP
為了解決服務(wù)器發(fā)起到客戶的連接的問題,人們開發(fā)了一種不同的FTP連接方式。這就是所謂的被動方式,或者叫做PASV,當(dāng)客戶端通知服務(wù)器它處于被動模式時才啟用。
在被動方式FTP中,命令連接和數(shù)據(jù)連接都由客戶端,這樣就可以解決從服務(wù)器到客戶端的數(shù)據(jù)端口的入方向連接被防火墻過濾掉的問題。當(dāng)開啟一個 FTP連接時,客戶端打開兩個任意的非特權(quán)本地端口(N > 1024和N+1)。第一個端口連接服務(wù)器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令并允許服務(wù)器來回連它的數(shù)據(jù)端口,而是提交 PASV命令。這樣做的結(jié)果是服務(wù)器會開啟一個任意的非特權(quán)端口(P > 1024),并發(fā)送PORT P命令給客戶端。然后客戶端發(fā)起從本地端口N+1到服務(wù)器的端口P的連接用來傳送數(shù)據(jù)。
對于服務(wù)器端的防火墻來說,必須允許下面的通訊才能支持被動方式的FTP:
1. 從任何端口到服務(wù)器的21端口 (客戶端初始化的連接 S<-C)
2. 服務(wù)器的21端口到任何大于1024的端口 (服務(wù)器響應(yīng)到客戶端的控制端口的連接 S->C)
3. 從任何端口到服務(wù)器的大于1024端口 (入;客戶端初始化數(shù)據(jù)連接到服務(wù)器指定的任意端口 S<-C)
4. 服務(wù)器的大于1024端口到遠(yuǎn)程的大于1024的端口(出;服務(wù)器發(fā)送ACK響應(yīng)和數(shù)據(jù)到客戶端的數(shù)據(jù)端口 S->C)
總結(jié):
客戶端主動連接客戶端
命令連接:客戶端>1024端口->?服務(wù)器21端口
數(shù)據(jù)連接:客戶端>1024端口->?服務(wù)器>1024端口
總結(jié)
以上是生活随笔為你收集整理的FTP主动模式和被动模式讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XSL中特殊符号详解
- 下一篇: 对DES中的第一个S盒子S1,计算随机变