章勝江 劉萍
【摘??要】本文通過C語言編程,運用FTP協議、共享內存、信號量以及哈希表算法等各項技術對整個FTP服務器所需要的各個模塊進行實現。本文通過在服務器里面添加文件的上傳下載速度和IP連接數的控制等手段,從而提高整個服務的可靠性和共享性。
【關鍵詞】Linux??FTP??服務器
【中圖分類號】TP31???????????【文獻標識碼】A???????????【文章編號】1674-4810(2014)34-0200-01
用戶聯網的主要目的就是進行信息共享,而隨著互聯網的快速發展,信息共享的方式也多種多樣。FTP服務器就像是一個平臺,把用戶上傳的數據存儲在硬盤中,然后讓具有上傳下載等權限的用戶通過FTP客戶端進行資源的上傳和下載等操作,以此來達到資源共享的目的。可想而知,對于一個公司或重要機構來說,沒有一個資源共享的平臺,那么在信息技術高速發展的今天,如果員工之間的信息傳遞還是靠傳統的手寫或者打印,那么效率是很低的。本文所實現的FTP服務器是在Linux的虛擬機平臺上運行的,主要包括登錄模塊、目錄操作模塊、文件操作模塊、文件傳輸模塊、工作模式、監控模塊。通過登錄模塊進行用戶的用戶名和密碼驗證,然后判斷其權限對共享資源進行操作。
一?基于Linux的FTP服務器設計要求
登錄模塊:包含本地用戶登錄和匿名用戶登錄兩種方式,匿名用戶登錄時只能將其控制在/var/ftp目錄下,但是在客戶端只能默認出現在根目錄下。登錄用戶方式的用戶名必須是運行該程序的Linux環境下的一個用戶,否則將無權進行登錄。因為用戶登錄是根據Linux下的用戶來確定登錄的用戶名和密碼是否正確。
目錄操作模塊:主要實現的功能有添加目錄,刪除目錄,重命名目錄,返回父目錄,改變工作目錄,列出目錄詳細清單等,這些都是用戶對目錄的一些基本操作,當然要求這個用戶不可以是匿名用戶。
文件操作模塊:包括刪除文件、重命名文件,它一般和目錄操作命令混合使用。這里說的混合使用是指在客戶端進行相應的操作的時候,客戶端會對所進行的操作轉化為多個命令發送到服務器端。
文件傳輸模塊:實現上傳文件、下載文件、斷點續傳等。這里上傳、下載文件是FTP服務器的一項功能,而斷點續傳也是大部分客戶要用到的功能。所謂的斷點續傳就是可以在斷點的地方繼續傳,這是解決TCP協議中的重傳問題,因此極大地方便了用戶上傳、下載文件,例如有時用戶的一個文件沒下載完,如果沒有斷點續傳的功能,那么下次下載該文件時,就只能從頭開始下載了,這樣很不方便而且浪費時間,而有了這項斷點續傳功能,那么客戶就可以在下次下載該文件時利用斷點續傳的功能實現整個文件在上傳或下載沒有傳好的地方繼續上傳或是下載。
工作模式:指的是pasv模式和port模式。pasv模式即平常說的被動模式,這里的被動是針對服務器來說的,被動模式即由客戶端主動連接服務器以實現通信。而port模式即平常說的主動模式,是由服務器主動連接客戶端以達到通信的目的。
監控模塊:該模塊所運用到的技術點比較多,如共享內存、哈希表、信號量還有進程等,它監控的信息主要有:上傳、下載文件的速度限制;服務器最大連接數限制;每個IP的最大連接數的限制。
二?關鍵模塊的實現
本文以監控模塊為例來闡述關鍵模塊的實現。監控模塊主要設計了以下內容:限制上傳、下載速度;限制每個IP最大連接數及總IP連接數;統計上傳下載的文件個數及大小。在這里用到了信號量、共享內存和哈希表等技術。信號量在這里相當于一個標志,就是IP是否已連接的標志,而共享內存中存放的是IP的總連接數,即總共有幾臺主機連到了服務端。而哈希表在這里的主要作用是通過一個進程號找到IP地址,再通過IP地址找到目前為單IP的連接數。
struct?ip_process
{??int??process_id;??????//進程號
char?ip_address[15];??//IP地址
};
該結構體用于統計服務器創建的進程號和與該進程相關的客戶端IP,一個IP可能多次連接服務器,每次連接服務器都會創建一個進程進行處理該連接,所以存在相同IP地址不同進程號的情況。
三?結束語
本文是基于Linux的FTP服務器的研究與實現,以Linux操作系統的虛擬機為平臺,實現讓資源得到共享的目的。除了實現FTP服務器所具有的登錄模塊、目錄操作模塊、文件操作模塊、數據傳輸模塊之外,還增加了一個監控模塊的內容。這使得本文所實現的FTP服務器在客戶的應用體驗上和數據安全方面有進一步的提升。
參考文獻
[1]IT同路人編著.Linux標準學習教程[M].北京:人民郵電出版社,2008
〔責任編輯:龐遠燕〕