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