Debian系統本身并不直接提供FTP服務,但用戶可以通過安裝軟件來支持FTP及其相關協議。在Debian上,FTP服務器軟件vsftpd主要支持以下文件傳輸模式:
- ASCII模式:用于傳輸文本文件。發送端的字符在發送前被轉換成ASCII碼格式之后進行傳輸,接收端收到之后再將其轉換成字符。
- 二進制模式:常用于發送圖片文件和程序文件。發送端在發送這些文件時無需轉換格式,即可傳輸。
此外,vsftpd還支持主動(Active)和被動(Passive)兩種傳輸模式,這兩種模式主要影響客戶端與服務器之間的數據連接方式。
主動模式(Port模式)的原理是:
- 客戶端從一個任意的端口N(N>1024)連接到FTP服務器的port 21命令端口,建立命令鏈路。
- 客戶端開始監聽端口N+1,并通過建立的命令鏈路發送FTP命令“port N+1”到FTP服務器。
- FTP服務器以數據端口(20)連接到客戶端指定的數據端口(N+1),客戶端與FTP服務器進行數據鏈路連接的建立成功。
- 隨后客戶端與服務器之間就可以通過數據鏈路進行數據的傳輸。
被動模式(Passive模式)的原理是:
- 客戶端從一個任意的端口N(N>1024)連接到FTP服務器的port 21命令端口,建立命令鏈路。
- 客戶端開始監聽端口N+1,客戶端通過建立的命令鏈路提交PASV命令。
- FTP服務器會開啟一個任意的端口(P >1024),并通過命令鏈路發送 PORT P 命令給客戶端。
- 客戶端發起從本地端口N+1到服務器的端口P的數據鏈路。
- 通過數據鏈路進行數據傳輸。
需要注意的是,FTP協議本身不安全,因為它在客戶端和服務器之間傳輸數據時不會加密。對于需要安全傳輸的場景,建議使用SFTP(SSH File Transfer Protocol)或FTPS(FTP Secure)。