本頁使用了標題或全文手工轉換

檔案傳輸協定

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Gnome-fs-ftp.png

檔案傳輸協定英文File Transfer Protocol,縮寫FTP)是用於在網絡上進行檔案傳輸的一套標準協定,使用客戶/伺服器模式。它屬於網絡傳輸協定應用層。檔案傳送(file transfer)和檔案存取(file access)之間的區別在於:前者由FTP提供,後者由如NFS等應用系統提供[1]。參考文獻RFC959定義了此規範。

FTP是一個8位元的用戶端-伺服器協定,能操作任何類型的檔案而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有着極高的延時,這意味着,從開始請求到第一次接收需求數據之間的時間,會非常長;並且不時的必須執行一些冗長的登入行程。

FTP server歷史[編輯]

檔案傳輸協定的原始規範於1971年4月16日發佈為RFC  114。直到1980年,FTP執行在TCP/ IP的前身NCP上。該協定後來被TCP / IP版本,RFC 765(1980年6月)和RFC 959(1985年10月)(當前規範)所取代。RFC 959提出了若干標準修改,例如RFC 1579(1994年2月)啟用防火牆FTP(被動模式),RFC 2228(1997年6月)提出安全擴充功能,RFC 2428(1998年9月)增加了對IPv6的支援,並定義了一種新型的被動模式。      

概述[編輯]

FTP服務一般執行在20和21兩個。埠20用於在用戶端和伺服器之間傳輸數據流,而埠21用於傳輸控制流,並且是命令通向ftp伺服器的進口。當數據通過數據流傳輸時,控制流處於空閒狀態。而當控制流空閒很長時間後,用戶端的防火牆會將其對談置為超時,這樣當大量數據通過防火牆時,會產生一些問題。此時,雖然檔案可以成功的傳輸,但因為控制對談,會被防火牆斷開;傳輸會產生一些錯誤。

FTP雖然可以被終端用戶直接使用,但是它是設計成被FTP用戶端程式所控制。

執行FTP服務的許多站點都開放匿名服務,在這種設定下,用戶不需要帳號就可以登入伺服器,預設情況下,匿名用戶的用戶名是:「anonymous」。這個帳號不需要密碼,雖然通常要求輸入用戶的郵件地址作為認證密碼,但這只是一些細節或者此郵件地址根本不被確定,而是依賴於FTP伺服器的配置情況。

可以被傳送到FTP伺服器FTP命令列表,包含由IETF在RFC 959中標準化的所有命令。需要注意的是,大多數命令列FTP用戶端都給用戶提供了額外的命令集。例如,GET是一個常見的用來下載檔案的用戶命令,用來替代原始的RETR命令。

FTP實現的目標[編輯]

  1. 促進檔案的共享(電腦程式或數據)
  2. 鼓勵間接或者隱式的使用遠端電腦
  3. 向用戶屏蔽不同主機中各種檔案儲存系統(File system)的細節
  4. 可靠和高效的傳輸數據

缺點[編輯]

  1. 密碼和檔案內容都使用明文傳輸,可能發生竊聽。
  2. 因為必須開放一個隨機的埠以建立連線,當防火牆存在時,用戶端很難過濾處於主動模式下的FTP流量。這個問題,通過使用被動模式的FTP,得到了很大解決。
  3. 伺服器可能會被告知連線一個第三方電腦的保留埠。
  4. 此方式在需要傳輸檔案數量很多的小檔案時,效能不好

主動和被動模式[編輯]

FTP有兩種使用模式:主動和被動。主動模式要求用戶端和伺服器端同時開啟並且監聽一個埠以建立連線。在這種情況下,用戶端由於安裝了防火牆會產生一些問題。所以,創立了被動模式。被動模式只要求伺服器端產生一個監聽相應埠的行程,這樣就可以繞過用戶端安裝了防火牆的問題。

一個主動模式的FTP連線建立要遵循以下步驟:

  1. 用戶端開啟一個隨機的埠(埠號大於1024,在這裏,我們稱它為x),同時一個FTP行程連線至伺服器的21號命令埠。此時,該tcp連線的來源地埠為用戶端指定的隨機埠x,目的地埠(遠端埠)為伺服器上的21號埠。
  2. 用戶端開始監聽埠(x+1),同時向伺服器傳送一個埠命令(通過伺服器的21號命令埠),此命令告訴伺服器用戶端正在監聽的埠號並且已準備好從此埠接收數據。這個埠就是我們所知的數據埠。
  3. 伺服器開啟20號源埠並且建立和用戶端數據埠的連線。此時,來源地的埠為20,遠端數據(目的地)埠為(x+1)。
  4. 用戶端通過原生的數據埠建立一個和伺服器20號埠的連線,然後向伺服器傳送一個應答,告訴伺服器它已經建立好了一個連線。

FTP和網頁瀏覽器[編輯]

大多數最新的網頁瀏覽器和檔案管理器都能和FTP伺服器建立連線。這使得在FTP上通過一個介面就可以操控遠端檔案,如同操控本地檔案一樣。這個功能通過給定一個FTP的URL實現,形如ftp://<伺服器地址>(例如,ftp://ftp.gimp.org )。是否提供密碼是可選擇的,如果有密碼,則形如ftp://<login>:<password>@<ftpserveraddress>。大部分網頁瀏覽器要求使用被動FTP模式,然而並不是所有的FTP伺服器都支援被動模式。

參考文獻[編輯]

  1. ^ W.Richard Stevevs 著, 范建華 等譯. TCP/IP詳解 卷一:協議. 機械工業. : 316. ISBN 978-7-111-07566-0. 
  • RFC 0959檔案傳輸協定。J.Postel, J.Reynolds. 1985.10(格式:文字,147316位元組。http://www.ietf.org/rfc/rfc959.txt )。最早的RFC 114和之後的RFC 765已被廢除。

參見[編輯]

外部連結[編輯]