技術(shù)領(lǐng)域
本發(fā)明涉及互聯(lián)網(wǎng)電視領(lǐng)域,更具體的說,它涉及用于基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法。
背景技術(shù):
HTTP(超文本傳輸協(xié)議)協(xié)議是建立在TCP傳輸協(xié)議之上的應(yīng)用層協(xié)議,它的發(fā)展是萬維網(wǎng)協(xié)會(huì)和Internet工作小組IETF合作的結(jié)果。HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡潔、快速的方式,適用于分布式超媒體信息系統(tǒng)。普通的http應(yīng)用服務(wù)端都是利用,struct、servlet、spring等技術(shù)部署到tomcat、Jboss等容器中。但是普通http協(xié)議安全級別低,比較容易被盜取閱讀,且普通的基于struts,servlet的http服務(wù)器,處理客戶端請求時(shí),是不支持異步非阻塞的,故效率比較低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明克服了現(xiàn)有技術(shù)的不足,提供了一種處理請求效率高,安全級別高的基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法,從而更符合現(xiàn)在注重安全的趨勢。
本發(fā)明的技術(shù)方案如下:
基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法,具體包括如下步驟:
101)封裝信息步驟:以Netty作為核心框架,將關(guān)鍵信息封裝到自定義http協(xié)議的包頭中;所述自定義http協(xié)議包括主線程池、子線程池和請求接收器,所述主線程池只用于客戶端的登陸、握手和安全認(rèn)證,一旦鏈路建立成功,就將鏈路注冊到后端子線程池的IO線程上,由IO線程負(fù)責(zé)后續(xù)的IO操作;所述子線程池以worker線程池為主,其包括執(zhí)行具體工作的handler,編解碼器;所述請求接收器,用于監(jiān)聽來自客戶端的連接請求;
102)第一次加密步驟:在步驟101)后,利用包頭的秘鑰對http封裝的信息進(jìn)行第一次內(nèi)容加密;
103)第二次加密步驟:在步驟102)處理后的http封裝的信息轉(zhuǎn)換為二進(jìn)制碼進(jìn)行第二次內(nèi)容加密,并傳輸出去。
進(jìn)一步的,所述http請求內(nèi)容加密前是一個(gè)json字符串。
進(jìn)一步的,所述步驟101)中關(guān)鍵信息為,請求內(nèi)容對應(yīng)的身份信息,將這些信息寫入請求包頭中,作為通信的身份識別。
進(jìn)一步的,身份信息包括接口地址和設(shè)備信息。
進(jìn)一步的,所述第一次內(nèi)容加密用設(shè)備對應(yīng)的唯一秘鑰,作為包頭的秘鑰進(jìn)行RSA加密。
進(jìn)一步的,所述連接請求都會(huì)被存儲(chǔ)到事件池map <String ,Context> 中,map為事件池表,String為事件唯一ID,Context為請求的上下文。
本發(fā)明相比現(xiàn)有技術(shù)優(yōu)點(diǎn)在于:本發(fā)明設(shè)計(jì)合理,成本節(jié)約,可以大大提高了服務(wù)器端http協(xié)議的收發(fā)速度。通過Netty封裝自定義http協(xié)議,可以根據(jù)業(yè)務(wù)需要定制自己的規(guī)則。Netty封裝自定義http協(xié)議使得安全性達(dá)到另一個(gè)高度,內(nèi)容的保密性得到了很好的保護(hù),不像普通的http協(xié)議那么容易被破解和閱讀,并且可以進(jìn)行長期穩(wěn)定的運(yùn)行,為后期維護(hù)減少了很大工作量。
附圖說明
圖1為本發(fā)明基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法的處理流程圖;
圖2為本發(fā)明基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法的傳輸內(nèi)容加密圖;
圖3為本發(fā)明基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法的具體加密處理流程圖;
圖4為本發(fā)明基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法的自定義協(xié)議框架圖;
圖5為本發(fā)明基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法的非阻塞事件處理流程圖。
具體實(shí)施方式
下面通過具體實(shí)施例,并結(jié)合附圖,對本發(fā)明的技術(shù)方案作進(jìn)一步的具體說明。應(yīng)當(dāng)理解,本發(fā)明的實(shí)施并不局限于下面的實(shí)施例,對本發(fā)明所做的任何形式上的變通和 / 或改變都將落入本發(fā)明保護(hù)范圍。
如圖1所示,基于Netty封裝的自定義互聯(lián)網(wǎng)電視http協(xié)議方法,具體包括如下步驟:
101)分裝信息步驟:以Netty作為核心框架,將關(guān)鍵信息封裝到自定義http協(xié)議的包頭中,所述關(guān)鍵信息為,請求內(nèi)容對應(yīng)的接口地址和設(shè)備信息等身份信息,將這些信息寫入請求包頭中,去作為通信的身份識別。
102)第一次加密步驟:在步驟101)后,利用包頭的秘鑰對http請求內(nèi)容進(jìn)行第一次內(nèi)容加密,加密前是一個(gè)json字符串,json是一種輕量級的數(shù)據(jù)交換格式,此次內(nèi)容加密用設(shè)備對應(yīng)的唯一秘鑰,作為包頭的秘鑰進(jìn)行RSA加密,即公鑰加密方法。
103)第二次加密步驟:在步驟102)處理后的http封裝的信息轉(zhuǎn)換為二進(jìn)制碼進(jìn)行第二次內(nèi)容加密,并傳輸出去。即如圖2所示,一份請求內(nèi)容A要進(jìn)行傳輸,則自定義http協(xié)議加密,首先對http請求包頭:將MSG即請求接口二級地址,和Device_id即設(shè)備信息等身份信息寫入請求包頭中。再對http請求內(nèi)容一次加密,用設(shè)備對應(yīng)的唯一秘鑰進(jìn)行RSA加密,即公鑰加密方法。最后進(jìn)行http請求內(nèi)容二次加密,將第一次加密后的字符串進(jìn)行轉(zhuǎn)換,轉(zhuǎn)成二進(jìn)制碼進(jìn)行傳輸。這樣就能對通過自定義http協(xié)議的內(nèi)容在網(wǎng)絡(luò)上傳輸?shù)臅r(shí)候就亂碼,無法閱讀。只有持有私鑰的用戶,和持有公鑰的服務(wù)端才能對信息進(jìn)行加解密,然后才能閱讀和解析。
如圖3至圖5所示,所述自定義http協(xié)議包括主線程池、子線程池和請求接收器,所述主線程池只用于客戶端的登陸、握手和安全認(rèn)證,一旦鏈路建立成功,就將鏈路注冊到后端子線程池的IO線程上,由IO線程負(fù)責(zé)后續(xù)的IO操作,所述子線程池以worker線程池為主,即worker線程池為子線程池的主線程,其包括執(zhí)行具體工作的handler即handler用于異步消息的處理執(zhí)行,編解碼器,所述請求接收器,用于監(jiān)聽來自客戶端的連接請求,并且對于每一次通過自定義http協(xié)議進(jìn)行連接請求進(jìn)行收發(fā),都會(huì)被存儲(chǔ)到事件池map <String ,Context> 中,map為事件池表,String為事件唯一ID,Context為請求的上下文。只要對線程收發(fā)、處理過程中維護(hù)處理好這個(gè)事件池,就可以實(shí)現(xiàn)自定義的非阻塞事件處理線程池。即一個(gè)客戶端請求過來,先由mainReactor即主線程池與客戶端的建立鏈路。再由Acceptor即請求接收器接收來自客戶端的請求,接著主線程池將Acceptor接受到的線程,分配給SubReactor即子線程池,由子線程池將每個(gè)請求事件,放入到worker線程池請求隊(duì)列中。所述子線程池中由專門的handler協(xié)議,對身份信息進(jìn)行合法性校驗(yàn),并且線程池按先進(jìn)先出的順序,將請求隊(duì)列中的請求事件,調(diào)度到線程池的工作線程中執(zhí)行。所述的工作線程,則專門解碼解析內(nèi)容的合法性;然后處理具體業(yè)務(wù);最后將返回內(nèi)容進(jìn)行加密。處理完后線程最后會(huì)回收給線程池;返回信息回寫給事件池,所述事件池包括有監(jiān)聽器,監(jiān)聽器監(jiān)聽到就緒狀態(tài)的事件,就可以直接通過請求接收器返回給客戶端。最后關(guān)閉連接,完成一次任務(wù)。
以上所述的實(shí)施例只是本發(fā)明的一種較佳的方案,并非對本發(fā)明作任何形式上的限制,在不超出權(quán)利要求所記載的技術(shù)方案的前提下還有其它的變體及改型。