《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于Android的SIP軟交換系統(tǒng)手機(jī)客戶端
基于Android的SIP軟交換系統(tǒng)手機(jī)客戶端
2014年微型機(jī)與應(yīng)用第13期
王 冬1,2,班正宇1
1.瓊州學(xué)院 電子信息工程學(xué)院,,2.海南省嵌入式系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,海南 三亞
摘要: 結(jié)合Android平臺(tái)的NDK集合,,設(shè)計(jì)及開(kāi)發(fā)了在Android平臺(tái)上使用SIP協(xié)議的軟件使之能通過(guò)SIP軟交換服務(wù)器進(jìn)行通話,,并針對(duì)性地提出以太網(wǎng)數(shù)據(jù)包的過(guò)濾策略,完善了數(shù)據(jù)包解析模塊,,實(shí)現(xiàn)了SIP軟交換系統(tǒng)的功能擴(kuò)展,。系統(tǒng)將C語(yǔ)言開(kāi)發(fā)的模塊全部改用跨平臺(tái)的Java來(lái)編寫(xiě),較傳統(tǒng)的SIP軟交換系統(tǒng)而言,,其可移植性更強(qiáng),。
Abstract:
Key words :

  摘  要: 結(jié)合Android平臺(tái)的NDK集合,設(shè)計(jì)及開(kāi)發(fā)了在Android平臺(tái)上使用SIP協(xié)議的軟件使之能通過(guò)SIP軟交換服務(wù)器進(jìn)行通話,,并針對(duì)性地提出以太網(wǎng)數(shù)據(jù)包的過(guò)濾策略,,完善了數(shù)據(jù)包解析模塊,實(shí)現(xiàn)了SIP軟交換系統(tǒng)的功能擴(kuò)展,。系統(tǒng)將C語(yǔ)言開(kāi)發(fā)的模塊全部改用跨平臺(tái)的Java來(lái)編寫(xiě),,較傳統(tǒng)的SIP軟交換系統(tǒng)而言,其可移植性更強(qiáng),。

  關(guān)鍵詞: SIP,;數(shù)據(jù)包過(guò)濾,;Android

  傳統(tǒng)程控交換使用硬件電路實(shí)現(xiàn)硬交換,而軟交換是指用軟件實(shí)現(xiàn)電話交換能力,,軟交換則采用服務(wù)器+軟件的形式實(shí)現(xiàn)電話的尋號(hào)/接續(xù)/呼叫流程處理,。VoIP(Voice over Internet Protocol)是一種建立在互聯(lián)網(wǎng)上的數(shù)字化或分組化的語(yǔ)音傳輸技術(shù),會(huì)話發(fā)起協(xié)議(SIP)是VoIP中常用的控制協(xié)議,。移動(dòng)互聯(lián)網(wǎng)時(shí)代,,移動(dòng)設(shè)備用戶可根據(jù)需要連接互聯(lián)網(wǎng)。當(dāng)今移動(dòng)設(shè)備終端中最流行的操作系統(tǒng)是Android系統(tǒng),,因此,,只要在Android系統(tǒng)上開(kāi)發(fā)支持SIP協(xié)議的軟件,就能夠運(yùn)用VoIP技術(shù)實(shí)現(xiàn)語(yǔ)音通話,。

  目前已有的SIP軟交換系統(tǒng)的硬件由SIP服務(wù)器,、網(wǎng)絡(luò)連接設(shè)備(如交換機(jī))和SIP電話機(jī)構(gòu)成,因此存在成本過(guò)高,、終端設(shè)備易損壞,、攜帶不便等缺點(diǎn),而本研究實(shí)現(xiàn)的系統(tǒng)則由SIP服務(wù)器,、Wi-Fi和智能手機(jī)構(gòu)成,。這樣使智能手機(jī)軟件代替了終端設(shè)備的電話機(jī),節(jié)省了成本,,軟件實(shí)現(xiàn)方面,,本系統(tǒng)結(jié)合SIP軟交換系統(tǒng)和SIP數(shù)據(jù)包的結(jié)構(gòu),運(yùn)用Android系統(tǒng)的軟件開(kāi)發(fā)技術(shù)實(shí)現(xiàn)移動(dòng)終端設(shè)備的語(yǔ)音通話功能,,擴(kuò)展了SIP軟交換系統(tǒng)的功能和服務(wù)質(zhì)量[1-2],。

  1 系統(tǒng)需求分析

  從功能可將系統(tǒng)劃分為以下兩部分。

 ?。?)服務(wù)器功能,。服務(wù)器是為用戶提供信息交換和信息處理而開(kāi)發(fā)的,所以它必須具備信息處理功能和信息交換功能,。

 ?。?)Android客戶端功能??蛻舳吮仨毦邆溥B接服務(wù)器IP地址的功能、發(fā)送語(yǔ)音消息功能以及解析收到的數(shù)據(jù)并把數(shù)據(jù)還原為語(yǔ)音消息的功能,。

  頂層數(shù)據(jù)流圖如圖1所示,。

