檔案傳輸協議（，縮寫 FTP）是在計算機網路的客戶端和伺服器間傳輸檔案的應用層協議。傳送檔案（file transfer）和存取檔案（file access）之間的區別在於：前者由 FTP 提供，後者由 NFS 等應用系統提供。由 RFC 959 規範。 FTP 是 8 位的客戶端－伺服器協議，能操作任何型別的檔案而不需要後續處理，就像 MIME 或 Unicode 一樣，但 FTP 有極高的延時，意味從開始請求到第一次接收資料間的時間非常長；並且必須不時執行一些冗長的登入程序。 歷史 Abhay Bhushan 編寫原始規範，並於 1971 年 4 月 16 日作為 RFC 114 釋出。直到 1980 年，FTP 才在 TCPIP 的前身 NCP 執行。該協議先被 TCPIP 版本，RFC 765（1980 年 6 月）取代，後來又被 RFC 959（1985 年 10 月）所取代，這也是當前規範。RFC 959 提出了若干標準修改，例如 RFC 1579（1994 年 2 月）使 FTP 能夠穿越 NAT 與防火牆（被動模式），RFC 2228（1997 年 6 月）提出安全擴充套件，RFC 2428（1998 年 9 月）增加了對 IPv6 的支援，並定義了一種新型的被動模式。 概述 FTP 服務一般執行在 20 和 21 兩個埠。埠 20 用於在客戶端和伺服器之間傳輸資料流，而埠 21 用於傳輸控制流，並且是命令通向 ftp 伺服器的進口。當資料透過資料流傳輸時，控制流處於空閒狀態。而當控制流空閒很長時間後，客戶端的防火牆會將其會話置為超時，這樣當大量資料透過防火牆時，會產生一些問題。此時，雖然檔案可以成功的傳輸，但因為控制會話，會被防火牆斷開；傳輸會產生一些錯誤。 FTP 雖然可以被終端使用者直接使用，但是它是設計成被 FTP 客戶端程式所控制。 執行 FTP 服務的許多站點都開放匿名服務，在這種設定下，使用者不需要帳號就可以登入伺服器，預設情況下，匿名使用者的使用者名稱是：「anonymous」。這個帳號不需要密碼，雖然通常要求輸入使用者的郵件地址作為認證密碼，但這 只 是一些細節或者此郵件地址根本不被確定，而是依賴於 FTP 伺服器的配置情況通常需要再做修改防火牆的部分某個老師教了。 FTP 實現的目標 促進檔案的共享（計算機程式或資料） 鼓勵間接或者隱式的使用遠端計算機 向用戶遮蔽不同主機中各種檔案儲存系統的細節 可靠和高效的傳輸資料 主動和被動模式 FTP 有兩種使用模式：主動和被動。主動模式要求客戶端和伺服器端同時開啟並且監聽一個埠以建立連線。在這種情況下，客戶端由於安裝了防火牆會產生一些問題。所以，創立了被動模式。被動模式只要求伺服器端產生一個監聽相應埠的程序，這樣就可以繞過客戶端安裝了防火牆的問題。 一個主動模式的 FTP 連線建立要遵循以下步驟： 客戶端開啟一個隨機的埠（埠號大於 1024，在這裡，我們稱它為 x），同時一個 FTP 程序連線至伺服器的 21 號命令埠。此時，該 tcp 連線的來源地埠為客戶端指定的隨機埠 x，目的地埠（遠端埠）為伺服器上的 21 號埠。 客戶端開始監聽埠（x1），同時向伺服器傳送一個埠命令（透過伺服器的 21 號命令埠），此命令告訴伺服器客戶端正在監聽的埠號並且已準備好從此埠接收資料。這個埠就是我們所知的資料埠。 伺服器開啟 20 號源埠並且建立和客戶端資料埠的連線。此時，來源地的埠為 20，遠端資料 目的地 埠為（x1）。 客戶端透過本地的資料埠建立一個和伺服器 20 號埠的連線，然後向伺服器傳送一個應答，告訴伺服器它已經建立好了一個連線。 軟體支援 瀏覽器 大部分常見的網頁瀏覽器都可以檢索 FTP 伺服器上託管的檔案，儘管它們並不支援擴充套件協議，如 FTPS。當瀏覽器訪問 FTP 格式的 URL 時，將以 Web 檔案目錄顯示遠端伺服器上的可訪問內容。使用類似客戶端可獲得 FTP 擴充套件協議的完整支援。 Chrome 和 Firefox 等主流瀏覽器都將計劃棄用對 FTP 的支援，2019 年推出的 Chrome 82 已停止對 FTP 支援，在 2020 年因 COVID19 疫情增加的遠距辦公需求而短暫恢復 FTP，但於 2021 年 10 月推出的 Chrome95 完全移除 FTP 相關程式碼。而 Firefox 原預定於版本 77 中停止支援 FTP，最終在 2021 年 7 月發行的 90 版正式停止支援 FTP 協定。微軟的 Edge 瀏覽器也在 2020 年起停止支援 FTP，Internet Explorer 11 仍保留 FTP 使用者端，直到 2022 年 6 月 15 日終止支援。 語法 FTP URL 格式已在指定，格式為：ftpuser password host porturlpath（方括號內為可選引數）。 有關指定使用者名稱和密碼的更多詳細資訊，可以在瀏覽器的文件中找到（例如 Firefox 和 Internet Explorer Written for IE versions 6 and earlier Might work with newer versions）。預設情況下，大多數 Web 瀏覽器使用被動（PASV）模式，該模式更容易遍歷終端防火牆。 下載管理器 大部分常見的下載管理器都可以收取 FTP 伺服器上託管的檔案，其中一些還提供介面來檢索 FTP 伺服器上託管的檔案。和 Internet Download Accelerator 既能從 FTP 伺服器下載檔案，又能檢視 FTP 伺服器上的檔案。 其他 LibreOffice 支援開啟 FTP 伺服器上的檔案，但從 74 版本起，這一功能被標記為過時，開發者打算在將來的版本中將其移除。 安全性 FTP 不是一項安全的協議，並且具有許多安全漏洞。1999 年 5 月釋出的中列出了以下幾個主要的漏洞： 暴力破解 資料包捕獲 埠竊取（猜測下一個開放埠並篡奪合法連線） 欺騙攻擊 使用者名稱列舉 透過 FTP 傳輸的流量不會被加密，所有傳輸透過明文進行的。任何能夠在網路上執行資料包捕獲（ 嗅探 ）的人都可以讀取使用者名稱、密碼、命令內容和資料。此問題在加密機制（如 TLS 或 SSL）產生之前的許多 Internet 協議規範（如 SMTP 、Telnet 、POP 和 IMAP）中較為普遍。 此問題的常見解決方案包括： 使用協議的安全版本，例如 FTPS 而不是 FTP，TelnetS 而不是 Telnet。 使用可以處理作業的不同的，更安全的協議，例如 SSH 檔案傳輸協議或安全複製協議 。 使用安全隧道（如 Secure Shell 或虛擬私人網路 ）。 FTP 命令 可以被傳送到 FTP 伺服器的 FTP 命令列表，包含由 IETF 在 RFC 959 中標準化的所有命令。需要注意的是，大多數命令列 FTP 使用者端都給使用者提供了額外的命令集。例如，GET 是一個常見的用來下載檔案的使用者命令，用來替代原始的 RETR 命令。 FTP 伺服器返回碼 包含由 IETF 在 RFC 959 中標準化的所有伺服器返回碼。回覆程式碼是一個三位數值，第一個數字用於表示三種可能的結果之一 成功、失敗、表示錯誤或不完整的回覆。 衍生品 FTPS FTPS 是 FTP 標準的擴充套件，添加了安全套接層（SSL）以及其繼任者傳輸層安全性協定（TLS）的支援。 SSH 檔案傳輸協議 SSH 檔案傳輸協議（縮寫：SFTP）可用於傳輸檔案並具有類似的使用者命令集，但使用 Secure Shell 協議（SSH）傳輸檔案。與 FTP 不同，它對命令和資料進行加密，防止密碼和敏感資訊透過網路公開傳輸。span 它無法與 FTP 相容。 小型檔案傳輸協議 小型檔案傳輸協議（Trivial File Transfer Protocol TFTP），是一種於 1981 年在 RFC 783 中定義的簡化的檔案傳輸協議（FTP）。 簡單檔案傳輸協議 簡單檔案傳輸協議（Simple File Transfer Protocol）由定義，其複雜程度介於 TFTP 和 FTP 之間。它從未在網際網路上被廣泛接受。它透過埠 115 執行，支援三種類型的資料傳輸： ASCII 、 二進位制和連續。該協議還支援使用使用者名稱和密碼登入、資料夾和檔案管理（包括重新命名、刪除、上傳、下載）。 參考文獻 引用 來源 《RFC 0959 檔案傳輸協議》 J Postel J Reynolds 198510（格式：文字，147316 位元組 httpwwwietforgrfcrfc959txt ） 最早的 RFC 114 和之後的 RFC 765 已被廢除。 參見 小檔案傳輸協議（TFTP） SSH 檔案傳輸協議（SSH file transfer protocol） 安全 FTP（Secure FTP） FTPS 簡單檔案傳輸協議（Simple File Transfer Protocol） WS FTP（FTP 工具） FTP 客戶端比較 FTP 伺服器列表 外部連結 Category 應用層協議 Category 網際網路歷史 Category 網際網路標準 Category 網路檔案傳輸協議 CategoryUnix 網路相關軟體 Category 檔案分享