FTP(檔案傳輸協定)

FTP(檔案傳輸協定)

本詞條是多義詞,共3個義項
更多義項 ▼ 收起列表 ▲

檔案傳輸協定(File Transfer Protocol,FTP)是用於在網路上進行檔案傳輸的一套標準協定,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即套用層, 使用 TCP 傳輸而不是 UDP, 客戶在和伺服器建立連線前要經過一個“三次握手”的過程, 保證客戶與伺服器之間的連線是可靠的, 而且是面向連線, 為數據傳輸提供可靠保證。

FTP允許用戶以檔案操作的方式(如檔案的增、刪、改、查、傳送等)與另一主機相互通信。然而, 用戶並不真正登錄到自己想要存取的計算機上面而成為完全用戶, 可用FTP程式訪問遠程資源, 實現用戶往返傳輸檔案、目錄管理以及訪問電子郵件等等, 即使雙方計算機可能配有不同的作業系統和檔案存儲方式。

基本介紹

  • 中文名:檔案傳輸協定
  • 外文名:ftp
  • 默認連線埠:21
  • 用途:進行檔案傳輸
  • 傳輸檔案類型:ASCII檔案和二進制檔案
  • 工作模式:客戶機/伺服器模式
簡介,工作原理,用戶分類,Real賬戶,Guest用戶,Anonymous用戶,傳輸方式,支持模式,命令參數,簡介,用途,語法,描述,處理規則,匿名FTP,

簡介

FTP 是網際網路網路上歷史最悠久的網路工具,從 1971 年由 A KBHUSHAN 提出第一個 FTP 的RFC(RFC114)至今近半個世紀來,FTP 憑藉其獨特的優勢一直都是網際網路中最重要、最廣泛的服務之一。
FTP 的目標是提高檔案的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。它能操作任何類型的檔案而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數據之間的時間,會非常長;並且不時的必須執行一些冗長的登錄進程。

工作原理

FTP 採用 Internet 標準檔案傳輸協定 FTP 的用戶界面, 向用戶提供了一組用來管理計算機之間檔案傳輸的應用程式。
FTP
圖1 FTP 的基本模型
FTP 是基於客戶———伺服器(C/S)模型而設計的,在客戶端與 FTP 伺服器之間建立兩個連線。
開發任何基於 FTP 的客戶端軟體都必須遵循 FTP 的工作原理,FTP 的獨特的優勢同時也是與其它客戶伺服器程式最大的不同點就在於它在兩台通信的主機之間使用了兩條 TCP 連線,一條是數據連線,用於數據傳送;另一條是控制連線,用於傳送控制信息(命令和回響),這種將命令和數據分開傳送的思想大大提高了 FTP 的效率,而其它客戶伺服器應用程式一般只有一條 TCP 連線。圖 1 給出了 FTP 的基本模型。客戶有三個構件:用戶接口、客戶控制進程和客戶數據傳送進程。伺服器有兩個構件:伺服器控制進程和伺服器數據傳送進程。在整個互動的 FTP 會話中,控制連線始終是處於連線狀態的,數據連線則在每一次檔案傳送時先打開後關閉。

用戶分類

Real賬戶

這類用戶是指在FTP服務上擁有賬號。當這類用戶登錄FTP伺服器的時候,其默認的主目錄就是其賬號命名的目錄。但是,其還可以變更到其他目錄中去。如系統的主目錄等等。

Guest用戶

在FTP伺服器中,我們往往會給不同的部門或者某個特定的用戶設定一個賬戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。伺服器通過這種方式來保障FTP服務上其他檔案的安全性。這類賬戶,在Vsftpd軟體中就叫做Guest用戶。擁有這類用戶的賬戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的檔案。

Anonymous用戶

這也是我們通常所說的匿名訪問。這類用戶是指在FTP伺服器中沒有指定賬戶,但是其仍然可以進行匿名訪問某些公開的資源。
在組建FTP伺服器的時候,我們就需要根據用戶的類型,對用戶進行歸類。默認情況下,Vsftpd伺服器會把建立的所有賬戶都歸屬為Real用戶。但是,這往往不符合企業安全的需要。因為這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就給其他用戶所在的空間帶來一定的安全隱患。所以,企業要根據實際情況,修改用戶所在的類別。