001.jpg

  2 系統(tǒng)設(shè)計(jì)

  2.1 Proxy Server的運(yùn)作模式

002.jpg

  以圖2為例,A([email protected])先送出一個(gè)INVITE信息呼叫B([email protected]),,Proxy Server收到后則進(jìn)行查詢,,由查詢結(jié)果可知目前B實(shí)際的地址為[email protected],,于是Proxy Server便會(huì)再以[email protected]發(fā)出INVITE信息,B在回復(fù)200 OK時(shí)(200表示服務(wù)器回送的響應(yīng)狀態(tài)碼,,OK表示請(qǐng)求成功),,會(huì)將200 OK的Response(響應(yīng))傳給Proxy Server,再由Proxy Server轉(zhuǎn)送給A,。

  2.2 Android外線呼叫運(yùn)作模式

  Android外線呼叫運(yùn)作模式如圖3所示,。其關(guān)鍵步驟與內(nèi)線呼叫類似,主要區(qū)別步驟在于:F8,、F9網(wǎng)關(guān)向Proxy回送183 Session Progress響應(yīng),,表示呼叫已在處理[3]。

003.jpg

  2.3 系統(tǒng)可移植性

  軟件的可移植性是指在一定程度上,,軟件從一種環(huán)境移植到另一種環(huán)境后還能正常工作的能力,,屬于軟件質(zhì)量的范疇,良好的可移植性可延長(zhǎng)軟件的生命周期,。

  原有的SIP軟交換系統(tǒng)大部分模塊均采用跨平臺(tái)的Java開(kāi)發(fā),,但也有部分模塊或局部地區(qū)是采用C開(kāi)發(fā)的,如版權(quán)認(rèn)證模塊,。要實(shí)現(xiàn)系統(tǒng)整體的可移植性,,最簡(jiǎn)單的方法就是完全采用Java來(lái)開(kāi)發(fā)該系統(tǒng)。

  版權(quán)認(rèn)證模塊的改良與設(shè)計(jì):對(duì)于服務(wù)器軟件,,版權(quán)認(rèn)證最重要的就是能試用于多網(wǎng)卡和群服務(wù)器,,并且認(rèn)證文件不被篡改、破解,,這里使用serial(序列號(hào))+MAC(地址)+max(最大用戶數(shù))+expiration(到期日期)+key(許可證密匙)的認(rèn)證方式,,通過(guò)license.xml文件來(lái)承載認(rèn)證信息,將license.xml文件傳給客戶,,復(fù)制到系統(tǒng)的特定位置,,系統(tǒng)啟動(dòng)時(shí)通過(guò)構(gòu)造XML解析器來(lái)解析license.xml文件核對(duì)信息完成認(rèn)證[4]。

  3 數(shù)據(jù)庫(kù)設(shè)計(jì)

  3.1 系統(tǒng)E-R圖

  SIP服務(wù)器的實(shí)體E-R圖如圖4所示,。

004.jpg

  其主要屬性如下,。(1)Android客戶:記錄每個(gè)連接到服務(wù)器的客戶端IP地址;(2)IP地址:SIP服務(wù)器IP地址,;(3)客戶端編號(hào):客戶端連接服務(wù)器后,,服務(wù)器將分配一個(gè)短號(hào)給客戶端,客戶端可通過(guò)短號(hào)相互呼叫,;(4)最大連接數(shù):連接到服務(wù)器的客戶端最大數(shù)量,;(5)時(shí)間:服務(wù)器啟動(dòng)的時(shí)間;(6)服務(wù)器記錄:記錄服務(wù)器運(yùn)行信息,;(7)網(wǎng)關(guān):撥打外線電話時(shí),,需要通過(guò)網(wǎng)關(guān),。

  Android客戶端實(shí)體E-R圖如圖5所示。

