FTP 簡介

FTP 簡介


文件傳輸協議(英文:File Transfer Protocol,縮寫:FTP)是用於在網絡上進行文件傳輸的一套標準協議,使用客戶/服務器模式。它屬於網絡傳輸協議的應用層。文件傳送(file transfer)和文件存取(file access)之間的區別在於:前者由FTP提供,後者由如NFS等應用系統提供。

FTP 簡介


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 簡介


FTP實現的目標

促進文件的共享(計算機程序或數據)

鼓勵間接或者隱式的使用遠程計算機

向用戶屏蔽不同主機中各種文件存儲系統(File system)的細節

可靠和高效的傳輸數據

缺點

密碼和文件內容都使用明文傳輸,可能發生竊聽。

因為必須開放一個隨機的端口以建立連接,當防火牆存在時,客戶端很難過濾處於主動模式下的FTP流量。這個問題,通過使用被動模式的FTP,得到了很大解決。

服務器可能會被告知連接一個第三方計算機的保留端口。

此方式在需要傳輸檔案數量很多的小檔案時,效能不好

主動和被動模式

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://:@。大部分網頁瀏覽器要求使用被動FTP模式,然而並不是所有的FTP服務器都支持被動模式。


分享到:


相關文章: