1. 項目介紹
一、FTP協議
FTP協議是一種應用層協議,其采用服務端與客戶端進行通信的方式來共享文件。它作為網絡共享文件的傳輸協議,在網絡應用軟件中具有廣泛的應用。它的目標是提高文件的共享性和可靠高效地傳送數據。
在傳輸文件時,FTP 客戶先與服務器建立連接,然後向服務器發送命令。服務器收到命令後給予響應,並執行命令。
一般的 C/S 應用程序一般只建立一個 socket 連接,這個連接同時處理服務器端和客戶端的連接命令和數據傳輸。而FTP協議則將命令與數據分開傳送,這提高了效率。
FTP傳輸分為命令傳輸和數據傳輸,它們各使用一個獨立的socket通信。
二、命令端口和數據端口
FTP協議使用 2 個端口,分別為命令端口
【命令端口】
用於傳送命令的那個連接,該連接主要負責 FTP 命令的發送和接收返回的響應信息。依靠這個連接發送FTP命令即可完成諸如“登錄”、“改變目錄”、“刪除文件”等操作。
每一個 FTP 命令(命令都是字符串)發送之後,FTP 服務器都會返回一個字符串,其中包括一個響應碼(用於判斷命令是否成功執行)和一些說明信息。
【數據端口】
用於數據傳輸的那個連接,該連接主要負責上傳/下載文件、顯示目錄列表。
三、主動模式和被動模式(建立文件傳輸連接的兩種方式)
【主動模式(PORT)】
客戶端隨機打開一個端口N(大於1024)作為己方的命令端口
服務器需從它自己的數據端口(20)主動連接到客戶端指定的數據端口(N+1),從而進行數據的傳輸。
在這種模式下,文件傳輸連接由服務器發起。對於客戶端的防火墻來說,這是從外部到內部的連接,可能會將其過濾。
【被動模式(PASS)】
當開啟一個 FTP 連接時,客戶端打開兩個端口N(大於1024)和N+1。端口N連接服務器的命令端口(21),然後發出“PASV”命令。
服務器收到“PASV”命令後會打開一個端口P(大於1024),返回一個包含IP地址及端口號(特殊格式)
客戶端收到回復後,將取得服務器用於數據傳輸的端口P,然後通過端口N+1主動連接到服務器的端口P,從而進行數據的傳輸。
在這種模式下,文件傳輸連接由客戶端發起。因此客戶端的防火墻不會將其過濾。
【基於被動模式的文件傳輸】
服務端接收到客戶端的命令後就進行解析。如果命令是上傳或下載文件,則服務端打開一個新的端口並監聽,同時把自己監聽的IP地址和端口通過命令連接返回給客戶端。客戶端接收到後便主動發起連接,建立起文件傳輸連接,從而進行數據的傳輸。
【兩種模式下的IP地址和端口的特殊格式】
舉例:IP地址:192.168.1.120,端口:4500 ===》192,168,1,120,17,148
解釋:前4個字段表示IP地址,即192.168.1.120;後2個字段表示端口號,即17 × 256 + 148 = 4500
四、常用的FTP命令
類別 | 命令 | 說明 |
登錄 | USER 賬號\r\n | 指定登錄賬號 |
PASS 密碼\r\n | 指定登錄密碼 | |
QUIT\r\n | 關閉與服務器的連接 | |
建立文件傳輸連接 | PASV\r\n |
被動模式,讓服務器在數據端口監聽 服務端會回復一個IP地址和端口,然後客戶再發起連接 |
PORT h1,h2,h3,h4,p1,p2\r\n |
主動模式,告訴服務器客戶端監聽的數據端口號 讓服務器采用主動連接客戶端 |
|
文件傳輸 | RETR 文件名\r\n | 下載文件 |
STOR 文件名\r\n | 上傳文件 | |
目錄操作 | CWD 目錄名\r\n | 改變當前目錄到指定目錄 |
五、FTP響應碼
FTP響應碼用三位數字編碼表示:
第一個數字給出了命令狀態的一般性指示,如2表示服務器已經正確處理消息,5表示信息永久錯誤等。
第二個數字是響應類型的分類,如2表示連接狀態,3表示用戶認證等。
第三個數字提供了更加詳細的信息。
FTP響應碼 | 含義 |
150 | 文件狀態良好,打開數據連接 |
200 | 命令成功 |
212 | 目錄狀態 |
213 | 文件狀態 |
500 | 格式錯誤,命令不可識別 |
125 | 連接打開,準備傳送 |
221 | 服務關閉控制連接,可以退出 |
202 | 命令未實現 |
225 | 數據連接打開,無傳輸正在進行 |
226 | 數據連接關閉,請求的文件操作成功 |
227 | 進入被動模式 |
230 | 用戶登錄 |
331 | 用戶名正確,需要口令 |
332 | 登陸時需要賬戶信息 |
425 | 不能打開數據連接 |
426 | 關閉連接,中止數據傳輸 |
450 | 請求的文件操作未執行 |
250 | 請求的文件操作完成 |
530 | 賬號或密碼錯誤 |
550 | 未執行請求的操作 |
FTP缺點:明文登錄
匿名登陸:
1、為了實現文件在互聯網上傳輸的開放性,服務端管理員可以建立一個特殊的用戶ID,
提供給互聯網上的用戶下載和上傳文件,這就是匿名用戶,它不需要密碼.
2、常用的匿名登錄名稱:anonymous
【FTP響應碼】
第一個數字的含義如下:
1 表示服務器正確接收信息,還未處理。
2 表示服務器已經正確處理信息。
3 表示服務器正確接收信息,正在處理。
4 表示信息暫時錯誤。
5 表示信息永久錯誤。
第二個數字的含義如下:
0 表示語法。
1 表示系統狀態和信息。
2 表示連接狀態。
3 表示與用戶認證有關的信息。
4 表示未定義。
5 表示與文件系統有關的信息。
1. 項目介紹