引 言: 本文所述的基于SIP協(xié)議的客戶端,采用ActiveX控件嵌入方式,嵌入企業(yè)網(wǎng)站。在客戶使用系統(tǒng)默認(rèn)瀏覽器安全模式下,客戶機通過ActiveX控件方式,在客戶打開企業(yè)網(wǎng)頁時,自動下載到客戶Pc終端,無需客戶安裝軟件。OSIP是使用標(biāo)準(zhǔn)C語言編寫的一個開源SIP協(xié)議棧。本設(shè)計采用0SIP協(xié)議棧并在其基礎(chǔ)上設(shè)計出完整的SIP模塊以完成呼叫管理中心客戶端的信令功能。
1 SIP協(xié)議
IETF組織于1999年提出了一個在基于IP網(wǎng)絡(luò)中實現(xiàn)實時通信的一種信令協(xié)議,會話初始協(xié)議。其作用在于建立、修改、釋放多媒體會話。在會話過程中,SIP只起到保持會話的作用,而會話本身則不是由SIP來完成的。SIP的請求消息中必須給出描述會話特征的信息。
SIP采用客戶端/服務(wù)器的工作方式。SIP網(wǎng)絡(luò)包含了兩類組件:用戶代理和網(wǎng)絡(luò)服務(wù)器。
SIP請求消息是由客戶端發(fā)往服務(wù)器端的消息。共定義了六個方法名:INVITE、ACK、CANCEL、BYE、REGISTER、OPTIONS。SIP應(yīng)答消息是由服務(wù)器返回客戶端的消息,用以指明進程狀態(tài)。
2 OSIP協(xié)議棧分析
OSIP是按照RFC3261和RFC2327標(biāo)準(zhǔn),并使用標(biāo)準(zhǔn)C編寫的一個SIP協(xié)議棧,它是一個公開源碼的免費協(xié)議棧。OSIP協(xié)議棧結(jié)構(gòu)簡單而小巧,它并不提供高層的SIP會話控制的API,它主要提供一些解析SIP俗DP消息的API和事務(wù)處理的狀態(tài)機。OSIP主要包括三大部分的內(nèi)容:解析器模塊、狀態(tài)機模塊和工具模塊。OSIP狀態(tài)機主要分為四種:INVITE客戶端事務(wù)、非INVITE客戶端事務(wù)、INVITE服務(wù)器端事務(wù)、非INⅥTE服務(wù)器端事務(wù)。
3 客戶端的設(shè)計
SIP客戶端的功能主要是以下兩個方面:a.SIP客戶端的注冊功能;b.會話的建立、維持和終止功能??蛻舳丝傮w包括以下幾個部分:主控模塊、SIP模塊、音頻媒體處理模塊、網(wǎng)絡(luò)模塊。其中SIP模塊中包括SIP UA外圍模塊、OSIP協(xié)議棧;音頻媒體處理模塊包括音頻設(shè)備接口模塊、音頻編碼解碼模塊、RTP、RTCP模塊。
3.1 主控模塊
主控模塊完成了用戶界面的設(shè)計,為用戶提供了用戶注冊、發(fā)起會話邀請、接收會話邀請和結(jié)束會話等操作功能。其中當(dāng)選擇使用代理服務(wù)器后。用戶向?qū)Ψ桨l(fā)起砰叫請求時就會通過此代理服務(wù)器進行轉(zhuǎn)發(fā)。此時,用戶僅需要輸入對方的SIP呼叫地址,即可發(fā)出呼叫邀請。當(dāng)接收到呼叫請求時,可以點擊接聽按鈕選擇同意會話。當(dāng)雙方任意一方點擊掛斷按鈕,便終止了會話,程序回到初始狀態(tài)等待下一次會話操作。設(shè)計用戶界面時,建立一個對話框類CsipphoneDlg,在此基礎(chǔ)上創(chuàng)建了界面元素call和disconnect按鈕。用戶界面主要基于一個對話框,主要界面元素有按鈕、輸入框、狀態(tài)欄等。輸入框可以用來輸入SIP地址。在已經(jīng)輸入呼叫地址的情況下,可以選中call”按鈕進行呼叫通信,下方的狀態(tài)欄會顯示服務(wù)器注冊等相應(yīng)狀態(tài)信息。通信時,若有一方想結(jié)束對話,可以點擊disconnect”按鈕結(jié)束對話。
在主控模塊中完成了對SIP模塊、網(wǎng)絡(luò)傳輸模塊、和音頻處理模塊的初始化工作,給各個模塊分配了資源,創(chuàng)建了各模塊的對象,調(diào)用相應(yīng)程序初始化甬?dāng)?shù)。
3.2 SIP模塊
在OSIP特點分析中,我們提到OSIP結(jié)構(gòu)比較簡單,并不提供SIP消息的上層管理功能,因此我們需要自己設(shè)計UA外嗣模塊。UA外圍模塊是以O(shè)SIP協(xié)議棧為核心的UA級別的模塊,主要負(fù)責(zé)對OSIP協(xié)議棧的管理,接受用戶發(fā)出的消息或者指令并將其轉(zhuǎn)換成相應(yīng)的事件交由狀態(tài)機進行處理。OSIP協(xié)議棧和其上層的UA外圍模塊共同組成SIP模塊,完成了SIP會話功能。
UA外圍模塊主要包括四個類:SipUA、SipManager、SipDialog、SipMessage。
SipUA主要封裝了本地uA需要使用的一些必要信息,比如本地uA的標(biāo)識、本地主機的IP地址、SIP端口等等。在程序初始化的時候創(chuàng)建本地UA實例,對本地UA信息進行管理,同時也調(diào)用函數(shù)對OSIP協(xié)議棧進行初始化。SipUA以通過set-all-callbacks()函數(shù)注冊了回調(diào)甬?dāng)?shù)。大部分的回調(diào)函數(shù)用來使底層狀態(tài)機將當(dāng)前事件執(zhí)行狀態(tài)通知給上層TU,等待TU對其作出處理。利用回調(diào)機制可以使底層狀態(tài)機同上層Tu協(xié)調(diào)運作,共同完成事務(wù)的處理工作。
SipManager用來管理本地UA上運行的OSIP協(xié)議棧。SipManager對象包含一個OSIP核心協(xié)議棧的osip—t對象。在OSIP結(jié)構(gòu)分析中我們談到osip-t包含了所有狀態(tài)機調(diào)用的回調(diào)函數(shù),它用來對所有回調(diào)甬?dāng)?shù)進行管理。因此SipManager通過osip-t對象實現(xiàn)了對核心協(xié)議棧中完成交互功能的回調(diào)甬?dāng)?shù)的管理。
SipDialog實現(xiàn)了對話的管理工作。它包含了OSIP協(xié)議棧中對話塒象dialog-t,其在某一對話開始時對對話的ID、對話的類型、和當(dāng)前對話的狀態(tài)等進行設(shè)置。SipDidog類也包含了一系列的事務(wù)對象指針,在程序運行時指向當(dāng)前對話正在處理的事務(wù)。
SipMessage主要實現(xiàn)了對話處理、SDP消息處理等具體功能。在對話處理方面,OSIP協(xié)議棧已經(jīng)提供了SIP對話處理的基本機制,UA層在它的基礎(chǔ)上設(shè)計了UA級別的對話處理方法。這些塒話處理函數(shù)實現(xiàn)了基于對話的UA發(fā)送會話請求,產(chǎn)生應(yīng)答以及對話管理等高層用戶調(diào)用功能;為應(yīng)用程序?qū)硬僮鱏IP模塊提供了接口。
3.3 網(wǎng)絡(luò)傳輸模塊
Socket是一種基于TCP/IP的網(wǎng)絡(luò)編程接口,它采用客戶端,服務(wù)器通信模式,客戶端和服務(wù)器端通過Socket接幾在剛絡(luò)上實現(xiàn)連接和數(shù)據(jù)交換。它提供了一系列系統(tǒng)調(diào)用,使得用戶可以方便的使用TCP和UDP等網(wǎng)絡(luò)協(xié)議實現(xiàn)通信。由于UDP提供的是無連接、不可靠的數(shù)據(jù)報傳遞服務(wù),傳輸效率比較高,特別適合于實時性要求高的數(shù)據(jù)傳輸場合。同時在SIP模塊中SIP信令采取的重傳機制和握手機制,避免了SIP消息數(shù)據(jù)在傳輸過程中的丟包現(xiàn)象,因此本文采用UDP的數(shù)據(jù)報模式實現(xiàn)了SIP電話終端中的信令消息和音頻媒體信息的傳輸。
3.4 音頻媒體處理模塊
音頻多媒體通信功能由終端中的音頻設(shè)備接口模塊、音視頻編解碼模塊和RTP模塊共同完成,我們把它們合稱為音頻多媒體處理模塊。媒體處理模塊是Windows平臺SIP終端得重要組成部分,它負(fù)責(zé)原始音頻、視頻數(shù)據(jù)的采集、編碼和回放等功能。本文音頻處理部分采用Windows提供的底層音頻函數(shù)來實現(xiàn),將G729作為音頻壓縮方案,RTP實時傳輸控制部分采用RTPLIB庫開發(fā)實現(xiàn)。
4 總 結(jié)
設(shè)計了一個基于SIP的在線呼叫管理中心客戶端。基于SIP協(xié)議的客戶機采用ActiveX控件嵌入方式,嵌入企業(yè)網(wǎng)站。在客戶使用系統(tǒng)默認(rèn)瀏覽器安全模式下,客戶機通過AetiveX控件方式。在客戶打開企業(yè)網(wǎng)頁時,自動下載到客戶PC終端,無需客戶安裝軟件。目前基于SIP協(xié)議的客戶端項目還在進行當(dāng)中,該系統(tǒng)功能還不是十分完善,一些問題沒有解決,還存在許多需要進一步研究的地方。本系統(tǒng)對視頻編解碼格式還不支持,不能實現(xiàn)視頻對話,下一步可以考慮傲視頻語音編碼的項目,通過改進客戶端的媒體庫,增強系統(tǒng)性能。
總之,SIP協(xié)議作為一個新興而結(jié)合NGN要求的技術(shù)極具發(fā)展?jié)摿?。隨著下一代網(wǎng)絡(luò)的到來和3G通信技術(shù)的發(fā)展,對這一協(xié)議的研究會具有越來越重要的現(xiàn)實意義。