Apache HTTP Server 版本 2.4
可使用的語言: en
檔案傳輸協定 (FTP) 是用於透過 TCP/IP 網路傳輸檔案和紀錄的經典標準。它是由 Jon Postel 和 Joyce Reynolds 在 RFC 959 中定義的,該協定在 1985 年釋出。這表示 FTP 早於通常與 Apache 伺服器關聯的 HTTP 協定將近五十年。mod_ftp
模組為 FTP 提供支援給 Apache 伺服器,並包含多項針對原始協定的更新項目。特別的是,mod_ftp
執行傳輸層安全性 (TLS) 上的 FTP,如 RFC 4217 所述。
在本手冊頁面上,提供了 FTP 協定的簡短技術概述,後續則討論 mod_ftp
的 FTP 執行方式。
檔案傳輸協定 (FTP) 設計用於促進在 TCP/IP 網路上主機之間雙向傳輸檔案和紀錄。與 HTTP 不同的是,FTP 協定具有狀態:在 FTP 會話期間(通常涵蓋多個資料傳輸),用戶端會建立一個控制連線。
FTP 使用一個獨立的 TCP 連線來傳輸資料。命令是透過控制連線傳送和確認的,一個連往廣為人知的埠 21 的 TCP 連線。如果使用者傳送一個命令,而該命令需要比單行回應程式碼更詳盡的回應,便會在用戶端與伺服器之間建立一個資料連線。回應資料(一個檔案的內容或一個目錄清單)會透過該資料連線傳送。
在歷史上,資料連線是從伺服器建立回客戶端的。客戶端會繫結至一個任意埠,然後使用 PORT 指令將其 IP 位址及埠號傳輸給伺服器。接著,伺服器會建立一個至客戶端主機上的埠的資料連線,此時客戶端會發出資料傳輸指令。這種做法稱為 主動式 FTP(因為是由伺服器來建立資料連線)。不幸的是,由於經常封鎖傳入連線,因此主動式 FTP 無法順利搭配防火牆和網路位址轉換 (NAT) 使用。在 NAT 的情況下,客戶端只會指示伺服器連線到其內部,不可路由的 IP 位址。有些防火牆和 NAT 路由器支援 FTP 通訊協定,但此支援並非普遍性。在支援 FTP 的情況下,這些裝置可以改寫 PORT 指令,並為 FTP 資料連線建立特殊存取規則。
由於這些限制,研發出另一種方法,用於反轉資料連線的方向。這被稱為 被動式 FTP。在開始傳輸資料前,客戶端會發出 PASV 指令。伺服器會繫結至一個任意埠號,並將其 IP 位址和埠號傳回客戶端。接著,客戶端會建立至伺服器上此位址和埠的資料連線,並發出資料傳輸指令。被動式 FTP 比主動式 FTP 更友善於防火牆,原因在於客戶端端的防火牆通常對於傳出連線比傳入連線寬容。
雖然 FTP 可支援未驗證的階段,但實際上所有階段都是驗證的。一般來說,FTP 伺服器會根據它們運作的伺服器的使用者資料庫進行驗證。為便於一般大眾下載,FTP 伺服器通常會支援一個特殊使用者名稱(依慣例為 "anonymous" 或 "ftp")以提供唯讀存取權。系統會(但通常不會)要求使用者提供其電子郵件位址,以回應 密碼
提示。
可使用的語言: en