譚玲麗
摘要:目前的文件傳輸服務(wù)器大多是基于Windows操作系統(tǒng)的,很少有針對Linux系統(tǒng)?;贚inux平臺,設(shè)計并實現(xiàn)了一種自定義FTP文件傳輸協(xié)議的系統(tǒng),用C/C++作為開發(fā)語言編寫實現(xiàn)的,并詳細分析了該服務(wù)器的優(yōu)勢與不足。
關(guān)鍵詞:FTP;服務(wù)器;Linux
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)25-0025-02
1 引言
FTP(File Transfer Protocol文件傳輸協(xié)議)服務(wù)器是一種傳統(tǒng)的文件傳輸系統(tǒng),也是當前互聯(lián)網(wǎng)上比較實用的文件傳輸系統(tǒng),以其管理簡單和能夠?qū)崿F(xiàn)雙向傳輸?shù)膬?yōu)勢,受到了國際互聯(lián)網(wǎng)用戶的普遍歡迎。
隨著 Internet/Intranet 技術(shù)的迅速發(fā)展,許多公司、企業(yè)和網(wǎng)站開發(fā)了不少基于FTP(File Transfer Protocol文件傳輸協(xié)議)的應(yīng)用系統(tǒng)。尤其在Windows系統(tǒng)下,但是在涉及一些需要保密性極其高的行業(yè)時,Windows平臺下的FTP服務(wù)器在安全性上的劣勢就顯而易見了。Linux操作系統(tǒng)是一個開源平臺,其安全性好、價格低,越來越多對穩(wěn)定性要求高的用戶和對成本控制要求嚴格的電腦生產(chǎn)廠商都選擇了Linux操作系統(tǒng)。因此,相對應(yīng)的Linux下文件傳輸服務(wù)器的開發(fā)也是業(yè)界現(xiàn)在最重要的課題之一。
2 FTP服務(wù)器的設(shè)計
2.1 基本原理
文件傳輸協(xié)議是Internet上的一個主要功能,其主要功能就是將文件從一臺計算機傳遞到另一臺計算機。本服務(wù)器使用的是自定義的FTP(File Transfer Protocol)協(xié)議。本服務(wù)器采用的是一種客戶端/服務(wù)器(client/server)模式,在客戶端和服務(wù)器端之間使用TCP協(xié)議建立連接。本服務(wù)器使用的FTP的組成及結(jié)構(gòu)如圖1所示。
2.2 FTP服務(wù)器工作過程
一般的FTP文件傳輸服務(wù)器所使用的數(shù)據(jù)端口取決于FTP的連接模式,一般分為主動模式(Active Mode)和被動模式(Passive Mode)。本服務(wù)器采用的是自定義的FTP協(xié)議,所以端口(大于1024)由自己決定,并采用了類似一般FTP服務(wù)器數(shù)據(jù)連接中的主動模式。工作過程:
1)客戶端打開一個動態(tài)選擇的端口(1024以上)向服務(wù)器端自定義的控制端口(1024以上)發(fā)起連接,經(jīng)過TCP的3次握手之后,建立控制連接。
2)客戶端在控制連接上通知服務(wù)器自己所用的臨時數(shù)據(jù)端口。
3)服務(wù)器接到通知之后與客戶端的數(shù)據(jù)端口建立起數(shù)據(jù)連接,并開始傳輸數(shù)據(jù)。
2.3 業(yè)務(wù)流程
詳細研究用戶需求后,確定服務(wù)器的業(yè)務(wù)流程如圖2所示:
3 實現(xiàn)開發(fā)平臺及編譯運行
硬件環(huán)境是Linux,編輯環(huán)境我們選擇的是VI(Visual Interface),絕大多數(shù)情況下都是使用C語言為Linux開發(fā)應(yīng)用程序,目前 Linux 下使用最頻繁的 C 語言編譯器是gcc(GNU Compiler Collection),它能夠編譯用C、C++和Object C等語言編寫的程序,語言我們使用的是C語言,選用的是MySQL開發(fā)后臺數(shù)據(jù)庫。預(yù)期實現(xiàn)功能要求,在用戶登錄、文件創(chuàng)建、上傳、下載、查詢及刪除等方面都測試運行通過。其中多用戶登錄測試運行界面截圖如圖3所示:
系統(tǒng)程序的安裝和加載運行:
1)將文件傳輸服務(wù)器的服務(wù)器端代碼和客戶端代碼復(fù)制一份到Linux平臺的Ubantu系統(tǒng)下;
2)用gcc編譯器分別編譯服務(wù)器端和客戶端代碼,然后運行服務(wù)器;
3)在確保服務(wù)器運行之后,運行客戶端,并在運行客戶端時輸入服務(wù)器的IP地址和自定義的端口號;
4)完成客戶端登陸到服務(wù)器上之后,用戶就可以通過命令在客戶端上遠程操作服務(wù)器上的文件。
4 結(jié)論
經(jīng)測試,該FTP服務(wù)器實現(xiàn)了局域網(wǎng)內(nèi)用戶登錄、上傳、下載、查詢、刪除文件資料等功能,并能在確保安全穩(wěn)定的前提下,方便內(nèi)部工作人員在工作中共享資源,使資源利用達到最大化。測試階段發(fā)現(xiàn)的部分漏洞雖已修補,但仍存在一些不足,在后續(xù)工作中會繼續(xù)予以改進:
1)由于設(shè)計時間較為倉促,沒有交互界面的美化方面有所欠缺,因此用戶界面的設(shè)計還有一定的完善空間。
2)在上傳和下載文件時可能出現(xiàn)粘包問題,在上傳文件時,客戶端連續(xù)發(fā)送幾次數(shù)據(jù)很可能被服務(wù)器端一次性接收,可以采用應(yīng)答模式解決此問題。
3)緩沖區(qū)不滿的問題,在傳輸文件的時候,接受數(shù)據(jù)的緩沖區(qū)定義的有點大,接受到最后的時候,發(fā)送端發(fā)送的數(shù)據(jù)不足以填滿緩沖區(qū),就會出現(xiàn)接受文件數(shù)據(jù)已經(jīng)完成,但是操作不能正常結(jié)束的問題。這里的解決方案是,在文件傳送之前將要被傳送的文件的大小信息先提取出來發(fā)送給接收端,然后再發(fā)送,一直到該文件剩余大小比緩沖區(qū)小的時候,就動態(tài)創(chuàng)建一個大小跟文件剩余大小一樣的緩沖區(qū),一次將剩余文件接收,這樣就可以解決接收緩沖區(qū)不滿的問題了。
參考文獻:
[1] (美)W.Richard Stevens.TCP/IP詳解卷1:協(xié)議[M].北京:機械工業(yè)出版社,2002.
[2] 徐斌.當前嵌入式Linux分析與應(yīng)用[J].電子制作,2015(2).
[3] 趙偉光.Linux的網(wǎng)絡(luò)流量監(jiān)測[J].網(wǎng)絡(luò)安全,2015(4).