FTP簡介
文件傳輸協議FTP(File Transfer Protocol)是TCP/IP協議組中的協議之一。在開發網站的時候,您可以使用FTP客戶端將網站程序或者網頁通過FTP協議上傳到Web服務器。
工作方式如下所示:
- 主動方式(PORT),工作流程如下:
FTP客戶端向服務器的FTP端口(默認是21)發送連接請求。服務器接受連接請求后,建立一條命令鏈路。需要傳送數據時,客戶端會在命令鏈路上向服務器發送PORT命令,命令中包含了客戶端接收數據的端口。服務器收到命令后,會通過自己的20端口向PORT命令中的指定端口發送連接請求,建立一條數據鏈路來傳送數據。 - 被動方式(PASV),工作流程如下:
FTP客戶端向服務器的FTP端口(默認是21)發送連接請求。服務器接受連接請求后,建立一條命令鏈路。需要傳送數據時,客戶端會在命令鏈路上向服務器發送PASV命令。服務器收到命令后,隨機開啟一個端口並向客戶端發送端口信息。客戶端向服務器的端口發送連接請求,建立一條數據鏈路來傳送數據。
PORT(主動模式)
PORT中文稱為主動模式,工作的原理: FTP客戶端連接到FTP服務器的21端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,客戶端隨機開放一個端口(1024以上),發送 PORT命令到FTP服務器,告訴服務器客戶端采用主動模式並開放端口;FTP服務器收到PORT主動模式命令和端口號后,通過服務器的20端口和客戶端開放的端口連接,發送數據,原理如下圖:
PASV(被動模式)
PASV是Passive的縮寫,中文成為被動模式,工作原理:FTP客戶端連接到FTP服務器的21端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,發送PASV命令到FTP服務器, 服務器在本地隨機開放一個端口(1024以上),然后把開放的端口告訴客戶端, 客戶端再連接到服務器開放的端口進行數據傳輸,原理如下圖:
主動模式和被動模式的不同簡單概述為: 主動模式傳送數據時是“服務器”連接到“客戶端”的端口;被動模式傳送數據是“客戶端”連接到“服務器”的端口。
FTP客戶端注意事項
根據FTP客戶端是否有公網IP、是否安裝防火牆以及連接的雲虛擬主機的搭建方式,您需要注意以下事項:
- 如果您的FTP客戶端沒有公網IP,只能使用PASV方式才可以連接雲虛擬主機。
- 如果您的FTP客戶端有公網IP,且安裝了防火牆。當使用PORT方式連接雲虛擬主機時,必須在防火牆上打開1024以上的高端端口,保證建立數據鏈路時,雲虛擬主機向FTP客戶端發送的連接請求不會被防火牆攔截。
FTP支持以下三種認證模式:
- 匿名用戶模式:任何人無需密碼驗證就可以直接登錄到FTP服務器。這種模式最不安全,一般只用來保存不重要的公開文件,不推薦在生產環境中使用。
- 本地用戶模式:通過Linux系統本地賬號進行驗證的模式,相較於匿名用戶模式更安全。
- 虛擬用戶模式:FTP服務器的專有用戶。虛擬用戶只能訪問Linux系統為其提供的FTP服務,而不能訪問Linux系統的其它資源,進一步增強了FTP服務器的安全性。