周欣 倫立寶 張庚 劉革
(1 江西省電力公司 江西 南昌 330077)
(2 河北遠(yuǎn)東哈里斯通信有限公司 河北 石家莊 050200)
(3 中國電力科學(xué)研究院 北京 100192)
(4 四川省電力公司 四川 成都 610041)
基于XMPP擴(kuò)展協(xié)議的遠(yuǎn)程控制系統(tǒng)研制
周欣1倫立寶2張庚3劉革4
(1 江西省電力公司 江西 南昌 330077)
(2 河北遠(yuǎn)東哈里斯通信有限公司 河北 石家莊 050200)
(3 中國電力科學(xué)研究院 北京 100192)
(4 四川省電力公司 四川 成都 610041)
隨著網(wǎng)絡(luò)的發(fā)展,遠(yuǎn)程控制技術(shù)得到越來越廣泛的應(yīng)用。針對目前實(shí)際應(yīng)用中遠(yuǎn)程控制存在的可達(dá)性不可靠、不夠安全以及不易擴(kuò)展等問題,對XMPP協(xié)議系統(tǒng)架構(gòu)、消息格式、安全機(jī)制以及擴(kuò)展性進(jìn)行研究,通過擴(kuò)展XMPP協(xié)議,設(shè)計(jì)了一種采用基于XMPP擴(kuò)展協(xié)議的即時(shí)通信客戶端作為控制端,通過“客戶端-服務(wù)器”到“服務(wù)器-客戶端”的模式架構(gòu)進(jìn)行通信的遠(yuǎn)程控制系統(tǒng)。通過系統(tǒng)仿真,驗(yàn)證了系統(tǒng)的有效性和可行性。
遠(yuǎn)程控制 XMPP 協(xié)議擴(kuò)展 XML
遠(yuǎn)程控制[1]是指由一臺設(shè)備(電腦、PDA或手機(jī)等)在一定的距離之外去控制另一臺設(shè)備的技術(shù)。傳統(tǒng)的遠(yuǎn)程控制通常相互孤立,不利于拓展和再開發(fā),同時(shí)由于其中間要經(jīng)過的網(wǎng)絡(luò)環(huán)境比較多,所以具有可達(dá)性不可靠、不定延時(shí)和不夠安全等缺點(diǎn)。XMPP協(xié)議采用開放結(jié)構(gòu),可擴(kuò)展性強(qiáng)。采用XMPP服務(wù)器,不同的客戶端只要能夠訪問XMPP服務(wù)器即可保證其連通性,能夠有效跟蹤雙向控制信息到達(dá)的時(shí)間和邏輯順序。因此可以對XMPP協(xié)議進(jìn)行擴(kuò)展,設(shè)計(jì)一種基于XMPP擴(kuò)展協(xié)議的遠(yuǎn)程控制系統(tǒng)。
2.1 XMPP概述
XMPP是基于可擴(kuò)展標(biāo)記語言(XML)的協(xié)議,可用于服務(wù)類實(shí)時(shí)通訊、表示和需求響應(yīng)服務(wù)中的XML數(shù)據(jù)元流式傳輸。該協(xié)議可以使具有不同操作系統(tǒng)和瀏覽器的用戶通過因特網(wǎng)向其他任何因特網(wǎng)用戶發(fā)送即時(shí)消息。XMPP廣泛應(yīng)用于基于C/S(Client/Server)結(jié)構(gòu)的系統(tǒng),采用TCP協(xié)議進(jìn)行網(wǎng)絡(luò)通信,不局限于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。XMPP的網(wǎng)絡(luò)架構(gòu)[2]如圖1所示。
圖1 XMPP網(wǎng)絡(luò)架構(gòu)
2.2 XMPP協(xié)議的消息格式
XMPP是一個基于XML流的協(xié)議[3],XMPP在結(jié)構(gòu)上有3種數(shù)據(jù):XML流、XML節(jié)和流認(rèn)證。
①XML流是網(wǎng)絡(luò)上任意2個實(shí)體之間進(jìn)行XML元素交換的容器,XML流起始標(biāo)記為,是通信雙方采用異步方式進(jìn)行數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)方法,控制系統(tǒng)正常的通信,在整個通信過程中處于最外層。在流的整個生命周期,初始化其實(shí)體可以通過流來發(fā)送大量的XML元素,實(shí)現(xiàn)接收實(shí)體和初始實(shí)體之間的信息交換;
②XML節(jié)存在于流節(jié)點(diǎn)的下級,是通過XML流傳輸?shù)牟贿B續(xù)的結(jié)構(gòu)化信息單元,為通信雙方進(jìn)行內(nèi)容交換提供通信框架。XML節(jié)的開始都由深度為1的XML流的開始標(biāo)記元素表示,結(jié)尾由相應(yīng)的深度為1的關(guān)閉標(biāo)記表示。在XMPP協(xié)議中定義了3個節(jié)點(diǎn),分別為
③流認(rèn)證是在XML流中有關(guān)協(xié)商傳輸層安全協(xié)議、簡單認(rèn)證與安全層協(xié)議、服務(wù)器回?fù)苷J(rèn)證協(xié)議完成通信認(rèn)證和加密等目的的數(shù)據(jù)交互,是XMPP安全機(jī)制的重要組成部分。任何客戶端到服務(wù)器、服務(wù)器到服務(wù)器之間的消息傳遞,其底層通信都是通過XML流來實(shí)現(xiàn)的。
2.3 XMPP協(xié)議安全機(jī)制
網(wǎng)絡(luò)服務(wù)安全系統(tǒng)主要體現(xiàn)在這4個方面[4]:認(rèn)證、授權(quán)、數(shù)據(jù)保護(hù)和認(rèn)可。XMPP在協(xié)議層提供了多層的安全措施。由于在協(xié)議里直接對安全措施做出要求,所以任何XMPP的實(shí)現(xiàn)都要完成。認(rèn)證用來保證網(wǎng)絡(luò)的各個環(huán)節(jié)都能得到相應(yīng)的服務(wù)。授權(quán)決定了請求者是否可以使用請求的內(nèi)容。數(shù)據(jù)保護(hù)用來保證傳輸過程中數(shù)據(jù)的機(jī)密性和完整性。認(rèn)可指確保信息發(fā)送者和創(chuàng)建者的一致性。XMPP協(xié)議采用認(rèn)證和加密的辦法提供一個覆蓋4個要素的安全框架,建立連接階段采用SASL(簡單認(rèn)證和安全層協(xié)議)進(jìn)行認(rèn)證。傳輸階段通過TLS(傳輸層安全)協(xié)議進(jìn)行加密。鑒于XMPP的應(yīng)用目的,其客戶端的身份認(rèn)證的重要性比其他系統(tǒng)大得多。用戶必須在它所注冊的服務(wù)器進(jìn)行認(rèn)證,用戶不會因簡單將信息頭改變事件而被欺騙。
2.4 XMPP擴(kuò)展
XMPP繼承了在XML環(huán)境中靈活的發(fā)展性?;赬MPP的應(yīng)用可以通過發(fā)送擴(kuò)展的信息來處理用戶的需求,具有超強(qiáng)的可擴(kuò)展性。
為了實(shí)現(xiàn)遠(yuǎn)程控制,可以在i/q節(jié)上通過增加命名空間和子元素,對XMPP協(xié)議進(jìn)行擴(kuò)展。主要增加
3.1 系統(tǒng)概述
系統(tǒng)的控制端采用基于XMPP擴(kuò)展協(xié)議的即時(shí)通訊客戶端,便于對系統(tǒng)進(jìn)行推廣和功能擴(kuò)展。系統(tǒng)通信采用“客戶端-服務(wù)器”到“服務(wù)器-客戶端”的模式架構(gòu)??蛻舳送ㄟ^先注冊后登陸的方式,有效地防止“非法”用戶的操作,具有較高的安全性。
3.2 系統(tǒng)總體架構(gòu)
整個系統(tǒng)由用戶終端模塊、服務(wù)器模塊、控制終端模塊和被控終端模塊組成,如圖2所示。
圖2 系統(tǒng)總體架構(gòu)圖
各個模塊的功能如下:
①用戶終端作為控制信息發(fā)起的源頭以及反饋信息接收的終點(diǎn),可以是電腦、手機(jī)或其他可與XMPP服務(wù)器進(jìn)行交互,具有可視化操作界面的終端,需要向XMPP服務(wù)器進(jìn)行注冊和登陸,主要用來發(fā)送用戶指令和接受反饋信息;
②服務(wù)器模塊作為XMPP通訊的管理者,主要管理連接到服務(wù)器的實(shí)體間的會話,負(fù)責(zé)將用戶的指令信息傳送給控制終端。系統(tǒng)XMPP服務(wù)器采用功能完備、安全性高和易于管理的Openfire服務(wù)器。在整個遠(yuǎn)程控制系統(tǒng)中,XMPP服務(wù)器僅起橋梁作用,控制雙方只需各自接入互聯(lián)網(wǎng)并連接到服務(wù)器即可;
③控制終端模塊是信息指令的解析模塊,可以是電腦或手機(jī)等智能終端,同樣采用基于XMPP協(xié)議的客戶端,需要向XMPP服務(wù)器進(jìn)行注冊和登陸,接收XML指令信息流并將其翻譯成被控終端設(shè)備能夠處理的控制命令,傳輸給終端設(shè)備,同時(shí)也負(fù)責(zé)向設(shè)備用戶反饋控制信息。系統(tǒng)采用控制端來接收和解析XML用戶指令,并不涉及具體的被控終端設(shè)備,可以方便地在控制終端添加或者刪除對被控終端設(shè)備的操作信息,提高系統(tǒng)的可擴(kuò)展性;
④被控終端主要是需要進(jìn)行遠(yuǎn)程控制的各種終端設(shè)備,根據(jù)控制終端發(fā)出的指令執(zhí)行相應(yīng)的動作,并將操作成功與否的信息反饋給控制終端。
3.3 系統(tǒng)通信機(jī)制
系統(tǒng)通信過程主要由4個通信模塊構(gòu)成:用戶終端與XMPP服務(wù)器之間的通信,XMPP服務(wù)器與XMPP服務(wù)器之間的通信,XMPP服務(wù)器與控制終端之間的通信,以及控制終端與被控終端設(shè)備之間的通信。
①用戶終端與XMPP服務(wù)器之間的通信,主要是將用戶指令傳輸給XMPP服務(wù)器。XMPP服務(wù)器與控制終端之間的通信,主要是將用戶的XML指令信息流傳輸給控制終端,并將控制終端的反饋信息發(fā)送給服務(wù)器。用戶終端和控制終端作為XMPP客戶端,與XMPP服務(wù)器之間進(jìn)行通信交換信息之前需要建立流。通過TLS協(xié)商和SASL認(rèn)證來確保流的安全傳輸,對端到端通信的內(nèi)容主體可采用加密傳進(jìn)。通信方式分為有線連接和無線連接2種,實(shí)現(xiàn)其傳輸?shù)膮f(xié)議主要有GPRS、HTTP和Wi-Fi等;
②XMPP服務(wù)器之間的通信主要是實(shí)現(xiàn)XML信息流的傳遞,可以采用指定通信雙方的方式進(jìn)行管理,一臺服務(wù)器只與指定的服務(wù)器進(jìn)行通信。服務(wù)器之間需要建立一定程度的信任關(guān)系才能夠進(jìn)行通信。如果信任關(guān)系已經(jīng)存在,則可以繼續(xù)沿用,同時(shí)采用SASL為雙方通信提供認(rèn)證;
③控制終端與被控終端設(shè)備之間的通信,主要是為了將解析出的控制指令傳輸給終端設(shè)備,同時(shí)控制終端接收終端設(shè)備的反饋信息。為了方便,一般選用無線方式進(jìn)行傳輸,如藍(lán)牙和ZigBee等。
4.1 客戶端實(shí)現(xiàn)
用戶終端采用基于XMPP擴(kuò)展協(xié)議的客戶端,客戶端的開發(fā)采用C#語言來實(shí)現(xiàn),根據(jù)客戶端的任務(wù)要求,客戶端采用分層設(shè)計(jì)[5],如圖3所示。
連接層主要提供通信鏈接功能。系統(tǒng)采用TCP套接字鏈接方式,用戶在客戶端初始化后發(fā)起連接請求,TCP從用戶界面模塊中得到用戶名、密碼和服務(wù)器地址等輸入信息,然后與服務(wù)器建立TCP連接。
圖3 客戶端分層結(jié)構(gòu)
XMPP層包括2個模塊:協(xié)議功能模塊和解析模塊。在系統(tǒng)客戶端中處于核心位置。XMPP協(xié)議功能模塊:負(fù)責(zé)管理客戶端與服務(wù)器端、客戶端與客戶端之間的通信進(jìn)程,包括用戶注冊、會話建立和即時(shí)消息交換等。XMPP解析模塊:負(fù)責(zé)對輸入的信息進(jìn)行XMPP編碼。對于用戶發(fā)送的控制指令信息,需要給出
應(yīng)用程序接口層主要為交互界面提供統(tǒng)一接口調(diào)用。GUI層主要負(fù)責(zé)提供一個便于操作的友好圖形界面,分為用戶登錄界面和顯示界面,采用WPF技術(shù)進(jìn)行界面的設(shè)計(jì)與實(shí)現(xiàn)??刂平K端同樣采取基于XMPP擴(kuò)展協(xié)議的客戶端,在具有用戶終端所具有的基本功能外,還需提供如下功能:①對終端設(shè)備數(shù)據(jù)信息的顯示,包括設(shè)備的基本屬性信息和工作狀態(tài)信息;②通過發(fā)送定制控制指令信息,改變終端設(shè)備的工作狀態(tài)。
4.2 服務(wù)器端實(shí)現(xiàn)
系統(tǒng)采用基于XMPP協(xié)議的Openfire作為服務(wù)器端。Openfire[6]是一個采用純Java語言開發(fā)的、基于XMPP協(xié)議的和可跨平臺的開源實(shí)時(shí)協(xié)作服務(wù)端軟件平臺,采用插件方式,方便進(jìn)行功能擴(kuò)展。Openfire能夠?qū)Σ煌磿r(shí)通訊軟件之間通信的應(yīng)用提供支持。
XMPP客戶端與Openfire服務(wù)器通過創(chuàng)建連接完成信息流的交互,主要包括:請求認(rèn)證和消息處理。
①請求認(rèn)證:服務(wù)器對請求連接進(jìn)行監(jiān)聽,一旦發(fā)現(xiàn)連接請求,立即調(diào)用信息處理模塊對請求包內(nèi)的XML消息進(jìn)行處理。如果認(rèn)證條件滿足,則將該認(rèn)證結(jié)果反饋給發(fā)起連接請求的客戶端,并開啟一個新的會話來傳輸該客戶端的信息,直到客戶端關(guān)閉信息流為止;如果認(rèn)證條件不滿足,則將認(rèn)證失敗的結(jié)果反饋給請求客戶端。若用戶是第一次發(fā)起連接請求,則要先完成用戶注冊,再接受請求認(rèn)證。
②消息處理:認(rèn)證通過后,服務(wù)器會依據(jù)客戶端的JID來建立不同的會話,每個會話均由獨(dú)立的線程來管理,為保證會話的效率,對這些線程采用線程池的策略進(jìn)行管理。由于即時(shí)通訊需要保證實(shí)時(shí)性,服務(wù)器必須實(shí)時(shí)監(jiān)測好友客戶端的在線情況,只有確認(rèn)客戶端在線,才能將信息實(shí)時(shí)地傳送過去。
4.3 遠(yuǎn)程控制具體流程
基于XMPP可擴(kuò)展協(xié)議的遠(yuǎn)程控制具體流程如下:①用戶通過安裝有即時(shí)通訊客戶端的手機(jī)或PC終端注冊并登陸XMPP服務(wù)器;②用戶通過客戶端發(fā)送控制指令;③XMPP服務(wù)器接收控制指令并對其進(jìn)行處理,通過Internet網(wǎng)絡(luò)傳遞給目標(biāo)XMPP服務(wù)器;④目標(biāo)XMPP服務(wù)器接收到XML信息流后將其發(fā)送給控制終端;⑤控制終端解析XML信息流并將其“翻譯”成被控設(shè)備終端能夠接受的指令,傳輸給被控終端;⑥被控終端設(shè)備接收到指令信息后,采取相應(yīng)的操作,并將操作成功與否的信息反饋給控制終端;⑦控制終端收到反饋信息后將其通過XMPP服務(wù)器發(fā)送給系統(tǒng)用戶;⑧系統(tǒng)用戶收到反饋信息并確定下一步動作。上述流程步驟給出了一個基于XMPP可擴(kuò)展協(xié)議的遠(yuǎn)程控制流程系統(tǒng)的總體思路。在具體實(shí)現(xiàn)過程,尚有很多工作要做。
XMPP協(xié)議由于其易于實(shí)現(xiàn)的方式、開放的框架結(jié)構(gòu)以及嚴(yán)密的語法描述,廣泛用于即時(shí)通訊領(lǐng)域。通過對XMPP協(xié)議進(jìn)行擴(kuò)展,開發(fā)基于XMPP擴(kuò)展協(xié)議的即時(shí)通訊控制終端并將其用于遠(yuǎn)程控制系統(tǒng),可以使遠(yuǎn)程控制運(yùn)行在各種常用的設(shè)備上,具有良好的通用性,便于業(yè)務(wù)的擴(kuò)展。同時(shí),由于XMPP支持SSL128位加密傳輸,保障了系統(tǒng)的安全性。
[1]肖云鵬,李茜.基于SIP和P2P的移動設(shè)備遠(yuǎn)程控制[J].重慶郵電大學(xué)學(xué)報(bào),2008,20(5):617-620.
[2]王龍濤.基于XMPP協(xié)議的服務(wù)器關(guān)鍵技術(shù)研究[D].西安電子科技大學(xué),2008(1):8-9.
[3]吳玉婷.基于XMPP協(xié)議的即時(shí)消息系統(tǒng)的研究與實(shí)現(xiàn)[D].西安電子科技大學(xué),2009(3):12-13.
[4]苗凱.XMPP的安全機(jī)制分析[J].通信技術(shù),2003(8): 101-105.
[5]蔣恒.基于XMPP遠(yuǎn)程視頻培訓(xùn)咨詢系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[D].湖南大學(xué),2011(9):34-38.
[6]潘鳳,王華軍,苗放,等.基于XMPP協(xié)議和Openfire的即時(shí)通信系統(tǒng)的開發(fā)[J].計(jì)算機(jī)時(shí)代,2008(3):15-16.
Development of Remote Control System Based on XMPP Extended Protocol
ZHOU Xin1,LUN Li-bao2,ZHANG Geng3,LIU Ge4
(1 Jiangxi Electric Power Corporation,Nanchang Jiangxi 330077,China)
(2 Hebei Far-east Harris Communications Co.,Ltd.,Shijiazhuang Hebei 050200,China)
(3 China Electric Power Research Institute,Beijing 100192,China)
(4 Sichuan Electric Power Corporation,Chengdu Sichuan 610041,China)
With the development of network,the remote control technology is widely used.Aiming at such problems as unreliable accessibility,inadequate security and unexpansibility existing in current real application of remote control,the XMPP protocol system architecture,the message format,the security mechanism and the extensibility are studied.By extending the XMPP protocol,the remote control system is designed,which uses the instant messaging client based on XMPP extended protocol as the control terminal and implements communication through the“client-server”to“server-client”pattern architecture.The system simulation results prove the effectiveness and feasibility of system.
remote control;XMPP;protocol extension;XML
TP393
A
1008-1739(2014)02-66-4
定稿日期:2013-12-26