FTP協議
1. 檔案傳輸
檔案傳輸服務是網路互聯環境所必需的一種服務,當前網路中檔案傳輸最主要的傳輸方式是使用FTP協議。
FTP,全稱File Transfer Protocol,中文名為檔案傳輸通訊協定,它可以在網路中傳輸電子文檔、圖片、聲音、影視、程式及程式等多種類型的檔案。如果使用者需要將檔案從自己的電腦上發送到另一台電腦上,可使用FTP上傳(upload)或(put)操作,而更多種的情況是使用者使用FTP下載(download)或擷取(get)操作從FTP伺服器上下載檔案。
2. FTP工作原理
一個完整的FTP檔案傳輸需要建立兩種類型的串連,一種為檔案傳輸下命令,稱為控制串連,另一種實現真正的檔案傳輸,稱為資料連線。
1) 控制串連
用戶端希望與FTP伺服器建立上傳下載的資料轉送時,它首先向伺服器的TCP 21連接埠發起一個建立串連的請求,FTP伺服器接受來自用戶端的請求,完成串連的建立過程,這樣的串連就稱為FTP控制串連。
2) 資料連線
FTP控制串連建立之後,即可開始傳輸檔案,傳輸檔案的串連稱為FTP資料連線。FTP資料連線就是FTP傳輸資料的過程,它有兩種傳輸模式:主動傳輸模式(PORT)和被動傳輸模式(PASSIVE,簡稱PASV)。主動傳輸模式下,FTP伺服器使用20連接埠與用戶端的暫時連接埠進行串連,並傳輸資料,用戶端只是處於接收狀態。被動傳輸模式下,FTP伺服器開啟一個暫態連接埠等待用戶端對其進行串連,並傳輸資料,伺服器並不參與資料的主動傳輸,只是被動接受。
FTP兩種工作模式:主動模式(Active FTP)和被動模式(Passive 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可以良好的工作。
(
|
? |
區別在於:
主動模式是client bind a port,然後server從server的20port把資料寫道client開的port上來。
被動模式是client要求server開一個port,然後client連那個port把資料取回來。
簡明一點就是:
主動模式是server把資料寫道client。
被動模式是client去server端把資料去回來. |
)
3. FTP命令
FTP常見的命令如表1所示。
|
命令 |
描述 |
|
USER |
為使用者驗證提供使用者名稱 |
|
PASS |
為使用者驗證提供密碼 |
|
PWD |
輸出FTP伺服器的當前工作目錄 |
|
TYPE |
設定傳輸的檔案類型 |
|
SYST |
擷取FTP伺服器的作業系統 |
|
LIST |
擷取FTP伺服器上目前的目錄的檔案清單 |
|
PORT |
指定使用主動模式進行資料轉送 |
|
PASV |
指定使用被動模式進行資料轉送 |
|
HELP |
從FTP伺服器上擷取協助檔案 |
|
STOR |
從用戶端上傳指定的檔案到FTP伺服器 |
|
RETR |
從FTP伺服器下載指定的檔案到用戶端 |
|
DELE |
刪除FTP伺服器上指定的檔案 |
|
MKD |
在FTP伺服器上建立目錄 |
|
RMD
|
刪除FTP伺服器上的指定目錄 |
|
QUIT
|
退出關閉FTP串連 |
(表1 FTP常見命令)
4. FTP應答
從上面的分析及中我們可以知道,對用戶端發出的所有命令,FTP伺服器都會對其做出應答,
ftp應答碼及其意義
110 重新啟動標記應答。在這種情況下文本是確定的,它必須是:MARK yyyy=mmmm,其中yyyy是使用者進程資料流標記,mmmm是伺服器標記。
120 服務在nnn分鐘內準備好
125 資料連線已開啟,準備傳送
150 檔案狀態良好,開啟資料連線
200 命令成功
202 命令未實現
211 系統狀態或系統協助響應
212 目錄狀態
213 檔案狀態
214 協助資訊,資訊僅對人類使用者有用
215 名字系統類別型
220 對新使用者服務準備好
221 服務關閉控制串連,可以退出登入
225 資料連線開啟,無傳輸進行中
226 關閉資料連線,請求的檔案x作成功
227 進入被動模式
230 使用者登入
250 請求的檔案x作完成
257 建立"PATHNAME"
331 使用者名稱正確,需要口令
332 登入時需要帳戶資訊
350 請求的檔案x作需要進一步命令
421 不能提供服務,關閉控制串連
425 不能開啟資料連線
426 關閉串連,中止傳輸
450 請求的檔案x作未執行
451 中止請求的x作:有本地錯誤
452 未執行請求的x作:系統儲存空間不足
500 格式錯誤,命令不可識別
501 參數語法錯誤
502 命令未實現
503 命令順序錯誤
504 此參數下的命令功能未實現
530 未登入
532 隱藏檔需要帳戶資訊
550 未執行請求的x作
551 請求x作中止:頁類型未知
552 請求的檔案x作中止,儲存分配溢出
553 未執行請求的x作:檔案名稱不合法