周寧寧 王希常
摘要:本文分析了SIP、RTP/RTCP等協(xié)議的設(shè)計(jì)功能及實(shí)現(xiàn)機(jī)制,論述了基于SIP協(xié)議的考場監(jiān)控系統(tǒng)的基本功能、技術(shù)體系及實(shí)現(xiàn)方式,指出了基于SIP協(xié)議考場監(jiān)考系統(tǒng)未來發(fā)展的前景和存在的問題。文中對(duì)相關(guān)協(xié)議的說明使用了圖示和示例數(shù)據(jù)展示,借助Wireshark和FreeSwitch對(duì)SIP協(xié)議會(huì)話方式和流程進(jìn)行了分析。
關(guān)鍵詞:SIP協(xié)議 RTP/RTCP FreeSWITCH 考場監(jiān)控系統(tǒng)
中圖分類號(hào):TP277 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)08-0105-03
1 引言
近年來,考試的種類紛繁多樣,各種各樣的考試是國家挑選人才的方式之一。考場監(jiān)控系統(tǒng)不僅可以大幅度提高考場監(jiān)控的監(jiān)管能力,保證考試的質(zhì)量和公平,而且能有力推進(jìn)考場管理的現(xiàn)代化進(jìn)程。SIP協(xié)議用于建立、調(diào)整和終止多媒體的呼叫或者會(huì)話的應(yīng)用層協(xié)議,具有良好的擴(kuò)展性和兼容性,其協(xié)議具有標(biāo)準(zhǔn)、靈活、簡單等特點(diǎn),適合考場監(jiān)控系統(tǒng)的應(yīng)用,論文在介紹SIP協(xié)議的基礎(chǔ)上,對(duì)SIP協(xié)議在考場監(jiān)控系統(tǒng)的運(yùn)用做出詳細(xì)描述。
2 SIP協(xié)議
SIP(Session Initiation Protocol)協(xié)議是由IETF提出來的一個(gè)應(yīng)用控制(信令)協(xié)議,用于創(chuàng)建、修改以及終結(jié)多個(gè)參與者參加的多媒體的會(huì)話進(jìn)程[1]。這些會(huì)話包括多媒體會(huì)議、多媒體發(fā)布、遠(yuǎn)程教學(xué)等。使用SIP協(xié)議的目的是為了在IP網(wǎng)絡(luò)上建立完整的通信服務(wù)體系,SIP協(xié)議廣泛用于電路交換CS、NGN下一代網(wǎng)絡(luò)、IMS IP多媒體子系統(tǒng)等幾個(gè)方面。
2.1 SIP協(xié)議的組成
SIP協(xié)議中的元素可分為用戶代理(UA)和中間服務(wù)器[2]。用戶代理(User Agent UA)又分為用戶代理客戶端(User Agent Client UAC)和用戶代理服務(wù)器(User Agent Server UAS),用戶代理客戶端是表示呼叫控制請(qǐng)求的發(fā)出方,而用戶代理服務(wù)器則是表示響應(yīng)呼叫請(qǐng)求的處理方。網(wǎng)絡(luò)服務(wù)器包括三部分,分別是代理服務(wù)器,重定向服務(wù)器,和注冊(cè)服務(wù)器。代理服務(wù)器包括有狀態(tài)代理服務(wù)器和無狀態(tài)代理服務(wù)器,有狀態(tài)代理服務(wù)器是指記錄所到的請(qǐng)求和發(fā)出的請(qǐng)求消息,用來控制以后的消息處理和消息的分支功能。無狀態(tài)代理服務(wù)器通過請(qǐng)求消息選擇轉(zhuǎn)發(fā)的目的和路由,它既是客戶機(jī)又是服務(wù)器,主要是用于路由選擇,將用戶請(qǐng)求和響應(yīng)轉(zhuǎn)發(fā)到下一跳,消息一旦發(fā)出,立即丟棄。重定向服務(wù)器的作用類似于DNS,是用于地址解析。注冊(cè)服務(wù)器的作用是接收終端的注冊(cè)請(qǐng)求,記錄終端SIP URI和IP地址。SIP協(xié)議也可以在不需要服務(wù)器的情況下進(jìn)行通信,只需要知道彼此的地址即可。
SIP協(xié)議包含兩個(gè)重要的邏輯是實(shí)體,即位置服務(wù)器和背靠背用戶代理(B2BUA),位置服務(wù)器是用來存儲(chǔ)用戶的邏輯地址與聯(lián)系地址的綁定列表,作為一個(gè)全局?jǐn)?shù)據(jù)庫為注冊(cè)服務(wù)器、代理服務(wù)器與重定向服務(wù)器服務(wù)。背靠背用戶代理除了作為UAS接受請(qǐng)求消息并對(duì)消息進(jìn)行處理,還作為UAC來發(fā)送請(qǐng)求消息借此來判斷消息是如何應(yīng)答,F(xiàn)reeSWITCH的一個(gè)典型的應(yīng)用即是作為B2BUA,它作為一個(gè)背靠背用戶代理幫助通信的雙方進(jìn)行實(shí)時(shí)的語音視頻通信。
2.2 SIP消息格式
SIP消息是基于文本的,主要分為兩大類:一類是由客戶端發(fā)往服務(wù)器的請(qǐng)求消息(Request),一類是由服務(wù)器發(fā)往客戶端的應(yīng)答消息(Response)。一個(gè)SIP消息由一個(gè)起始行,一個(gè)或多個(gè)頭字段域,結(jié)束空行和一個(gè)可選的消息體組成。
起始行又包括兩部分:SIP請(qǐng)求消息的起始行稱為請(qǐng)求行,SIP應(yīng)答消息的起始行稱為狀態(tài)行。請(qǐng)求行(Request-line)格式表示為:method Request-URI SIP-Version CRLF。
method是指這個(gè)請(qǐng)求消息用的什么方法進(jìn)行請(qǐng)求,RFC3261中定義了六種方法分別是INVITE、ACK、OPTION、BYE、CANCEL、REGISTER,需要注意的是ACK只能和INVITE請(qǐng)求一起使用。Request-URI,它的格式是SIP URI=SIP user:password@host:port:parameters:headers,SIP URI的前綴必須是sip:,user為用戶名,password是密碼,host為主機(jī)地址,port為端口,password這一項(xiàng)可選填,host選項(xiàng)可能是域名也可能是IPV4或IPV6地址。例如:SIP:hello@163.com和SIP:hello@192.164.0.8均是正確。SIP-Version指的是SIP協(xié)議的版本,在RFC3261中規(guī)定的是SIP/2.0。CRLF:代表回車換行,表示的是每一行的結(jié)束。
狀態(tài)行(Status-Line)格式表示為:SIP-Version Status-Code Reason-Phrase CRLF。
SIP-Version指的是SIP協(xié)議的版本,SIP/2.0。Status-Code:狀態(tài)碼,是狀態(tài)行中最重要的知識(shí),是一個(gè)3位整數(shù),描述的是請(qǐng)求的執(zhí)行結(jié)果,狀態(tài)碼可分的類別分別是1XX,2XX,3XX,4XX,5XX,6XX。其中只有1XX為臨時(shí)應(yīng)答,其他的均為最終應(yīng)答。Reason-Phrase:原因短語,是對(duì)狀態(tài)碼的文本描述。CRLF:同樣代表回車換行,表示的是每一行的結(jié)束。
SIP協(xié)議定義了多種擴(kuò)展方法,本論文中用到的方法是MESSAGE方法和INFO方法,MESSAGE方法是會(huì)話之外消息能夠傳遞及時(shí)信。INFO方法是呼叫建立之后建立的信令通路,可以是呼叫方與被呼叫方用戶代理之間的直接信令。
2.3 SIP協(xié)議會(huì)話
SIP協(xié)議的主要意義是對(duì)會(huì)話進(jìn)行發(fā)起和終結(jié),也就是處理和控制會(huì)話,SIP協(xié)議會(huì)話的方式有兩種,一種是UA之間的直接通信,另一種是通過代理服務(wù)器進(jìn)行呼叫通信。
UA之間的通信SIP協(xié)議會(huì)話分為3個(gè)階段:建立會(huì)話、通信階段和終止會(huì)話[4]。
SIP協(xié)議的會(huì)話過程在建立會(huì)話階段,主叫方首先向被叫方發(fā)送一個(gè)INVITE請(qǐng)求,被叫方接收到邀請(qǐng)之后回復(fù)一個(gè)OK來響應(yīng),主叫方則發(fā)送ACK報(bào)文作為確認(rèn),此時(shí)建立會(huì)話部分結(jié)束。在通信階段中,主叫方與被叫方就可以進(jìn)行通話,通話完畢之后,雙方則可通過BYE請(qǐng)求進(jìn)行結(jié)束會(huì)話。
實(shí)際應(yīng)用中SIP地址會(huì)經(jīng)常發(fā)生改變,通常通過使用代理服務(wù)器的方式來進(jìn)行通信,通過代理服務(wù)器的通信方式比較復(fù)雜,所以借助Wireshark分析工具(Wireshark是一個(gè)網(wǎng)絡(luò)封包分析軟件)對(duì)具體的通信流程進(jìn)行抓包分析。圖1 是通過在實(shí)驗(yàn)過程中捕獲的數(shù)據(jù)包繪制成的通信流程圖,其中222.19.226.92地址表示的是FreeSWITCH服務(wù)器的地址,而222.19.226.143和222.19.226.40則分別表示兩個(gè)SIP協(xié)議UA的IP地址,為了分析方便,分別稱之為UA1和UA2。
FreeSWITCH 是一個(gè)免費(fèi)、開源的通信軟件,可用于創(chuàng)建音、視頻以及短消息類產(chǎn)品和應(yīng)用,它的核心庫libfreeswitch可以嵌入其它系統(tǒng)或產(chǎn)品中,也可以做一個(gè)單獨(dú)的應(yīng)用存在,SIP通信更多用到的是身處兩個(gè)不同地方的UA之間的通信,這時(shí)候通信雙方就要注冊(cè)到FreeSWITCH服務(wù)器上,借助該服務(wù)器進(jìn)行通信,圖2即是通過代理服務(wù)器呼叫通信流程圖。
UA1通過消息向發(fā)起請(qǐng)求,要求與UA2進(jìn)行通信,此時(shí)FreeSWITCH作為一個(gè)UAS接受請(qǐng)求并進(jìn)行響應(yīng)通過100Trying消息告知它已經(jīng)收到了他的請(qǐng)求。但是發(fā)現(xiàn)FreeSWITCH還不認(rèn)識(shí)UA1,不確定UA1是否有權(quán)進(jìn)行請(qǐng)求,所以通過407消息通知UA1,UA1回送ACK消息,告訴FreeSWITCH服務(wù)器已經(jīng)接收到認(rèn)證消息,重新發(fā)送邀請(qǐng)信息,F(xiàn)reeSWITCH服務(wù)器向UA1發(fā)送100Trying消息,代表已經(jīng)接收到邀請(qǐng)消息。接下來呼叫進(jìn)入路由階段,F(xiàn)reeSWITCH服務(wù)器根據(jù)路由查找到UA2的位置,通過發(fā)送邀請(qǐng)信息建立通信連接,與UA2建立通信連接后,回送183消息給UA1,UA2接聽的同時(shí)回送200OK信息給FreeSWITCH服務(wù)器,F(xiàn)reeSWITCH服務(wù)器發(fā)送ACK消息給UA2,同時(shí)發(fā)送200OK消息給UA1,UA1回送ACK消息給FreeSWITCH服務(wù)器,則UA1與UA2之間可以進(jìn)行通信。最后通過BYE消息結(jié)束通信。UA1與UA2可以進(jìn)行通信,所有的語音數(shù)據(jù)都是通過RTP進(jìn)行傳送。
3 RTP/RTCP協(xié)議
流媒體技術(shù)就是把連續(xù)的媒體信息經(jīng)過壓縮處理后放在網(wǎng)絡(luò)服務(wù)器上,以流的形式進(jìn)行數(shù)字媒體的傳遞,讓用戶可以一邊下載一邊觀看或者收聽,而不需等待整個(gè)媒體文件下載完畢[5]。流媒體技術(shù)的特點(diǎn)是不能保存在硬盤上成為用戶文件,因此,需要使用RTP協(xié)議(Real-Time Transport Protocol)實(shí)時(shí)傳輸協(xié)議以及RTCP協(xié)議(Real-Time Transport Control Protocol)實(shí)時(shí)傳輸控制協(xié)議來進(jìn)行實(shí)時(shí)傳輸。
3.1 作用
RTP協(xié)議與RTCP協(xié)議是配合使用的,這樣可以保證傳輸質(zhì)量,RTP協(xié)議只是提供端到端的傳輸,但是不提供任何服務(wù)質(zhì)量保證,它需要依靠RTCP一起來提供流量控制和擁塞控制服務(wù),RTCP協(xié)議是RTP協(xié)議的一部分,是用來提供RTP服務(wù)質(zhì)量監(jiān)控和保證;RTP協(xié)議傳送的是多媒體數(shù)據(jù),RTCP協(xié)議傳送的與服務(wù)質(zhì)量相關(guān)的很短的統(tǒng)計(jì)信息,二者均是通過UDP報(bào)文進(jìn)行消息傳送。
3.2 傳送過程
在RTP協(xié)議中,首先將經(jīng)過壓縮編碼處理后的多媒體數(shù)據(jù)塊封裝成為RTP分組,RTP分組后再裝入運(yùn)輸層的UDP用戶數(shù)據(jù)報(bào),然后再向下傳遞給IP層[6]。客戶端將接受到RTP數(shù)據(jù)包進(jìn)行處理后進(jìn)行解碼顯示。
在數(shù)據(jù)發(fā)送接收過程中,服務(wù)器端和客戶端會(huì)周期性的發(fā)送和接收RTCP包進(jìn)行的服務(wù)質(zhì)量的監(jiān)視和反饋。RTCP定義了五種類型的控制分組[7]:
SR控制分組:發(fā)送端報(bào)告控制分組,其作用是利用SR控制分組提高質(zhì)量反饋信息。
RR控制分組:接收端報(bào)告控制分組,與SR控制分組不同,主要有兩方面:一是分組類型不同,SR控制分組的PT為200,RR控制分組的PT為201。二是RR不包括發(fā)送端信息部分。
SD控制分組:資源描述控制分組,作用是作為標(biāo)實(shí)信息的載體。
BYE控制分組:結(jié)束控制分組,表示關(guān)閉一個(gè)數(shù)據(jù)流。
APP控制分組:特定應(yīng)用分組,表示應(yīng)用程序能夠定義新的分組類型。
4 基于SIP協(xié)議的考場監(jiān)控系統(tǒng)設(shè)計(jì)
SIP協(xié)議是會(huì)話初始協(xié)議,是用于建立、調(diào)整和終止一個(gè)或多個(gè)參與者的會(huì)話,將SIP協(xié)議應(yīng)用于考場監(jiān)控系統(tǒng)具有以下優(yōu)勢:一是SIP協(xié)議是基于文本的編碼方式和字符集,方便讀取,便于調(diào)試;二是最少的狀態(tài),代理服務(wù)器可以在無狀態(tài)的方式下進(jìn)行工作,呼叫過程簡單;三是低層協(xié)議無關(guān)性,SIP協(xié)議與傳輸層是分開的,使用UDP進(jìn)行傳輸,可與用戶進(jìn)行方便的連接。
考場監(jiān)控系統(tǒng)一般需要具備以下幾個(gè)功能:
(1)視頻采集功能:能夠采集到考場中每一個(gè)角落里的視頻信號(hào),這里的視頻信號(hào)既包括考生的視頻信號(hào),又包括監(jiān)考老師的視頻信號(hào),并且需要保證足夠清晰,有足夠的幀頻,方便進(jìn)行查看、記錄、取證。能夠采集到考場中每一個(gè)角落的聲音信號(hào),既包括考生與監(jiān)考老師的聲音,也包括動(dòng)作所發(fā)出的聲音,這里需要注意的是一定要保證聲音信號(hào)有足夠的帶寬,這樣才能區(qū)分開聲音的來源。
(2)多路視頻的自動(dòng)記錄功能:考場監(jiān)控面對(duì)的是多個(gè)考場的監(jiān)控,因此,需要具備自動(dòng)記錄功能,并且要有足夠的存儲(chǔ)量。
(3)系統(tǒng)智能化功能:視頻采樣智能化功能,能夠自動(dòng)根據(jù)考場監(jiān)控的畫面考生動(dòng)作幅度的大小進(jìn)行相應(yīng)記錄,動(dòng)作幅度大的考生進(jìn)行較多信息記錄。聲音取樣智能化,能夠自動(dòng)地根據(jù)說話聲音的強(qiáng)度進(jìn)行相應(yīng)記錄,對(duì)于聲音大的考生應(yīng)進(jìn)行較多信息的記錄,反之,簡單記錄即可。還應(yīng)能區(qū)分考生和監(jiān)考人員不同性質(zhì)的動(dòng)作。
基于SIP協(xié)議的考場監(jiān)考系統(tǒng)應(yīng)該關(guān)注兩個(gè)部分,一部分是客戶端通過SIP協(xié)議與服務(wù)器端進(jìn)行連接,同時(shí),服務(wù)器端也會(huì)將一些信息發(fā)送給客戶端,如圖3考場監(jiān)控系統(tǒng)的工作過程所示。第二部分是考場監(jiān)控系統(tǒng)的四個(gè)組成部分,如圖4考場監(jiān)控系統(tǒng)框架圖所示。
考場監(jiān)控系統(tǒng)構(gòu)成大致分為監(jiān)控前端、傳輸網(wǎng)絡(luò)、監(jiān)控中心、用戶終端4個(gè)組成部分[8]。其中,監(jiān)控前端由視頻服務(wù)器和攝像頭組成,主要完成信號(hào)采集、處理以及前端攝像頭的控制工作,一個(gè)視頻服務(wù)器就代表了一個(gè)SIP標(biāo)準(zhǔn)的設(shè)備集合。考場監(jiān)控管理平臺(tái)是具有顯示、存儲(chǔ)、報(bào)警的指揮中心,是系統(tǒng)信息管理和共享核心,注冊(cè)服務(wù)器,代理服務(wù)器,重定向服務(wù)器,定位服務(wù)器是SIP服務(wù)器的重要組成部分。注冊(cè)服務(wù)器用來完成UAS的注冊(cè),當(dāng)注冊(cè)服務(wù)器收到位置信息時(shí)會(huì)上傳到定位服務(wù)器,定位服務(wù)器是為注冊(cè)服務(wù)器、代理服務(wù)器、重定向服務(wù)器提供服務(wù)的。代理服務(wù)器具有代理前一個(gè)用戶向下一跳服務(wù)器發(fā)送呼叫請(qǐng)求由服務(wù)器決定下一跳地址。監(jiān)控終端也是一個(gè)標(biāo)準(zhǔn)的SIP設(shè)備,可以實(shí)現(xiàn)用戶的代理,可以對(duì)監(jiān)控資源進(jìn)行訪問及控制,是系統(tǒng)的信息服務(wù)對(duì)象。監(jiān)控資源是指圖像、聲音的采集設(shè)備,是系統(tǒng)監(jiān)控信息的平臺(tái)傳輸網(wǎng)絡(luò)可以使用公共通信網(wǎng)絡(luò)、專網(wǎng),也可以使用獨(dú)立網(wǎng)絡(luò),是連接監(jiān)控資源、監(jiān)控中心和用戶終端的中介。
5 結(jié)語
SIP協(xié)議的應(yīng)用使得考場監(jiān)考系統(tǒng)讀取方便,易于調(diào)試,可以以最少的狀態(tài)方便與用戶進(jìn)行連接,具有極大的靈活性和擴(kuò)展性,在未來的發(fā)展中具有很強(qiáng)的實(shí)用意義。同時(shí)應(yīng)該注意SIP協(xié)議只提供了會(huì)話建立的機(jī)制,完成考場監(jiān)控還須得到其他相關(guān)會(huì)話內(nèi)容描述協(xié)議的支持,這將是下一步研究的重點(diǎn)。
參考文獻(xiàn)
[1]劉瑞祥,許立群,劉寶妹.基于SIP即時(shí)信息系統(tǒng)的客戶端設(shè)計(jì)[J].計(jì)算機(jī)科學(xué),2010,37(9):104-106.
[2]龔猷龍.基于視頻監(jiān)控系統(tǒng)的PTP與SIP協(xié)議[D].北京:北京郵電大學(xué),2008.
[3]Gonzalo Camarillo著,白建軍等譯SIP揭密[M].北京:人民郵電出版社,2003.
[4]梁偉堅(jiān).基于SIP和RTP/RTCP的文件傳輸[D].廣州:中山大學(xué),2009.
[5]王小燕.一種高效點(diǎn)播流媒體服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2010,32(2):118-120.
[6]褚典,江春華.基于SIP、RIP/RTCP和RTSP協(xié)議的視頻監(jiān)控系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化,2013,(11):139-142.
[7]李廣鵬.基于SIP協(xié)議的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2008.
[8]陳宏才,蔡銘輝.考場監(jiān)控系統(tǒng)建設(shè)的重點(diǎn)分析[J].技術(shù)與應(yīng)用,2014,(14):48-50.