傳輸方式

FTP的傳輸有兩種方式:ASCII、二進制。
ASCII傳輸方式
假定用戶正在拷貝的檔案包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當檔案傳輸時ftp通常會自動地調整檔案的內容以便於把檔案解釋成另外那台計算機存儲文本檔案的格式。
但是常常有這樣的情況,用戶正在傳輸的檔案包含的不是文本檔案,它們可能是程式,資料庫,字處理檔案或者壓縮檔案。在拷貝任何非文本檔案之前,用binary 命令告訴ftp逐字拷貝。
二進制傳輸模式
在二進制傳輸中,保存檔案的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的檔案是沒意義的。例如,macintosh以二進制方式傳送執行檔到Windows系統,在對方系統上,此檔案不能執行。
如在ASCII方式下傳輸二進制檔案,即使不需要也仍會轉譯。這會損壞數據。(ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果傳輸二進制檔案,所有的位都是重要的。)

支持模式

FTP客戶端發起FTP會話,與FTP伺服器建立相應的連線。FTP會話期間要建立控制信息進程與數據進程兩個連線。控制連線不能完成傳輸數據的任務,只能用來傳送FTP執行的內部命令以及命令的回響等控制信息;數據連線是伺服器與客戶端之間傳輸檔案的連線,是全雙工的,允許同時進行雙向數據傳輸。當數據傳輸完成後,數據連線會撤消,再回到FTP會話狀態,直到控制連線被撤消,並退出會話為止。
FTP支持兩種模式:Standard (PORT方式,主動方式),Passive (PASV,被動方式)。
Port模式
FTP 客戶端首先和伺服器的TCP 21連線埠建立連線,用來傳送命令,客戶端需要接收數據的時候在這個通道上傳送PORT命令。PORT命令包含了客戶端用什麼連線埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP 20連線埠連線至客戶端的指定連線埠傳送數據。FTP server必須和客戶端建立一個新的連線用來傳送數據。
Passive模式
建立控制通道和Standard模式類似,但建立連線後傳送Pasv命令。伺服器收到Pasv命令後,打開一個臨時連線埠(連線埠號大於1023小於65535)並且通知客戶端在這個連線埠上傳送數據的請求,客戶端連線FTP伺服器此連線埠,然後FTP伺服器將通過這個連線埠傳送數據。
很多防火牆在設定的時候都是不允許接受外部發起的連線的,所以許多位於防火牆後或區域網路的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端連線埠;而許多區域網路的客戶端不能用PORT模式登入FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連線,造成無法工作。

命令參數

FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX作業系統下使用FTP,都會遇到大量的FTP內部命令,熟悉並靈活套用FTP的內部命令,可以大大方便使用者,特別對於現在撥接的用戶,熟練使用FTP內部命令,可以大大減少線上時間。

簡介

1.FTP伺服器的登入
匿名用戶:FTP 口令:FTP
用戶:ANONYMOUS 口令:任何電子郵件
2.顯示檔案信息:DIR/LS
3.下載檔案:GET 檔案名稱(下載到當前目錄)
4.上傳檔案:PUT 檔案名稱
5.多檔案下載:MGET
6.多檔案上傳:MPUT
7.退出:BYE
8.幫助:HELP

用途

在本地主機和遠程主機之間傳送檔案。

語法

ftp [ -d] [ -g ] [ -i ] [ -n ] [ -v] [ -f ] [ -k realm] [-q[-C]][ HostName [ Port ] ]

描述

