亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種高并發(fā)認(rèn)證服務(wù)器的實(shí)現(xiàn)

        2015-11-17 11:49:10樊揚(yáng)軻唐杰
        電腦知識(shí)與技術(shù) 2015年24期
        關(guān)鍵詞:多線(xiàn)程

        樊揚(yáng)軻 唐杰

        摘要:針對(duì)當(dāng)前層出不窮的網(wǎng)絡(luò)安全問(wèn)題,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)具有高并發(fā)功能的認(rèn)證服務(wù)器。該文采用了RSA和DES算法來(lái)保證信息傳輸?shù)陌踩?,采用epoll和線(xiàn)程池技術(shù)來(lái)保證其具有高并發(fā)功能。分別設(shè)計(jì)了集成測(cè)試和壓力測(cè)試用例對(duì)服務(wù)器的穩(wěn)定性和可靠性進(jìn)行了測(cè)試。實(shí)驗(yàn)結(jié)果表明,認(rèn)證服務(wù)器在高負(fù)載的情況下運(yùn)轉(zhuǎn)正常。

        關(guān)鍵詞:認(rèn)證服務(wù)器;多線(xiàn)程;對(duì)稱(chēng)加密

        中圖分類(lèi)號(hào):TP309 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)24-0047-03

        Designed and Implemented an Authentication Server with High Concurrency

        FAN Yang-ke1, TANG Jie2

        (1. College of software Shenyang Normal University,Shenyang 110127, China; 2. Hunan University of arts and Science, Changde 415003, China)

        Abstract: In view of the current network security problems emerge in endlessly, designed and implemented an authentication server with high concurrency. This paper adopted the RSA and DES algorithm to ensure the security of information transmission, epoll and thread pool technology is used to ensure the high concurrency. Respectively designed integration test and stress test cases to test the stability and reliability of the server. The experimental results show that the authentication server in the case of high load operating normally.

        Key words: authentication server; multithreading; symmetric encryption

        為了保障信息的安全性,我們一般都采取了數(shù)據(jù)加密和身份認(rèn)證的措施。目前,數(shù)據(jù)的加密與認(rèn)證廣泛地運(yùn)用在基于http協(xié)議的web服務(wù)器中,比如網(wǎng)站的登錄、網(wǎng)上支付等。自從“棱鏡”事件曝光后,如何在越來(lái)越廣的范圍內(nèi)保護(hù)我們的隱私,成為了現(xiàn)在的熱點(diǎn)問(wèn)題。一個(gè)高并發(fā)的服務(wù)器是在短時(shí)間內(nèi)同時(shí)處理大量的來(lái)自客戶(hù)端請(qǐng)求的一個(gè)系統(tǒng)。而現(xiàn)在常用的服務(wù)器如WEB服務(wù)器,游戲服務(wù)器。并發(fā)性都是有限的,因此對(duì)服務(wù)器并發(fā)的研究具有很強(qiáng)的現(xiàn)實(shí)意義。本文介紹一種高并發(fā)功能的認(rèn)證服務(wù)器設(shè)計(jì)。

        1 服務(wù)器端的總體設(shè)計(jì)

        1.1 系統(tǒng)總體框架

        本系統(tǒng)采用C/S設(shè)計(jì)模式,其中必不可少的是套接字編程。高并發(fā)認(rèn)證服務(wù)器的任務(wù)是服務(wù)器對(duì)客戶(hù)端的身份做一個(gè)認(rèn)證。認(rèn)證服務(wù)器首先生成一對(duì)公私鑰對(duì),在接到客戶(hù)端發(fā)來(lái)的認(rèn)證請(qǐng)求后,服務(wù)器將公鑰發(fā)給客戶(hù)端,客戶(hù)端接到服務(wù)器端的響應(yīng)后,生成DES密鑰,用接收來(lái)的服務(wù)器公鑰加密用戶(hù)帳號(hào)UID,用戶(hù)口令USEPASSWORD,用戶(hù)的DES密鑰DESKEY等信息,并將其發(fā)送給服務(wù)器,服務(wù)器用私鑰解密數(shù)據(jù)后,驗(yàn)證用戶(hù)身份的合法性,其序列圖如圖1所示:

        1.2 服務(wù)端框架

        目前基于流式套接字的并發(fā)服務(wù)器是Linux網(wǎng)絡(luò)服務(wù)器主流形式。傳統(tǒng)的基于多進(jìn)程和select機(jī)制的并發(fā)服務(wù)器由于受到系統(tǒng)資源和Linux內(nèi)核版本的限制,已經(jīng)不能滿(mǎn)足高并發(fā)的要求。根據(jù)圖1的描述,本系統(tǒng)采用了epoll和線(xiàn)程池技術(shù),設(shè)計(jì)了一個(gè)大并發(fā)認(rèn)證服務(wù)器。服務(wù)器利用一個(gè)監(jiān)聽(tīng)線(xiàn)程,接受客戶(hù)端的請(qǐng)求后放入連接緩沖區(qū),使用epoll技術(shù)來(lái)做事件觸發(fā),再由線(xiàn)程池中的處理線(xiàn)程處理客戶(hù)端發(fā)來(lái)的認(rèn)證請(qǐng)求。處理線(xiàn)程需要將客戶(hù)信息解密后與存放在MySQL數(shù)據(jù)庫(kù)中的信息進(jìn)行比對(duì),從而完成認(rèn)證過(guò)程。其總體結(jié)構(gòu)圖如圖2所示。

        1.3 epoll服務(wù)器流程

        服務(wù)器的主要工作流程是:① 當(dāng)啟動(dòng)客戶(hù)端后,先應(yīng)確保程序的單實(shí)例運(yùn)行,然后初始化運(yùn)行日志,初始化完成后系統(tǒng)就會(huì)讀取服務(wù)器的配置文件,進(jìn)行命令解析。② 服務(wù)器創(chuàng)建并初始化線(xiàn)程池,創(chuàng)建網(wǎng)絡(luò)環(huán)境并初始化參數(shù),調(diào)用epoll_create 函數(shù)來(lái)創(chuàng)建一個(gè)epollfd 的文件描述符。③ 調(diào)用epoll_ctl 函數(shù)將監(jiān)聽(tīng)套接字注冊(cè)到epoll 事件的等待隊(duì)列中。④ 設(shè)計(jì)在一個(gè)“死循環(huán)”中,調(diào)用調(diào)用epoll_wait 阻塞等待注冊(cè)在epoll 上的sockfd 事件的發(fā)生,依次處理到來(lái)的事件,如果到來(lái)的的事件是監(jiān)聽(tīng)事件,就調(diào)用accept 函數(shù)來(lái)產(chǎn)生連接套接字,并且將這個(gè)套接字也設(shè)置成非阻塞的狀態(tài)注冊(cè)到epoll 的事件等待的隊(duì)列中,如果到來(lái)的事件是表明有已經(jīng)連接的客戶(hù)端的通信數(shù)據(jù)到來(lái),就向線(xiàn)程池中拋入一個(gè)任務(wù)。同時(shí)喚醒空閑的任務(wù)線(xiàn)程來(lái)處理相關(guān)的認(rèn)證業(yè)務(wù)請(qǐng)求。該設(shè)計(jì)最大的好處在于它不會(huì)隨著監(jiān)聽(tīng)fd數(shù)目的增長(zhǎng)而降低效率。因?yàn)樵趦?nèi)核中的select實(shí)現(xiàn)中,它是采用輪詢(xún)來(lái)處理的,輪詢(xún)的fd數(shù)目越多,自然耗時(shí)越多。

        1.4 信息處理模塊

        主要完成功能是生成RSA公鑰對(duì),通過(guò)對(duì)用戶(hù)類(lèi)型判斷,驗(yàn)證客戶(hù)身份,回復(fù)客戶(hù)端。

        1.5 加密設(shè)計(jì)模塊

        基于“對(duì)稱(chēng)密鑰”的加密算法DES算法,把64位的明文輸入塊變?yōu)閿?shù)據(jù)長(zhǎng)度為64位的密文輸出塊,其中8位為奇偶校驗(yàn),另外56位作為密碼的長(zhǎng)度。

        2 關(guān)鍵技術(shù)

        2.1 Socket編程服務(wù)器設(shè)計(jì)

        在本系統(tǒng)中,服務(wù)器的設(shè)計(jì)思想如下:

        1)首先,在使用socket之前,要首先初始化socket,就是使用socket 函數(shù)來(lái)建立一個(gè)套接字,用來(lái)完成通信的監(jiān)聽(tīng)。

        int socket(int domain,int type,int protocol);

        2)在初始化完成以后,利用bind函數(shù)綁定一個(gè)端口和IP地址。

        int bind(int sockfd,struct sockaddr * my_addr,int addr,int addrlen);

        3)調(diào)用listen函數(shù),使服務(wù)器的這個(gè)端口和IP處于監(jiān)聽(tīng)狀態(tài),等待客戶(hù)機(jī)的連接。

        int listen(int s ,int backlog);

        4)使用accept函數(shù)來(lái)接收遠(yuǎn)程計(jì)算機(jī)的連接,建立起與客戶(hù)機(jī)之間的通信。

        int accept(int s,struct sockaddr *addr ,int * addrlen);

        5)在通信的過(guò)程中,服務(wù)器端的產(chǎn)生的新的socket會(huì)通過(guò)一個(gè)消息響應(yīng)函數(shù)recv函數(shù)來(lái)接收到達(dá)的數(shù)據(jù)。數(shù)據(jù)的發(fā)送用send函數(shù)來(lái)完成,當(dāng)數(shù)據(jù)傳輸完畢,雙方都調(diào)用close函數(shù)關(guān)閉各自套接字,終止通信。

        int recv(int s,void * buf,int len,unsigned int flags);

        2.2 線(xiàn)程池技術(shù)

        線(xiàn)程池的作用是有效的降低頻繁創(chuàng)建銷(xiāo)毀線(xiàn)程所帶來(lái)的額外開(kāi)銷(xiāo)。項(xiàng)目中,在服務(wù)器啟動(dòng)之初便預(yù)先創(chuàng)建一定數(shù)目的任務(wù)線(xiàn)程。在運(yùn)行的過(guò)程中,需要時(shí)可以從這些線(xiàn)程所組成的線(xiàn)程池里申請(qǐng)分配一個(gè)空閑的線(xiàn)程,來(lái)執(zhí)行認(rèn)證的任務(wù),任務(wù)完成后,并不是將線(xiàn)程銷(xiāo)毀,而是將它返還給線(xiàn)程池。如果線(xiàn)程池中預(yù)先分配的線(xiàn)程已經(jīng)全部分配完畢,但此時(shí)又有新的任務(wù)請(qǐng)求,則線(xiàn)程池會(huì)動(dòng)態(tài)的創(chuàng)建新的線(xiàn)程去適應(yīng)這個(gè)請(qǐng)求。其工作流程圖見(jiàn)圖3。

        任務(wù)線(xiàn)程是在線(xiàn)程池結(jié)構(gòu)體變量初始化時(shí)啟動(dòng)的線(xiàn)程。任務(wù)線(xiàn)程池中的任務(wù)線(xiàn)程如果檢測(cè)到任務(wù)鏈表中的任務(wù)節(jié)點(diǎn)數(shù)不為零就從任務(wù)鏈表尾(T)取出任務(wù)節(jié)點(diǎn)并執(zhí)行相應(yīng)的任務(wù),同時(shí)讓任務(wù)鏈表中的任務(wù)節(jié)點(diǎn)數(shù)減1.如果任務(wù)鏈表中的任務(wù)節(jié)點(diǎn)為零,就使任務(wù)線(xiàn)程掛起,等待主線(xiàn)程向任務(wù)鏈表中拋入一個(gè)任務(wù)后,再次喚醒空閑的任務(wù)線(xiàn)程執(zhí)行任務(wù)。

        2.3 對(duì)稱(chēng)加密(DES算法)

        基于“對(duì)稱(chēng)密鑰”的加密算法主要有DES、TripleDES、RC2、RC4、RC5和Blowfish等。DES算法把64位的明文輸入塊變?yōu)閿?shù)據(jù)長(zhǎng)度為64位的密文輸出塊,其中8位為奇偶校驗(yàn),另外56位作為密碼的長(zhǎng)度。首先,DES把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L(zhǎng)0、R0兩部分,每部分各長(zhǎng)32位,并進(jìn)行前后置換,最終由L0輸出左32位,R0輸出右32位,根據(jù)這個(gè)法則經(jīng)過(guò)16次迭代運(yùn)算后,得到L16、R16,將此作為輸入,進(jìn)行與初始置換相反的逆置換,即得到密文輸出,圖4為算法流程。

        3 系統(tǒng)運(yùn)行及測(cè)試

        3.1 運(yùn)行環(huán)境

        操作系統(tǒng):Ubuntu Linux(10.10版本),Linux(內(nèi)核2.6版本)數(shù)據(jù)庫(kù):MySQL

        編譯環(huán)境:g++,openssl 庫(kù)函數(shù),ROOT權(quán)限

        3.2 系統(tǒng)集成測(cè)試

        登錄測(cè)試,配置好服務(wù)器及服務(wù)器端數(shù)據(jù)庫(kù),為了驗(yàn)證認(rèn)證服務(wù)器的加密解密算法的正確性,設(shè)計(jì)了一個(gè)正常的客戶(hù)端程序。該程序首先生成DES密鑰,然后向服務(wù)器發(fā)送認(rèn)證請(qǐng)求,在接收到服務(wù)器的公鑰后,用公鑰加密自己的用戶(hù)ID號(hào)、口令和DES密鑰發(fā)送給服務(wù)器。測(cè)試的目的是查看服務(wù)器能否正確解密客戶(hù)端信息并進(jìn)行驗(yàn)證。

        系統(tǒng)壓力測(cè)試,測(cè)試用例1是客戶(hù)端先發(fā)送錯(cuò)誤的UID號(hào)(此次測(cè)試UID=1234)進(jìn)行死循環(huán)訪(fǎng)問(wèn)服務(wù)器,壓力測(cè)試的屏幕截圖如圖5所示。從圖中我們可以看到,因?yàn)閁ID錯(cuò)誤,所以結(jié)果只顯示 connect success,然后直接提示uid error,再關(guān)閉SOCKET,接著循環(huán)繼續(xù)運(yùn)行,所以效果則是刷屏一樣的不停的顯示, 但是不會(huì)因?yàn)閴毫μ蠖鴶嚅_(kāi)。服務(wù)器承受錯(cuò)誤的業(yè)務(wù)運(yùn)行穩(wěn)定。

        測(cè)試用例2是在客戶(hù)端先發(fā)送正確的UID號(hào)(此次測(cè)試UID=12345)與密碼(mima=123456789)進(jìn)行不間斷的死循環(huán)訪(fǎng)問(wèn)服務(wù)器測(cè)試5分鐘。從‘運(yùn)行結(jié)果和‘運(yùn)行日志文件兩個(gè)地方進(jìn)行分析推論出

        一秒鐘運(yùn)行超過(guò)300次,所以相當(dāng)于對(duì)服務(wù)器訪(fǎng)問(wèn)了300次,所以說(shuō)服務(wù)器1秒鐘能承受3000次以上正確的UID與mima驗(yàn)證的訪(fǎng)問(wèn)壓力。5分鐘的訪(fǎng)問(wèn)壓力也不會(huì)讓服務(wù)器承受不了壓力而斷開(kāi)或出錯(cuò),因此服務(wù)器承受正確的業(yè)務(wù)邏輯穩(wěn)定。

        4 結(jié)束語(yǔ)

        論述了高并發(fā)認(rèn)證服務(wù)器的創(chuàng)作思路和整個(gè)項(xiàng)目總體設(shè)計(jì),采用了RSA和DES算法來(lái)保證信息傳輸?shù)陌踩?,采用epoll和線(xiàn)程池技術(shù)來(lái)保證其具有高并發(fā)功能,通過(guò)測(cè)試,認(rèn)證服務(wù)器在高負(fù)載的情況下運(yùn)轉(zhuǎn)正常。該系統(tǒng)作為在短時(shí)間內(nèi)同時(shí)處理大量的來(lái)自客戶(hù)端請(qǐng)求的研究具有很強(qiáng)的現(xiàn)實(shí)意義。

        參考文獻(xiàn):

        [1] 車(chē)永剛, 柳佳,王正華,等.超級(jí)計(jì)算機(jī)體系結(jié)構(gòu)及應(yīng)用情況[J]. 計(jì)算機(jī)工程與科學(xué), 2003, 25(6): 97-100.

        [2] 楊樹(shù)軍, 戴水誦. 超大規(guī)模下集群監(jiān)控管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 高性能計(jì)算發(fā)展與應(yīng)用, 2010(2): 1-4.

        [3] Hoffman F, Cluster Monitoring with Ganglia. Linux Magazine[J]. 2003, 5(7): 46-51.

        猜你喜歡
        多線(xiàn)程
        Java多線(xiàn)程同步機(jī)制在網(wǎng)絡(luò)售票系統(tǒng)中的應(yīng)用
        科技資訊(2016年29期)2017-02-28 09:30:34
        Java并發(fā)工具包對(duì)并發(fā)編程的優(yōu)化
        基于多線(xiàn)程文件傳輸關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
        網(wǎng)頁(yè)爬蟲(chóng)技術(shù)的關(guān)鍵技術(shù)研究探索
        一種基于多線(xiàn)程的高速磁盤(pán)鏡像算法
        iOS并發(fā)程序設(shè)計(jì)中幾種方法的特點(diǎn)及使用技巧研究
        基于Android 的移動(dòng)即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        HTM L5 Web WOrker技術(shù)及應(yīng)用研究
        電站鍋爐煤粉參數(shù)遠(yuǎn)程監(jiān)控系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)
        一種低開(kāi)銷(xiāo)的并行重復(fù)數(shù)據(jù)刪除算法
        国产av一区仑乱久久精品| 亚洲乱码av乱码国产精品| 女优av性天堂网男人天堂| 成人激情视频在线手机观看| 不卡一区二区三区国产| 狠狠色噜噜狠狠狠狠97首创麻豆| 亚洲精品国产suv一区88| а中文在线天堂| 久久成人永久免费播放| 亚洲AV综合久久九九| 精品国产麻豆一区二区三区| 一本一道久久综合久久| 人妻体体内射精一区二区| 亚洲欧美日韩高清专区一区 | 在线观看国产精品91| 美女一区二区三区在线观看视频| 日本人妻系列中文字幕| 亚洲av成人精品日韩在线播放| 无码精品人妻一区二区三区人妻斩 | 国产无遮挡又黄又爽在线视频| 欧美成人免费高清视频| 久久久久亚洲AV片无码乐播| 97人妻精品一区二区三区免费| 变态另类人妖一区二区三区| 欧美丰满熟妇性xxxx| 国产精品久久久久久妇女6080| 伊人亚洲综合网色AV另类| 女同在线视频一区二区 | 冲田杏梨av天堂一区二区三区| 蜜桃18禁成人午夜免费网站| 国产肉体xxxx裸体137大胆| 久久天天躁夜夜躁狠狠躁2022| 欧美精品日韩一区二区三区| 亚洲三级香港三级久久| 男人扒开添女人下部免费视频 | 久久99精品久久久久久野外 | 日韩精品不卡一区二区三区| 日韩精品熟女中文字幕| 开心五月激情综合婷婷| 天堂中文资源在线地址| 欧美国产伦久久久久久久|