




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、哈爾濱理工大學(xué)UNIX 程序設(shè)計課程設(shè)計報告題目:單消息隊列完成客戶/服務(wù)器進(jìn)程之間的雙向通信院系:計算機(jī)科學(xué)與技術(shù)學(xué)院網(wǎng)絡(luò)工程系班級學(xué)號:姓名:指導(dǎo)教師:郭錦蘭成績:2013年12月23日哈爾濱理工大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院UNIX/Linux 程序設(shè)計課程設(shè)計報告第1章緒論-1-1.1選題內(nèi)容-1-1.2相關(guān)技術(shù)-1-第2章系統(tǒng)設(shè)計-1-2.1系統(tǒng)介紹-2-2.2實現(xiàn)原理-3-2.3主要問題的解決方法及關(guān)鍵技術(shù)52.4流程圖6第3章系統(tǒng)實現(xiàn)7客戶端截圖7服務(wù)器端截圖8結(jié)論9附錄10附錄A核心程序代碼10哈爾濱理工大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院UNIX/Linux 程序設(shè)計課程設(shè)計報告緒論選題內(nèi)容單
2、消息隊列完成客戶/服務(wù)器進(jìn)程之間的雙向通信相關(guān)技術(shù)隨著對通信雙方安全性的要求越來越高,對能使通信安全的機(jī)制需求更加迫切,UNIX下在消息隊列中嵌入加密解密算法無疑適應(yīng)了潮流。UNIX為進(jìn)程提供了豐富的交流方式,其中公開的交流方式有信號量、消息隊列、共享內(nèi)存,有名管道和文件等。采用消息隊列作為通信渠道可以彌補(bǔ)這些缺陷:.消息隊列是一種FIFO的隊列性結(jié)構(gòu),可以保證先送的數(shù)據(jù)先到達(dá),后送的數(shù)據(jù)后到達(dá),避免的插隊現(xiàn)象。.消息隊列將輸出的信息進(jìn)行了打包處理,這樣就可以保證以每個消息為單位進(jìn)行接收了。.消息隊列還可以對數(shù)據(jù)分類,更可以對不同分類的數(shù)據(jù)采取不同的方式操作,這更加靈活,安全性更高。所以,利用
3、消息隊列實現(xiàn)客戶服務(wù)器之間的加密通信是一種很安全的方式,研究單消息隊列完成客戶服務(wù)器之間的加密通信業(yè)顯得很迫切和必要。系統(tǒng)設(shè)計系統(tǒng)介紹本單消息隊列完成客戶/服務(wù)器之間的雙向通信是基于消息隊列的客戶/服務(wù)器的通信,對通信數(shù)據(jù)信息進(jìn)行有效的加密解密,實現(xiàn)客戶/服務(wù)器之間的雙向安全通信。根據(jù)需求分析,將整個系統(tǒng)模塊化,分為客戶端和服務(wù)器端兩大部分:客戶端將數(shù)據(jù)加密并傳輸?shù)椒?wù)端;服務(wù)器端接受數(shù)據(jù)并解密輸出。流程圖如下:實現(xiàn)原理.建立或返回消息隊列描述符進(jìn)程可用系統(tǒng)調(diào)用msgget來建立或返回消息隊列的描述符。該系統(tǒng)調(diào)用的語法格式為:intmsgget(key,msgflg)key_tkey;intm
4、sgflg;其中,key是消息隊列的名字;msgflg是用戶設(shè)置的標(biāo)志。如果IPC_CREAT表示系統(tǒng)無以key命名的消息隊列,則建立消息隊列標(biāo)識符;若已存三,則返回消息隊列描述符msgido對于系統(tǒng)調(diào)用,核心將搜索消息隊列頭標(biāo)數(shù)組,確定是否有指定關(guān)鍵字的消息隊列。若無,核心將分配一新的隊列結(jié)構(gòu),并返回給用戶一個消息隊列描述符;否則,它只是檢查消息隊列的許可權(quán)之后便返回。.消息的發(fā)送進(jìn)程可用megsnd()系統(tǒng)調(diào)用來發(fā)送一個消息,并將它鏈入消息隊列的尾部。該系統(tǒng)調(diào)用的語法格式如下:intmsgsnd(msgid,msgp,msgsz,msgflg)intmsgid;structmsgbuf*m
5、sgp;intmsgsz,msgflg;其中,msgid是由msgget返回的消息隊列描述符;msgp指向包含這條消息的結(jié)構(gòu),該結(jié)構(gòu)由如下兩個成員組成:structmsgbuf(longmtype;/*消息類型*/charmtext;/*消息的文本*/)msgsz是mtext的字節(jié)長度;msgflg規(guī)定了當(dāng)無內(nèi)存空間來存儲消息時,進(jìn)程等待還是立即返回。對于msgsnd()系統(tǒng)調(diào)用,核心檢查消息隊列描述符和許可權(quán)是否合法;消息長度是否超過系統(tǒng)規(guī)定的長度,若過長,進(jìn)程睡眠等待出現(xiàn)足夠大的空間,通過檢查后,核心為消息分配消息數(shù)據(jù)區(qū),并將消息從用戶空間拷貝到消息數(shù)據(jù)區(qū),分配消息首部,將它鏈入該消息隊列
6、的尾部,在消息首部填寫消息類型,大小以及指向消息數(shù)據(jù)區(qū)的指針,還有修改消息隊列的頭標(biāo)中的數(shù)據(jù)。然后喚醒在等待消息到來的隊列中睡眠的進(jìn)程。.消息的接收進(jìn)程可用msgrcv()系統(tǒng)調(diào)用,從消息隊列中讀一條消息,語法格式為:intmsgrcv(msgid,msgp,msgsz,msgtyp,msgflg)intmsgid,msgsz,msgflg;structmsgbuf*msgp;longmsgtyp;其中,msgid,msgp,msgsz,msgflg與msgsnd相似,msgtype是規(guī)定用戶想讀的消息類型。對于msgrcv()系統(tǒng)調(diào)用是先由核心檢查消息隊列標(biāo)識符和許可權(quán),接著根據(jù)msgtyp
7、分三種情況處理。msgtyp=0,核心尋找消息隊列中的第一個消息,并將它返回給調(diào)用進(jìn)(2)msgtyp為正整數(shù),核心返回給類型的第一個消息;(3)msgtyp為負(fù)整數(shù),核心應(yīng)在其類型值小于或等于msgtyp絕對值的所有消息中,選擇類型最低的第一消息返回。如果所返回的消息的大小等于或小于用戶請求,核心便將消息正文拷貝到用戶區(qū),冉從隊列中刪除該消息,并喚醒睡眠的發(fā)送進(jìn)程;如果消息比用戶要求的大,則系統(tǒng)返回錯誤信息。.客戶端發(fā)送數(shù)據(jù)的加密考慮到數(shù)據(jù)由ASCII碼經(jīng)過編程組成,通過對字符串的每個字符的ASCII碼進(jìn)行加密便顯得基礎(chǔ)且高效。因此,對于客戶端進(jìn)程進(jìn)行加密,服務(wù)器端進(jìn)行解密并回傳。加密通過對
8、單個字符的ASCII碼操作實現(xiàn)。.客戶端發(fā)送數(shù)據(jù)的加密數(shù)據(jù)加密函數(shù)如下:voidencode(char*buf)longi;charbuf11024;sscanf(buf,%s,buf1);memset(buf,0,sizeof(buf);for(i=0;istrlen(buf1);i+)sprintf(buf,%s%03d,buf,buf1i+588);服務(wù)器端接收數(shù)據(jù)的解密數(shù)據(jù)解密函數(shù)原型如下:voiddecode(char*buf)inti,n=strlen(buf);charbuf14,data1024;memset(data,0,sizeof(data);for(i=0;in;)me
9、mset(buf1,0,sizeof(buf1);sscanf(buf,%03s%s,buf1,buf);=i+3;sprintf(data,%s%c,data,atoi(buf1)-588);sprintf(buf,%s,data);2.4主要問題的解決方法和關(guān)鍵技術(shù).采用面向?qū)ο蟮脑O(shè)計方法:剛開始課題分析的時候沒有將課題分開來分析,費(fèi)事費(fèi)力還沒有得出好的解決辦法。經(jīng)過思考,采用面向?qū)ο蟮姆椒ǎv各個部分分開來設(shè)計,大大減少了工作量,并且在設(shè)計時可以專注當(dāng)前對象,不用顧及其他的模塊,只需要提供接口即可。可見,面向?qū)ο蟮脑O(shè)計方法高效。.編寫加密解密函數(shù)的問題:編寫加密解密函數(shù)時,我首先上網(wǎng)查了
10、資料,知道了加密有兩類,可逆和不可逆,我要用的是可逆性加密。此算法為異或算法,客戶端加密,服務(wù)器端解密,因為原來對加密解密幾乎不了解,從找資料到自己編算法用了不短的時間,從這個過程中,我對加密的重要性有了更深的認(rèn)識,對加密解密的算法了解了很多,學(xué)會了很多。.密碼學(xué)基礎(chǔ)知識:密碼學(xué)(在西歐語文中,源于希臘語kryptcs“隱藏的,和grhein“書寫”)是研究如何隱密地傳遞信息的學(xué)科。在現(xiàn)代特別指對信息以及其傳輸?shù)臄?shù)學(xué)性研究,常被認(rèn)為是數(shù)學(xué)和計算機(jī)科學(xué)的分支,和信息論也密切相關(guān)。著名的密碼學(xué)者RonRivest解釋道:”密碼學(xué)是關(guān)于如何在敵人存在的環(huán)境中通訊”,自工程學(xué)的角度,這相當(dāng)于密碼學(xué)與純
11、數(shù)學(xué)的異同。密碼學(xué)是信息安全等相關(guān)議題,如認(rèn)證、訪問控制的核心。密碼學(xué)的首要目的是隱藏信息的涵義,并不是隱藏信息的存在。密碼學(xué)也促進(jìn)了計算機(jī)科學(xué),特別是在于電腦與網(wǎng)絡(luò)安全所使用的技術(shù),如訪問控制與信息的機(jī)密性。密碼學(xué)已被應(yīng)用在日常生活:包括自動柜員機(jī)的芯片卡、電腦使用者存取密碼、電子商務(wù)等等。密他學(xué)密他學(xué)密碼是通信雙方按約定的法則進(jìn)行信息特殊變換的一種重要保密手段。依照這些法則,變明文為密文,稱為加密變換;變密文為明文,稱為脫密變換。密碼在早期僅對文字或數(shù)碼進(jìn)行加、脫密變換,隨著通信技術(shù)的發(fā)展,對語音、圖像、數(shù)據(jù)等都可實施加、脫密變換。數(shù)據(jù)加密的基本思想是通過變換信息的表示形式來偽裝需要保護(hù)的
12、敏感信息,使非授權(quán)者不能了解被保護(hù)信息的內(nèi)容。網(wǎng)絡(luò)安全使用密碼學(xué)來輔助完成在傳遞敏感信息的的相關(guān)問題,主要包括:(I)機(jī)密性(confidentiality)僅有發(fā)送方和指定的接收方能夠理解傳輸?shù)膱笪膬?nèi)容。竊聽者可以截取到加密了的報文,但不能還原出原來的信息,及不能達(dá)到報文內(nèi)容。(II)鑒別(authentication)發(fā)送方和接收方都應(yīng)該能證實通信過程所涉及的另一方,通信的另一方確實具有他們所聲稱的身份。即第三者不能冒充跟你通信的對方,能對對方的身份進(jìn)行鑒別。(III)報文完整性(messageintergrity)即使發(fā)送方和接收方可以互相鑒別對方,但他們還需要確保其通信的內(nèi)容在傳輸過程
13、中未被改變。(IV)不可否認(rèn)性(non-repudiation)如果人們收到通信對方的報文后,還要證實報文確實來自所宣稱的發(fā)送方,發(fā)送方也不能在發(fā)送報文以后否認(rèn)自己發(fā)送過報文系統(tǒng)實現(xiàn)客戶端截圖:,leoubuntu:T 下iUma文件(F)ifiiS(E)查看V)終端COM出函ubuntu:$cd7ome/leo/T/aal巳咆ibuntu:/下秣./clientinputrequest:helloesaiircecode:helloencode:561558565565568helloreceiveresponse.inputrequest:hiesaurcecode:hiencode:56
14、2563hireceiveresponse.inputrequest:exitle函ubuntu:、/下服務(wù)器端截圖:3OQleoubuntu:*/Tfl/aa文件(F)編鋸(E)童看V)統(tǒng)端(T)幫助出)leoubuntLi:*/Tft/aa$./server5615585&556556Bhello562563hilencade:decode:encode:decode:u通過這次課程設(shè)計,熟悉了UNIX系統(tǒng)下程序開發(fā)的流程,對程序設(shè)計有了具體的感受和經(jīng)驗。在這次程序設(shè)計里面,重點是進(jìn)程間通訊的加密,通過分析其本質(zhì),得到了通過對ASCII碼做處理的加密解密方法,大大減少了作業(yè)量??梢?/p>
15、看出看問題只要抓住實質(zhì),解決起來就很快,這也說明了動手之前充分分析的重要性。在寫程序的過程中,通過網(wǎng)絡(luò)和各個論壇可以找到很多實用的函數(shù)原型以及設(shè)計思路,這也提醒了我今后開發(fā)程序的時候要多吸收優(yōu)秀的思想和算法,這樣才能更快的提高。這次編程再次體現(xiàn)出了面向?qū)ο蟮某绦蛟O(shè)計方法的高效,今后的實踐中也要堅持這一優(yōu)秀的思想。附錄附錄 A 核心程序代碼一、原程序清單.客戶端的程序:#include#include#include#includevoidencode(char*);structmsgbuflongtype;charbuf1024;intmsgid;structmsgbuf_msgbuf;int
16、main()if(msgid=msgget(0 x1234,0666|IPC_CREAT)0)fprintf(stderr,msgget()failed.n);return;_msgbuf.type=getpid();while(1)fprintf(stderr,inputrequest:);scanf(%s,_msgbuf.buf);if(strcmp(_msgbuf.buf,exit)=0|strcmp(_msgbuf.buf,quit)=0)exit;fprintf(stderr,原碼:%sn,_msgbuf.buf);encode(_msgbuf.buf);fprintf(stderr
17、,加密:%sn,_msgbuf.buf);if(msgsnd(msgid,&_msgbuf,strlen(_msgbuf.buf),0)0)fprintf(stderr,msgsnd()failed.n);return;memset(_msgbuf.buf,0,sizeof(_msgbuf.buf);if(msgrcv(msgid,&_msgbuf,sizeof(_msgbuf.buf),_msgbuf.type+10000,0)0)fprintf(stderr,msgrcv()failed.n);return;fprintf(stderr,%sreceiveresponse.
18、n,_msgbuf.buf);一voidencode(char*buf)longi;charbuf11024;sscanf(buf,%s,buf1);memset(buf,0,sizeof(buf);for(i=0;istrlen(buf1);i+)sprintf(buf,%s%03d,buf,buf1i+588);.服務(wù)器端的程序:#include#include#include#includestructmsgbuflongtype;charbuf1024;);voiddecode(char*);intmsgid;structmsgbuf_msgbuf;intmain()if(msgid=msgget(0 x1234,0666|IPC_CREAT)0)fprintf(std
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZNZ 264.2-2024 重金屬中度污染農(nóng)田土壤修復(fù)和安全利用技術(shù)規(guī)范 第2部分:超積累東南景天與中稻輪作
- T-ZZB 3744-2024 制革用陰離子型磺化油
- T-ZMDS 20008-2024 醫(yī)療器械嵌入式軟件漏洞評估方法
- 2025年度解除農(nóng)業(yè)合作項目的聲明書
- 二零二五年度綠化苗木購銷與城市綠化養(yǎng)護(hù)服務(wù)合同
- 二零二五年度實習(xí)教師與教育機(jī)構(gòu)教育咨詢服務(wù)合同
- 二零二五年度共享住宅租賃正規(guī)協(xié)議書范本及環(huán)保要求
- 二零二五年度勞動合同主體變更及培訓(xùn)交接服務(wù)合同
- 2025年度水產(chǎn)養(yǎng)殖水質(zhì)改良與養(yǎng)魚合同
- 二零二五年度人社部員工勞動合同勞動合同電子簽名與認(rèn)證合同
- 醫(yī)院安全風(fēng)險分級管控清單
- 高級服裝設(shè)計與面料
- 次梁與主梁鉸接計算程式
- 學(xué)前比較教育(學(xué)前教育專業(yè))第3版全套教學(xué)課件
- 企業(yè)人力資源內(nèi)部審核檢查表
- 《素描》課件-第一章 素描入門
- GB/T 42828.1-2023鹽堿地改良通用技術(shù)第1部分:鐵尾砂改良
- 工資條(標(biāo)準(zhǔn)模版)
- 第四講 搜索引擎檢索
- 法語的發(fā)音規(guī)則及法語單詞分類記憶
- 衛(wèi)生和微生物基礎(chǔ)知識培訓(xùn)-
評論
0/150
提交評論