FTP總結

FTP總結
 
在主動模式下,FTP客戶端隨機開啓一個大於1024的端口N向服務器的21號端口發起鏈接,而後開放N+1號端口進行監聽,並向服務器發出PORT N+1命令。服務器接收到命令後,會用其本地的FTP數據端口(一般是20)來主動鏈接客戶端指定的數據端口N+1,進行數據傳輸。

在被動模式下,FTP客戶端隨機開啓一個大於1024的端口N向服務器的21號端口發起鏈接,同時會開啓N+1號端口。而後向服務器發送PASV命令,通知服務器本身處於被動模式。服務器收到命令後,會開放一個大於1024的端口P進行監聽,而後用PORT P命令通知客戶端,本身的數據端口是P。客戶端收到命令後,會經過N+1號端口主動鏈接服務器的端口P,而後在兩個端口之間進行數據傳輸。

總的來講,主動模式的FTP是指服務器主動鏈接客戶端的數據端口,被動模式的FTP是指服務器被動地等待客戶端鏈接本身的數據端口。

被動模式的FTP一般用在處於防火牆以後的FTP客戶端訪問外界FTP服務器的狀況下。由於在這種狀況下,防火牆一般配置爲不容許外界訪問防火牆以後的主機,而只容許由防火牆以後的主機發起的鏈接請求經過。所以,在這種狀況下不能使用主動模式的FTP傳輸,而被動模式的FTP卻能夠正常的工做。

==============================================================
 
FTP是僅基於TCP的服務,不支持UDP。不同凡響的是FTP使用2個端口,一個數據端口和一個命令端口(也叫作控制端口)。一般來講這兩個端口是21(命令端口)和20(數據端口)。但FTP 工做方式的不一樣,數據端口並不老是20。這就是主動與被動FTP的最大不一樣之處。

(一)主動FTP

主動方式的FTP是這樣的:客戶端從一個任意的非特權端口N(N>1024)鏈接到FTP服務器的命令端口,也就是21端口。而後客戶端開始監聽端口N+1,併發送FTP命令「port N+1」到FTP服務器。接着服務器會從它本身的數據端口(20)鏈接到客戶端指定的數據端口(N+1)。
 
針對FTP服務器前面的防火牆來講,必須容許如下通信才能支持主動方式FTP:
1. 任何大於1024的端口到FTP服務器的21端口。(客戶端初始化的鏈接)
2. FTP服務器的21端口到大於1024的端口。 (服務器響應客戶端的控制端口)
3. FTP服務器的20端口到大於1024的端口。(服務器端初始化數據鏈接到客戶端的數據端口)
4. 大於1024端口到FTP服務器的20端口(客戶端發送ACK響應到服務器的數據端口)

(二)被動FTP

爲了解決服務器發起到客戶端的鏈接的問題,人們開發了一種不一樣的FTP鏈接方式。這就是所謂的被動方式,或者叫作PASV,當客戶端通知服務器它處於被動模式時才啓用。

在被動方式FTP中,控制鏈接和數據鏈接都由客戶端發起,這樣就能夠解決從服務器到客戶端的數據端口的入方向鏈接被防火牆過濾掉的問題。

當開啓一個FTP鏈接時,客戶端打開兩個任意的非特權本地端口(>1024和N+1)。第一個端口鏈接服務器的21端口,但與主動方式FTP不一樣的是,客戶端不會提交PORT命令並容許服務器來回連它的數據端口,而是提交PASV命令。這樣作的結果就是服務器會開啓一個任意的非特權端口(>1024),併發送PORT P命令給客戶端。而後客戶端發起從本地端口N+1到服務器的端口P的鏈接用來傳送數據。
 
對於服務器端的防火牆來講,必須容許下面的通信才能支持被動方式的FTP:
1. 任何大於1024的端口到服務器的21端口 (客戶端初始化的鏈接)
2. 服務器的21端口到任何大於1024的端口 (服務器響應客戶端的控制端口)
3. 客戶端的任何大於1024的端口到服務器的大於1024的端口 (客戶端初始化數據鏈接到服務器指定的任意端口)
4. 服務器的任何大於1024的端口到客戶端的大於1024的端口(服務器發送ACK響應到客戶端的數據端口)

(三)主動與被動FTP優缺點

主動FTP對FTP服務器端的管理有利,但對客戶端的管理不利。由於FTP服務器企圖與客戶端的高位隨機端口創建鏈接,而這個端口頗有可能被客戶端的防火牆阻塞掉。
 
被動FTP對FTP客戶端的管理有利,但對服務器端的管理不利。由於客戶端要與服務器端創建兩個鏈接,其中一個鏈接到一個高位隨機端口,而這個端口頗有可能被服務器端的防火牆阻塞掉。
 
==============================================================
 
FTP 數字代碼的意義
 
110 從新啓動標記應答。 120 服務在多久時間內ready。 125 數據鏈路埠開啓,準備傳送。 150 文件狀態正常,開啓數據鏈接端口。 200 命令執行成功。 202 命令執行失敗。 211 系統狀態或是系統求助響應。 212 目錄的狀態。 213 文件的狀態。 214 求助的訊息。 215 名稱系統類型。 220 新的聯機服務ready。 221 服務的控制鏈接埠關閉,能夠註銷。 225 數據連結開啓,但無傳輸動做。 226 關閉數據鏈接端口,請求的文件操做成功。 227 進入passive mode。 230 使用者登入。 250 請求的文件操做完成。 257 顯示目前的路徑名稱。 331 用戶名稱正確,須要密碼。 332 登入時須要帳號信息。 350 請求的操做須要進一部的命令。 421 沒法提供服務,關閉控制連結。 425 沒法開啓數據鏈路。 426 關閉聯機,終止傳輸。 450 請求的操做未執行。 451 命令終止:有本地的錯誤。 452 未執行命令:磁盤空間不足。 500 格式錯誤,沒法識別命令。 501 參數語法錯誤。 502 命令執行失敗。 503 命令順序錯誤。 504 命令所接的參數不正確。 530 未登入。 532 儲存文件須要帳戶登入。 550 未執行請求的操做。 551 請求的命令終止,類型未知。 552 請求的文件終止,儲存位溢出。 553 未執行請求的的命令,名稱不正確。
相關文章
相關標籤/搜索