freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文基于linux的ftp服務(wù)器的研究與實(shí)現(xiàn)-在線瀏覽

2025-01-10 20:55本頁(yè)面
  

【正文】 FTP 在企公司,學(xué)校等可構(gòu)成局域網(wǎng)的場(chǎng)所的使用也越來(lái)越多。 應(yīng)用及意義 本課題所實(shí)現(xiàn)的 FTP 服務(wù)器是在 Linux 的虛擬機(jī)平臺(tái)上運(yùn)行的。其次,虛擬機(jī)是使用軟件技術(shù)把一臺(tái)運(yùn)行在因特網(wǎng)上的服務(wù)器主機(jī)分成多個(gè)相對(duì)獨(dú)立的域名 和IP 地址的虛擬主機(jī),并且每個(gè)虛擬機(jī)上面都具有完整的 Inter 服務(wù)器功能,虛擬機(jī)之間各自獨(dú)立互不干擾,這就決定了一臺(tái)計(jì)算機(jī)上面可以運(yùn)行多個(gè) FTP 服務(wù)器。 FTP 服務(wù)器一般運(yùn)行在 20 和 21 兩個(gè)端口, 20 號(hào)端口用于數(shù)據(jù)傳輸,而 21 號(hào)端口用于控制傳輸,因此使用的時(shí)候非常方便 [4]。 不過(guò)目前的 FTP 服務(wù)器很多都沒(méi)有設(shè)置對(duì)客戶端文件的上傳下載速度的限制以及 IP連接數(shù)單 IP 連接數(shù)的控制。同樣如果不對(duì) IP 的連接數(shù)進(jìn)行控制,會(huì)導(dǎo)致很多其它無(wú)關(guān)的人會(huì)亂下載服務(wù)器上面的資源,這點(diǎn)在學(xué)校的實(shí)驗(yàn)室里面表現(xiàn)的更明顯。針對(duì)以上的問(wèn)題,我在本課題里面多加了對(duì)上傳下載速度的限制以及 IP 連接數(shù)的控制來(lái)解決。主要由登錄模塊、目錄操作模塊、文件操作模塊、文件傳輸模塊、工作模式、監(jiān)控模塊。 圖 21 基于 Linux的 FTP 服務(wù)器框圖 服務(wù)器的設(shè)計(jì)要求 由圖 21 可知,為了完成課題基于 Linux 的 FTP 服務(wù)器需要完成如表 31 的功能。 服務(wù)器的性能指標(biāo) ( 1) 編程語(yǔ)言:標(biāo)準(zhǔn) C 語(yǔ)言; ( 2) 運(yùn)行平臺(tái): redhat linux ( 3) 完成上述的 各項(xiàng)功能; ( 4) 可以用腳本啟動(dòng)服務(wù)器; ( 5) 上傳下載速度誤差 : 177。 基于 Linux的 FTP 服務(wù)器 5 3 基于 Linux 的 FTP 服務(wù)器設(shè)計(jì)方案及原理 可行性分析及方案的確定 首先,因?yàn)榉?wù)端的軟件是一個(gè)守護(hù)進(jìn)程,不需要圖形界面,因此可以用比較低級(jí)的語(yǔ)言來(lái)開發(fā),但是 C 語(yǔ)言相對(duì) C++, JAVA 等語(yǔ)言來(lái)說(shuō)冗余比較少,不僅如此, C 語(yǔ)言是一種結(jié)構(gòu)式的語(yǔ)言,有指針的概念,用戶可以自己自定義數(shù)據(jù)的類型,靈活性比較高。 其次,選擇 Linux 作為開發(fā)平臺(tái)的主要原因如下: ( 1) Linux 自帶了一個(gè)便于調(diào)試的 gcc 編譯器。而且 gcc 因?yàn)榭梢栽谒械钠脚_(tái)上面使用同一個(gè)前端處理程序,所以通常用來(lái)作為跨平臺(tái)軟件的編譯器 [6]。當(dāng)給出該命令時(shí),就會(huì)重新設(shè)置進(jìn)程的控制終端的端口特征,并取消對(duì)端口的所有訪問(wèn)。根據(jù)調(diào)用進(jìn)程的登錄用戶標(biāo)識(shí)建立所有的憑證和環(huán)境 。 該命令應(yīng)該被 setuid 為 root 用戶,以重新設(shè)置用戶的進(jìn)程憑證、授權(quán)執(zhí)行訪問(wèn)所有用戶 [7]。 因此,本系統(tǒng) ftp 的啟動(dòng),重啟,及關(guān)閉 都是運(yùn)用 shell 的強(qiáng)大功能來(lái)實(shí)現(xiàn)的。 最后,文件傳輸協(xié)議( FTP 協(xié)議)主要包括 UDP(用戶數(shù)據(jù)報(bào))協(xié)議和 TCP(傳輸控制)協(xié)議,而采用 TCP 協(xié)議作為 FTP 的通信傳輸協(xié)議主要是因?yàn)?TCP 的連接建立采用的是三次握手,這樣就不會(huì)出現(xiàn)已失效的連接請(qǐng)求報(bào)文段突然又傳到了服務(wù)器,從而保證提供面向連接的、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無(wú)差錯(cuò),無(wú)重復(fù)的 發(fā)送,且按發(fā)送順序接收。當(dāng)然使用 TCP 主要是根據(jù)字節(jié)流的傳輸,因此可能會(huì)出現(xiàn)接收方收的不夠或者太多問(wèn)題,還有可能會(huì)出現(xiàn)擁塞問(wèn)題,可是對(duì)于這些問(wèn)題,我都在程序中會(huì)做相對(duì)應(yīng)的處理。 福州大學(xué)陽(yáng)光學(xué)院本科生畢業(yè)設(shè)計(jì)(論文) 6 模塊功能簡(jiǎn)介 如圖 22 所示,整個(gè) FTP 服務(wù)器主要包括登錄模塊、目錄操作 模塊、文件操作模塊、文件傳輸模塊、工作模式、監(jiān)控模塊。 ( 1)登錄模塊包含本地用戶登錄和匿名用戶登錄兩種方式,匿名用戶登錄時(shí)要注意只能將其控制在 /var/ftp 目錄下但是在客戶端只能默認(rèn)出現(xiàn)在根部錄下。因?yàn)橛脩舻卿浭歉鶕?jù) Linux 下的用戶來(lái)確定登錄的用戶名和密碼是否正確。 ( 3)文件操作模塊包括刪除文件,重命名文件,它一般和目錄操作命令混合使用。 ( 4)文件傳輸模塊所要實(shí)現(xiàn)的功能主要有上傳文件,下載文件,斷點(diǎn)續(xù)傳等等。 ( 5)工作模式指的是 pasv 模式和 port 模式。 ( 6)監(jiān)控模塊是一個(gè)大的模塊,它所運(yùn)用到的技術(shù)點(diǎn)也很多比如說(shuō)共享內(nèi)存、哈希表、信號(hào)量還有進(jìn)程等等,它監(jiān)控的信息主要有:上傳,下載文件的速度限制(為了解決擁塞問(wèn)題);服務(wù)器最大連接數(shù)限制;每 IP的最大連接數(shù)的限制。它使用客戶服務(wù)器的方式,一個(gè)服務(wù)器進(jìn)程可以被多個(gè)客戶進(jìn)程連接,主要由兩大部分組成,一個(gè)是主進(jìn)程,負(fù)責(zé)接收新的請(qǐng)求,一個(gè)是負(fù)責(zé)單個(gè)請(qǐng)求的從屬進(jìn)程, FTP 的工作 情基于 Linux的 FTP 服務(wù)器 7 況圖 31 所示。從屬進(jìn)程對(duì)客戶的請(qǐng)求處理完畢后立即終止,但是從屬進(jìn)程在運(yùn)行期間可以根據(jù)需求 fork 一些子進(jìn)程來(lái)處理相關(guān)事務(wù) ; ( 4) 回到等待狀態(tài),繼續(xù)等待其他客戶的連接請(qǐng)求,主進(jìn)程與從屬進(jìn)程的處理時(shí)并發(fā)進(jìn)行的,互不干擾。當(dāng)服務(wù)器接收到文件傳輸請(qǐng)求后建立“數(shù)據(jù)傳送進(jìn)程”和“數(shù)據(jù)連接”,文件傳送結(jié)束后關(guān)閉數(shù)據(jù)傳送進(jìn)程,并結(jié)束運(yùn)行。通過(guò)這個(gè)主程序流程圖可以看出,在程序開 始的時(shí)候要先從配置文件中讀取相關(guān)的內(nèi)容,然后創(chuàng)建一個(gè)守護(hù)進(jìn)程來(lái)避免進(jìn)程的掛起問(wèn)題,最后就是跟根據(jù) TCP 協(xié)議創(chuàng)建通信模型。 否 是 圖 41 程序主流程 導(dǎo)入配件 創(chuàng)建守護(hù)進(jìn)程 創(chuàng)建共享內(nèi)存并且進(jìn)行初始化 創(chuàng)建數(shù)據(jù)進(jìn)程并進(jìn)入相應(yīng)的函數(shù)進(jìn)行處理 創(chuàng)建套接字并監(jiān)聽 接收客戶端連接創(chuàng)建新的套接字 是否接受該用戶的連接 創(chuàng)建子進(jìn)程并處理該用戶 開始 結(jié)束 基于 Linux的 FTP 服務(wù)器 9 進(jìn)程的啟動(dòng) 在 Linux環(huán)境下編程可以利用一個(gè)很好的工具,這個(gè)工具就是功能非常強(qiáng)大的 SHELL,在 Linux 中 SHELL 是“ Bash”。為了節(jié)省系統(tǒng)資源,我用腳本的形式寫的進(jìn)程啟動(dòng)可以再后臺(tái)默默的執(zhí)行而不打擾其它進(jìn)程的執(zhí)行。因此 SHELL 不僅可以用來(lái)執(zhí)行命令,還可以用來(lái)編寫程序,并且它使用的是解釋型語(yǔ)言,對(duì)其調(diào)度相對(duì) C 語(yǔ)言來(lái)說(shuō)比較容易 [9]。以下是本課題 FTP 服務(wù)器項(xiàng)目中所寫的啟動(dòng),停止,重起服務(wù)器的 SHELL 腳本。amp。 daemon true//這句 daemon true 是指要用 service hfftpd start 這種方式啟動(dòng)腳本,注意腳本要拷貝到 /etc/,并且沒(méi)有 .sh 后綴 RETVAL=$? echo return $RETVAL } stop(){ echo $Shuting down $prog... killproc $prog 3 //這句是為了刪除共享內(nèi)存而設(shè)置的,如果不刪除就會(huì)消耗系統(tǒng)資源。 stop) stop 。 start RETVAL=$? 。系統(tǒng)通過(guò) case 程序中的 $1 的參數(shù)只能允許為 start,stop,restart,來(lái)判斷得到哪一個(gè)參數(shù)而做其所對(duì)應(yīng)的工作。當(dāng)參數(shù)如果是“ stop”命令時(shí),就先把所有 main 進(jìn)程關(guān)閉并向每個(gè)主函數(shù)進(jìn)程發(fā)送 SIGQUIT,和 SIGKILL 信號(hào)( SIGQUIT 是退出信號(hào), SIGKILL 是殺進(jìn)程的信號(hào)), SIGQUIT 信號(hào)在 main 進(jìn)程中都對(duì)它們進(jìn)行了安裝 ,處理函數(shù)中有對(duì)它們的進(jìn)行處理,如果是 restart 命令時(shí)要先關(guān)閉進(jìn) 程再啟動(dòng) main 進(jìn)程也就是重啟。 守護(hù)進(jìn)程是生存期很長(zhǎng)的一種進(jìn)程,它會(huì)自動(dòng)轉(zhuǎn)到后臺(tái)運(yùn)行而且脫離與終端的聯(lián)系不受終端的控制, 為了能夠等待解決一些事件的發(fā)生,它執(zhí)行任務(wù)的時(shí)候是用周期性重復(fù)的執(zhí)行方式 , 因此為了避免掛起,我在 FTP 也創(chuàng)建了一個(gè)守護(hù)進(jìn)程來(lái)守護(hù)本 FTP服務(wù)器。 ( 2) 脫離控制終端,登錄會(huì)話和進(jìn)程組 雖然守護(hù)可以在后臺(tái)運(yùn)行,但是調(diào)用 fork()函數(shù)后產(chǎn)生的子進(jìn)程的所擁有的資源是繼承父進(jìn)程,包括其進(jìn)程組、登錄會(huì)話、控制終端等,而這些是可以被系統(tǒng)收回的。 ( 3) 禁止進(jìn)程重新打開控制終端 通過(guò)上面的設(shè)置進(jìn)程就可以脫離控制終端限 制,但是它仍然可以向系統(tǒng)申請(qǐng)一個(gè)新的控制終端,這樣有了控制終端又會(huì)受到控制,為了避免這種情況,就要使進(jìn)程不能成為會(huì)話組長(zhǎng)。而守護(hù)進(jìn)程是一直在后臺(tái)默默的運(yùn)行的,只要不殺死它就不會(huì)停止運(yùn)行。 ( 5) 改變當(dāng)前工作目錄 Linux 規(guī)定進(jìn)程的工作目錄在其運(yùn)行的時(shí)候是不允許被卸下的,如果把進(jìn)程的 工作目錄放到自定義的目錄的話,可能會(huì)出現(xiàn)被關(guān)閉而卸下的情況。 ( 6) 重設(shè)文件創(chuàng)建掩模 因?yàn)樽舆M(jìn)程的資源是從父進(jìn)程那邊繼承下來(lái)的,它會(huì)繼承文件創(chuàng)建掩模使守護(hù)進(jìn)程所創(chuàng)建的文件存取位被修改。 ( 7) 處理 SIGCHLD 信號(hào) 進(jìn)程結(jié)束的時(shí)候,系統(tǒng)會(huì)發(fā)出 SIGCHLD 信號(hào)。 所以在這里要對(duì)這個(gè)信號(hào)進(jìn)行一定的處理。 工作模式的實(shí)現(xiàn) FTP 的過(guò)模式主要主動(dòng)模式 (port)好被動(dòng)模式 (pasv),兩種模式的模型如圖 43 所示。而被動(dòng)模式的模型和主動(dòng)正好相反,是先客戶端發(fā)送了連接請(qǐng)求,然后服務(wù)端把自己的 IP 和端口號(hào)發(fā)給客戶端,由客戶端來(lái)連接服務(wù)端的一種工作模式。然后,如果是主動(dòng)連接的時(shí)候,就把從客戶端得到的 IP 和端口號(hào)放入到哈希表里面,用于以后的 IP 連接數(shù)控制。 然后創(chuàng)建一個(gè)新的套接字,并設(shè)置 IP 和端口地址重用,用來(lái)綁定和監(jiān)聽客戶端是否連接進(jìn)來(lái)。測(cè)試函數(shù)的流程圖 44 如下: FTP 服務(wù)端 FTP 客戶端 FTP 服務(wù)端 FTP 服務(wù)端 基于 Linux的 FTP 服務(wù)器 13 否 是 否 否 是 圖 44 測(cè)試函數(shù)流程圖 監(jiān)控模塊的實(shí)現(xiàn) 本系統(tǒng)的監(jiān)控模塊主要設(shè)計(jì)了以下內(nèi)容,其中第一和第二兩點(diǎn)是重點(diǎn)內(nèi)容,第三點(diǎn)基本的 FTP 服務(wù)器都有。在監(jiān)控模塊中我用到的知識(shí)點(diǎn)主要有信號(hào)量的使用,共享內(nèi)存的使用和哈希表的 使用。而哈希表在這里的主要作用是通過(guò)一個(gè)進(jìn)程號(hào)找到 IP 地址,再通過(guò) IP 地址找到目前為單 IP 的連接數(shù)。上傳下載速度的限制的主要思想是用一個(gè)變量保存當(dāng)前下載或是上傳多少個(gè)字節(jié)了,當(dāng)達(dá)到配置中限制的最大速度(單位字節(jié)每秒)時(shí)讓其睡眠一秒鐘。那么如何計(jì)算當(dāng)前的上傳和下載的字節(jié)數(shù)呢?這就是判斷是否為port 接受上傳的命
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1