文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)是用于在網(wǎng)絡(luò)上進行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應(yīng)用層, 使用 TCP 傳輸而不是 UDP, 客戶在和服務(wù)器建立連接前要經(jīng)過一個“三次握手”的過程, 保證客戶與服務(wù)器之間的連接是可靠的, 而且是面向連接, 為數(shù)據(jù)傳輸提供可靠保證。
FTP允許用戶以文件操作的方式(如文件的增、刪、改、查、傳送等)與另一主機相互通信。然而, 用戶并不真正登錄到自己想要存取的計算機上面而成為完全用戶, 可用FTP程序訪問遠程資源, 實現(xiàn)用戶往返傳輸文件、目錄管理以及訪問電子郵件等等, 即使雙方計算機可能配有不同的操作系統(tǒng)和文件存儲方式。
FTP 采用 Internet 標(biāo)準(zhǔn)文件傳輸協(xié)議 FTP 的用戶界面, 向用戶提供了一組用來管理計算機之間文件傳輸?shù)膽?yīng)用程序。FTP 是基于客戶———服務(wù)器(C/S)模型而設(shè)計的,在客戶端與 FTP 服務(wù)器之間建立兩個連接。開發(fā)任何基于 FTP 的客戶端軟件都必須遵循 FTP 的工作原理,F(xiàn)TP 的獨特的優(yōu)勢同時也是與其它客戶服務(wù)器程序最大的不同點就在于它在兩臺通信的主機之間使用了兩條 TCP 連接,一條是數(shù)據(jù)連接,用于數(shù)據(jù)傳送;另一條是控制連接,用于傳送控制信息(命令和響應(yīng)),這種將命令和數(shù)據(jù)分開傳送的思想大大提高了 FTP 的效率,而其它客戶服務(wù)器應(yīng)用程序一般只有一條 TCP 連接。圖 1 給出了 FTP 的基本模型??蛻粲腥齻€構(gòu)件:用戶接口、客戶控制進程和客戶數(shù)據(jù)傳送進程。服務(wù)器有兩個構(gòu)件:服務(wù)器控制進程和服務(wù)器數(shù)據(jù)傳送進程。在整個交互的 FTP 會話中,控制連接始終是處于連接狀態(tài)的,數(shù)據(jù)連接則在每一次文件傳送時先打開后關(guān)閉。
Real帳戶這類用戶是指在FTP服務(wù)上擁有帳號。當(dāng)這類用戶登錄FTP服務(wù)器的時候,其默認的主目錄就是其帳號命名的目錄。但是,其還可以變更到其他目錄中去。如系統(tǒng)的主目錄等等。
Guest用戶在FTP服務(wù)器中,我們往往會給不同的部門或者某個特定的用戶設(shè)置一個帳戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。服務(wù)器通過這種方式來保障FTP服務(wù)上其他文件的安全性。這類帳戶,在Vsftpd軟件中就叫做Guest用戶。擁有這類用戶的帳戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的文件。
Anonymous用戶這也是我們通常所說的匿名訪問。這類用戶是指在FTP服務(wù)器中沒有指定帳戶,但是其仍然可以進行匿名訪問某些公開的資源。在組建FTP服務(wù)器的時候,我們就需要根據(jù)用戶的類型,對用戶進行歸類。默認情況下,Vsftpd服務(wù)器會把建立的所有帳戶都歸屬為Real用戶。但是,這往往不符合企業(yè)安全的需要。因為這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就給其他用戶所在的空間帶來一定的安全隱患。所以,企業(yè)要根據(jù)實際情況,修改用戶所在的類別。
ASCII傳輸方式假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當(dāng)文件傳輸時ftp通常會自動地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募鼈兛赡苁浅绦?,?shù)據(jù)庫,字處理文件或者壓縮文件。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝。二進制傳輸模式在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應(yīng)的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。如在ASCII方式下傳輸二進制文件,即使不需要也仍會轉(zhuǎn)譯。這會損壞數(shù)據(jù)。(ASCII方式一般假設(shè)每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果傳輸二進制文件,所有的位都是重要的。)