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