-C 允許用戶指定:通過 send_file 命令發出的檔案必須在網路高速緩衝區(NBC)中經過快取處理。此標誌必須在指定了-q 標誌的情況下使用。只有當檔案在無保護的情況下以二進制方式傳送時此標誌才適用。
-d 將有關 ftp 命令操作的調試信息傳送給 syslogd 守護進程。如果您指定-d 標誌,您必須編輯/etc/syslog.conf 檔案並添加下列中的一項:
OR
user.debug FileName
請注意: syslogd 守護進程調試級別包含信息級別訊息。
如果不編輯/etc/syslog.conf 檔案,則不會產生訊息。變更了/etc/syslog.conf 檔案之後,請運行 refresh -s syslogd 或 kill -1 SyslogdPID 命令,以通知 syslogd 守護進程其配置檔案的變更。關於調試級別的更多信息,請參考/etc/syslog.conf 檔案。也請參考 debug 子命令。
-g 禁用檔案名稱中的元字元拓展。解釋元字元可參考為擴展(有時叫做檔案名稱匹配替換)檔案名稱。請參考 glob 子命令。
FTP(檔案傳輸協定)
圖2 FTP 工作示意圖
-i 關閉多檔案傳送中的互動式提示。請參考 prompt、mget、mput 和 mdelete 子命令,以取得多檔案傳送中的提示的描述。
-n 防止在起始連線中的自動登錄。否則, ftp 命令會搜尋$HOME/.netrc 登錄項,該登錄項描述了遠程主機的登錄和初始化過程。請參考 user 子命令。
-q 允許用戶指定: send_file 子例程必須用於在網路上傳送檔案。只有當檔案在無保護的情況下以二進制方式傳送時此標誌才適用。
-v 顯示遠程伺服器的全部回響,並提供數據傳輸的統計信息。當 ftp 命令的輸出是到終端(如控制台或顯示)時,此顯示方式是預設方式。
如果 stdin 不是終端,除非用戶調用帶有-v 標誌的 ftp 命令,或傳送 verbose 子命令,否則 ftp 詳細方式將禁用。
-f 導致轉發憑證。如果Kerberos 5 不是當前認證方法,則此標誌將被忽略。
-k realm 如果遠程站的域不同於本地系統的域,系統將允許用戶指定遠程站的域。因此,域和DCE 單元是同義的。如果Kerberos 5 不是當前認證方法,則此標誌將被忽略。

處理規則

ftp 命令使用“檔案傳送協定”(FTP) 在本地和遠程主機或遠程主機之間傳送檔案。
FTP 協定允許在使用不同檔案系統的主機之間進行數據傳送。儘管協定在傳送數據中提供了很高的靈活度,它仍然不會嘗試保留特定於某個檔案系統的檔案屬性(如檔案保護模式或修改時間)。而且,FTP 協定為檔案系統的整體結構做了少許假設,且不提供或不允許諸如循環地複製子目錄這樣的函式。
請注意:如果您正在系統之間傳送檔案,且需要保存檔案屬性或遞歸地複製子目錄,請使用 rcp 命令。
您可以在 ftp> 提示符中輸入子命令,執行類似這樣的任務:列出遠程目錄、更改當前的本地和遠程目錄、在單一請求中傳送多個檔案、創建和除去目錄,以及轉義到本地 shell 執行 shell 命令。
如果您執行 ftp 命令而不為遠程主機指定HostName 參數,ftp 命令會立即顯示 ftp> 提示符,等待 ftp 子命令。要連線遠程主機,請執行 open 子命令。當 ftp 命令連線到遠程主機時,ftp 命令在再次顯示提示符 ftp> 之前會提示輸入登錄名和密碼。如果遠程主機中未定義登錄名的密碼,ftp 命令將不成功。
ftp 命令解釋器(處理在 ftp> 提示符處輸入的全部子命令),會提供大多數檔案傳送程式沒有的性能,如:
* 對 ftp 子命令處理檔案名稱參數
* 將一組子命令集中成一個單一的子命令
* 從$HOME/.netrc 檔案中裝入宏
這些性能會幫助您簡化重複的任務,並允許您在 unattended 方式使用 ftp 命令。
命令解釋器將按照下列規則處理檔案名稱參數:
* 如果為此參數指定了-(連字元),則標準輸入 (stdin) 將用於讀取操作,而標準輸出用於寫入操作。
* 如果未套用前面的檢查,且檔案名稱擴展已啟用(請參考-g 標誌或 glob 子命令),則解釋器將根據C shell 的規則擴展檔案名稱。啟用了檔案名稱匹配替換以及在期待單一檔案名稱的子命令中使用了模式匹配字元時,結果可能與期待的不一樣。
例如,append 和 put 子命令將拓展檔案名稱,然後僅使用所生成第一個檔案名稱。其它 ftp 子命令,如 cd、delete, get、mkdir、rename 和 rmdir 不會執行檔案名稱拓展,並從字面上接受模式匹配字元。
* 對於 get、put、mget 和 mput 子命令,解釋器有能力在不同的本地和遠程檔案名稱語法樣式之間進行翻譯和映射(請參考 case、ntrans 和 nmap 子命令),並且在本地檔案名稱不是唯一的情況下有修改它的能力(請參考 runique 子命令)。另外,如果遠程檔案名稱不是唯一的,則 ftp 命令可將指令傳送到遠程 ftpd 伺服器,以修改遠程的檔案名稱(請參考 sunique 子命令)。
* 使用雙引號(" ") 指定包含空字元的參數。
請注意:ftp 命令解釋器不支持管道。也無需支持所有多位元組字元檔案名稱。
要在互動地運行的時候結束 ftp 會話,請使用 quit 或 bye 子命令或 ftp> 提示符處的End of File (Ctrl-D) 按鍵順序。要在檔案傳送未完成之前結束它,請按中斷按鍵順序。其預設“中斷鍵”序列是Ctrl-C。stty 指令能用於重新定義該鍵系列。
ftp 命令在正常情況下會立即暫停正在傳送(從本地主機到遠端主機)的傳輸。ftp 命令通過將FTP ABOR 指令傳送到遠程FTP 伺服器,來暫停正在接收的傳輸(從遠程主機到本地主機),並廢棄所有傳入的檔案傳送包(直到遠程伺服器停止傳送它們為止)。如果遠程伺服器不支持ABOR 指令,在遠程伺服器未傳送所有請求的檔案之前,ftp 命令不會顯示 ftp> 提示符。另外,如果遠程伺服器執行未期望的操作時,可能需要結束本地 ftp 進程。