005.jpg

  其主要屬性如下,。(1)手機(jī)IP:每個(gè)連入網(wǎng)絡(luò)的手機(jī)都分配唯一的IP地址,。(2)服務(wù)器地址:SIP服務(wù)器IP地址。(3)被尋呼者:記錄被呼叫的另外一個(gè)客戶端別名(編號(hào)),。(4)客戶端編號(hào):本手機(jī)的客戶端編號(hào),。(5)服務(wù)器類型:即SIP服務(wù)器。(6)解碼編碼器:客戶端撥打電話時(shí),,需要將語(yǔ)音消息編碼成二進(jìn)制代碼,,而被呼叫的客戶端收到信息時(shí)需要將二進(jìn)制代碼解碼為原來(lái)的語(yǔ)音消息。

  3.2 數(shù)據(jù)表的結(jié)構(gòu)

  本系統(tǒng)一共使用了47張數(shù)據(jù)表,,由于表與表之間的關(guān)系過(guò)于復(fù)雜,,因此只選出其中具有代表性的兩張表。注意SIP服務(wù)器表和Android客戶端的表并沒(méi)有列出來(lái),,以下的兩張表足以說(shuō)明SIP服務(wù)器和Android客戶端的關(guān)系,,spm_job表用于保存服務(wù)器運(yùn)行時(shí)的信息,id為主鍵,。如表1所示,。

008.jpg

  t_gw_extension主要用來(lái)保存網(wǎng)關(guān)信息記錄,gw_id為主鍵,,如表2所示,。

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

  4.1 SIP軟交換系統(tǒng)健壯性和穩(wěn)定性運(yùn)行與測(cè)試

  在以太網(wǎng)錯(cuò)綜復(fù)雜的環(huán)境下,SIP軟交換系統(tǒng)作為服務(wù)器軟件,,必須能穩(wěn)定運(yùn)行并對(duì)用戶提供可靠高效的服務(wù),。系統(tǒng)除了能處理正常業(yè)務(wù)數(shù)據(jù),還應(yīng)該能夠及時(shí)識(shí)別和丟棄以太網(wǎng)中“非法”的無(wú)用數(shù)據(jù)包,,即系統(tǒng)本身應(yīng)該具有數(shù)據(jù)包的過(guò)濾方法與策略,。

  為研究SIP數(shù)據(jù)包的格式,本設(shè)計(jì)抓取某SIP軟交換系統(tǒng)服務(wù)器網(wǎng)卡收發(fā)的SIP協(xié)議的數(shù)據(jù)包,。利用網(wǎng)絡(luò)抓包工具Wireshark(一款免費(fèi)的網(wǎng)絡(luò)協(xié)議檢測(cè)程序),。抓取數(shù)據(jù)包的步驟如下。(1)選取抓獲網(wǎng)絡(luò)設(shè)備列表,;(2)打開(kāi)一個(gè)接口開(kāi)始捕獲數(shù)據(jù)包,;(3)數(shù)據(jù)包的過(guò)濾設(shè)置;(4)捕獲數(shù)據(jù)包,;(5)在捕獲到所需數(shù)據(jù)包后,,根據(jù)需要進(jìn)行后續(xù)工作[5]。

  在接收到一個(gè)以太網(wǎng)數(shù)據(jù)幀時(shí),,在協(xié)議棧的數(shù)據(jù)從底部啟動(dòng),,同時(shí)消除對(duì)報(bào)文協(xié)議報(bào)頭的層。協(xié)議必須檢查每一個(gè)數(shù)據(jù)包的協(xié)議標(biāo)識(shí)符頭,,以確定上層協(xié)議來(lái)接收數(shù)據(jù),,然后分析可定制的規(guī)則事先需要的內(nèi)容,如數(shù)據(jù)包的源IP,、目的IP和源端口號(hào)等,,如圖6所示。