匿名FTP

默認狀態下,FTP 站點允許匿名訪問,FTP 伺服器接受對該資源的所有請求,並且不提示用戶輸入用戶名或密碼。如果站點中存儲有重要的或敏感的信息,只允許授權用戶訪問,應禁止匿名訪問。
使用FTP時必須首先登錄,在遠程主機上獲得相應的許可權以後,方可下載或上傳檔案。也就是說,要想同哪一台計算機傳送檔案,就必須具有哪一台計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送檔案。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個用戶在每一台主機上都擁有賬號。匿名FTP就是為解決這個問題而產生的。
匿名FTP是這樣一種機制,用戶可通過它連線到遠程主機上,並從其下載檔案,而無需成為其註冊用戶。系統管理員建立了一個特殊的用戶ID,名為anonymous, Internet上的任何人在任何地方都可使用該用戶ID。
通過FTP程式連線匿名FTP主機的方式同連線普通FTP主機的方式差不多,只是在要求提供用戶標識ID時必須輸入anonymous,該用戶ID的口令可以是任意的字元串。習慣上,用自己的E-mail地址作為口令,使系統維護程式能夠記錄下來誰在存取這些檔案。
值得注意的是,匿名FTP不適用於所有Internet主機,它只適用於那些提供了這項服務的主機。
當遠程主機提供匿名FTP服務時,會指定某些目錄向公眾開放,允許匿名存取。系統中的其餘目錄則處於隱匿狀態。作為一種安全措施,大多數匿名FTP主機都允許用戶從其下載檔案,而不允許用戶向其上傳檔案,也就是說,用戶可將匿名FTP主機上的所有檔案全部拷貝到自己的機器上,但不能將自己機器上的任何一個檔案拷貝至匿名FTP主機上。即使有些匿名FTP主機確實允許用戶上傳檔案,用戶也只能將檔案上傳至某一指定上傳目錄中。隨後,系統管理員會去檢查這些檔案,他會將這些檔案移至另一個公共下載目錄中,供其他用戶下載,利用這種方式,遠程主機的用戶得到了保護,避免了有人上傳有問題的檔案,如帶病毒的檔案。

相關詞條

熱門詞條

聯絡我們