006.jpg

  4.2 SIP數(shù)據(jù)包的預(yù)過(guò)濾策略的測(cè)試和運(yùn)行

  參照SIP數(shù)據(jù)包的分析,,只有請(qǐng)求消息是SIP終端發(fā)向服務(wù)器的,,即對(duì)服務(wù)器存在的數(shù)據(jù)包只可能是請(qǐng)求消息。因而只需要解析請(qǐng)求消息,,在服務(wù)器正式解析之前提前識(shí)別并過(guò)濾有可能影響系統(tǒng)正常運(yùn)行的數(shù)據(jù)包,,保證系統(tǒng)穩(wěn)定運(yùn)行[6]。具體步驟如下,。

 ?。?)解析前預(yù)處理方法:限制“合法”數(shù)據(jù)包最小長(zhǎng)度,小于最小長(zhǎng)度的數(shù)據(jù)包全部丟棄,,最小長(zhǎng)度應(yīng)根據(jù)實(shí)際情況靈活確定,。

  (2)檢索數(shù)據(jù)是否含有行結(jié)束標(biāo)志CRLF(Windows)或者LF(UNIX/Linux),。

 ?。?)檢索Request-Line中是否含有SIP版本信息(如SIP/2.0)。

 ?。?)檢索Request-Line中是否包含Method關(guān)鍵字,。

  (5)檢索Request-Line中Request-URI是否符合規(guī)定格式,。

  SIP系統(tǒng)本身也要對(duì)正常業(yè)務(wù)的數(shù)據(jù)包進(jìn)行解析,,在解析的過(guò)程中發(fā)現(xiàn)數(shù)據(jù)包異常并及時(shí)丟棄,這樣既能保證系統(tǒng)的健壯性,,又能節(jié)約系統(tǒng)解析這些異常數(shù)據(jù)包時(shí)的開(kāi)銷,,保證系統(tǒng)穩(wěn)定運(yùn)行的同時(shí)也保證了系統(tǒng)的執(zhí)行效率。服務(wù)器接收到的數(shù)據(jù)包經(jīng)過(guò)濾策略處理后,,基本可以過(guò)濾掉非SIP數(shù)據(jù)包,,接下來(lái)的“非法”數(shù)據(jù)包應(yīng)該就是偽SIP包或者是因?yàn)槟撤N原因?qū)е率У腟IP數(shù)據(jù)包,而這一類數(shù)據(jù)包暫時(shí)不必進(jìn)行過(guò)濾,,可將其視為正常數(shù)據(jù)包[7],。運(yùn)行效果如圖7所示。

007.jpg

  圖7說(shuō)明SIP軟交換系統(tǒng)能抓取所有的網(wǎng)絡(luò)流量,過(guò)濾出SIP消息,,測(cè)試SIP消息能否能順利發(fā)出,。

  本研究對(duì)SIP軟交換系統(tǒng)在Android平臺(tái)上的實(shí)現(xiàn)始終遵循審視問(wèn)題、分析問(wèn)題,、升華問(wèn)題,、解決問(wèn)題、總結(jié)擴(kuò)展的方針路線,,從軟件品質(zhì)擴(kuò)展的角度對(duì)SIP軟交換系統(tǒng)進(jìn)行改進(jìn),,系統(tǒng)中采用數(shù)據(jù)包過(guò)濾策略可對(duì)服務(wù)器軟件的維護(hù)、網(wǎng)絡(luò)安全的構(gòu)筑提供參考和借鑒,。而系統(tǒng)硬件則由SIP服務(wù)器,、Wi-Fi和智能手機(jī)構(gòu)成,可實(shí)現(xiàn)中小企業(yè)網(wǎng)內(nèi)智能手機(jī)免費(fèi)通話,,同時(shí)也可撥打外線電話,,可降低企業(yè)內(nèi)通信成本,具有進(jìn)一步挖掘的市場(chǎng)潛力,。

009.jpg

  參考文獻(xiàn)

  [1] 蔣紹林,,王金雙,張濤,,等.Android安全研究綜述[J].計(jì)算機(jī)應(yīng)用與軟件,,2012,10(29):205-210.

  [2] 吳綱.IP包處理技術(shù)淺析與展望[J].計(jì)算機(jī)與網(wǎng)絡(luò),,2010,,5(3):257-260.

  [3] 朱劍鋒.基于SIP的IP-PBX呼叫保留功能的實(shí)現(xiàn)[J].信息與電腦,2009,,9(12):27-31.

  [4] 林海泉,,楊磊,朱劍鋒.SIP軟交換系統(tǒng)的版權(quán)認(rèn)證[J].瓊州學(xué)院學(xué)報(bào),,2012,,9(3):47-53.

  [5] 張振剛.移動(dòng)通信軟交換網(wǎng)絡(luò)安全機(jī)制研究[J].網(wǎng)絡(luò)與通信,2004,,6(36):37-41.

  [6] 劉應(yīng)平.局域網(wǎng)異常數(shù)據(jù)包監(jiān)控與處理系統(tǒng)的設(shè)計(jì)[J].電腦開(kāi)發(fā)與運(yùn)用,,2010,9(12):21-25.

  [7] 廖永紅,,李洛,,黃戰(zhàn).基于IP包內(nèi)容的Windows包過(guò)濾技術(shù)的實(shí)現(xiàn)[J].電腦與信息技術(shù),2001,,5(3):4-7.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。