逄海川 王學(xué)剛 李廣林
(1.中國人民武裝警察部隊(duì)工程大學(xué) 研究生管理大隊(duì)12隊(duì),陜西 西安 710086;2.中國人民武裝警察部隊(duì)內(nèi)蒙古總隊(duì) 通信站,內(nèi)蒙古 呼和浩特 010000;3.中國人民武裝警察部隊(duì)工程大學(xué) 信息工程系網(wǎng)絡(luò)工程教研室,陜西 西安 710086)
SIP(Session Initiation Protocol會話初始化協(xié)議)是由IETF于1999年提出的,用于在IP網(wǎng)絡(luò)中建立、修改和終止多媒體會話,實(shí)現(xiàn)實(shí)時(shí)通信應(yīng)用的一種應(yīng)用層控制協(xié)議。其應(yīng)用包括語音、視頻、游戲、消息、呼叫控制和在線狀態(tài)等[1]。在SIP協(xié)議應(yīng)用中的會話主要包括普通電話呼叫、IP電話呼叫、Internet多媒體會話和多媒體分發(fā)等。SIP協(xié)議的設(shè)計(jì)模式借鑒了HTTP和SMTP協(xié)議,編碼方式基于文本,協(xié)議簡潔高效并且易于擴(kuò)展。它能控制多媒體會議電話的建立和終結(jié),并能協(xié)商和動態(tài)調(diào)整會話參數(shù)。
SIP協(xié)議采用客戶端/服務(wù)器模式。主要包括四種實(shí)體:SIP用戶代理(User Agent,UA)、SIP 注冊服務(wù)器(Register Server)、SIP 代理服務(wù)器(Proxy Server)和 SIP 重定向服務(wù)器(Redirect Server)[2]。 每種實(shí)體在SIP協(xié)議體系結(jié)構(gòu)中起到不同的作用,它們構(gòu)成的網(wǎng)絡(luò)服務(wù)鏈,共同支持SIP建立會話。位置服務(wù)器(Location Server)本身不屬于SIP實(shí)體,但是它是任何使用SIP協(xié)議的體系結(jié)構(gòu)中非常重要的一部分。
SIP用戶代理是用于和用戶交互的SIP實(shí)體,包括軟電話、硬件實(shí)現(xiàn)的SIP電話、其他計(jì)算機(jī)應(yīng)用程序等,它通常有一個(gè)和用戶連接的接口。根據(jù)SIP協(xié)議,一個(gè)UA按照邏輯功能可以分為用戶代理客戶端 UAC(User Agent Client)和用戶代理服務(wù)器 UAS(User Agent Server)。在呼叫過程中UAC和UAS各有分工,其中UAC負(fù)責(zé)創(chuàng)建一個(gè)客戶端事務(wù)并使用它來發(fā)起一個(gè)新的請求報(bào)文,而UAS則負(fù)責(zé)對消息進(jìn)行響應(yīng),并生成響應(yīng)報(bào)文,并根據(jù)情況創(chuàng)建服務(wù)端事務(wù)發(fā)送響應(yīng)報(bào)文。
注冊服務(wù)器是接收REGISTER請求消息的服務(wù)器,完成對用戶的注冊功能。在SIP通信中,UA向注冊服務(wù)器發(fā)送注冊請求,注冊服務(wù)器驗(yàn)證UA身份后,把UA的統(tǒng)一資源定位符URI和地址的關(guān)聯(lián)信息發(fā)送到代理服務(wù)器,并儲存在位置服務(wù)器。
代理服務(wù)器是SIP網(wǎng)絡(luò)中的一個(gè)中間實(shí)體,它負(fù)責(zé)將請求消息路由到UAS,將響應(yīng)消息路由到UAC。在轉(zhuǎn)發(fā)請求消息時(shí),代理服務(wù)器接受用戶代理的會話請求并查詢注冊服務(wù)器,獲取收件方UA的地址信息。
重定向服務(wù)器接收SIP請求消息,將請求消息的地址映射成零個(gè)或多個(gè)新地址,并且將這些新地址返回給客戶機(jī)的服務(wù)器,通過查詢位置服務(wù)對UA提供消息路由。與代理服務(wù)器不同的是它并不發(fā)起任何請求消息,而是將位置信息封裝在一個(gè)3xx響應(yīng)消息中返回給客戶機(jī),讓客戶機(jī)自行嘗試下一跳位置。
位置服務(wù)器本身不屬于SIP實(shí)體,是Internet中的公共服務(wù)器,向代理服務(wù)器和重定向服務(wù)器提供位置查詢信息,為用戶存儲和返回可能的地址。位置服務(wù)器實(shí)質(zhì)上是一個(gè)數(shù)據(jù)庫,它包含單個(gè)URI到一個(gè)或多個(gè)聯(lián)系地址之間的映射。
這些服務(wù)器元素只是邏輯上的劃分,而物理上則可以是放置在同一臺服務(wù)器上,也可以分布在不同的物理實(shí)體中。通過這些服務(wù)器可以實(shí)現(xiàn)用戶認(rèn)證、管理、呼叫控制等功能,可以提供豐富的智能業(yè)務(wù)。
SIP協(xié)議是一個(gè)采用文本方式的請求/應(yīng)答協(xié)議。SIP消息[3]有兩種類型:從客戶機(jī)發(fā)送到服務(wù)器的請求消息和從服務(wù)器發(fā)送到客戶機(jī)的響應(yīng)消息。而SIP請求連同它所觸發(fā)的應(yīng)答構(gòu)成一個(gè)SIP事務(wù)。
SIP請求消息由一個(gè)請求行、幾個(gè)標(biāo)題頭、一個(gè)空行和一個(gè)消息體組成。其格式為:
請求行和頭域根據(jù)業(yè)務(wù)、地址和協(xié)議特征定義了呼叫的本質(zhì),消息體獨(dú)立于SIP協(xié)議并且可包含任何內(nèi)容。其中請求行有三個(gè)元素:方法、請求URI和協(xié)議版本。在SIP核心規(guī)范中定義了6種SIP請求,每個(gè)SIP請求都含有一個(gè)“方法”(Method)的字段,表示這個(gè)請求的目的。
一個(gè)SIP請求消息會觸發(fā)應(yīng)答響應(yīng),也就是SIP響應(yīng)消息。SIP響應(yīng)消息由狀態(tài)行、幾個(gè)標(biāo)題頭、一個(gè)空行和一個(gè)消息體組成。
其格式為:
其中,一個(gè)狀態(tài)行有3個(gè)元素:協(xié)議的版本號、狀態(tài)碼和一個(gè)原因短語。狀態(tài)碼報(bào)告事務(wù)的狀態(tài),是從100~699的整數(shù),并且分為6個(gè)不同的類。其中第一位數(shù)字指示響應(yīng)的類別,后兩位數(shù)字表示具體的響應(yīng)。
消息頭包含在SIP請求消息的請求行后及SIP響應(yīng)消息的狀態(tài)行之后,提供了關(guān)于請求或應(yīng)答的信息和關(guān)于這些消息所包含的消息體的信息。消息頭包括四種類型:可用于所有請求和響應(yīng)消息中的通用頭域,只在SIP請求消息中有效的請求頭域,只在SIP響應(yīng)消息中有效的響應(yīng)頭域,可用于請求和響應(yīng)消息中描述消息體內(nèi)容的屬性的消息體頭。
消息頭的格式為:消息頭名:消息頭值
SIP通過E-mail形式的地址來標(biāo)明用戶地址。在使用SIP服務(wù)之前,每一個(gè)用戶都必須先要獲得一個(gè)SIP標(biāo)識符,即URL,它通過諸如用戶電話號碼或主機(jī)名等元素來構(gòu)造(例如:SIP:user@company.com),它與E-mail地址格式具有相似性。
請求和應(yīng)答都可能有消息體。被SIP消息攜帶的消息體通常是所建立的會話的描述,主要由SDP[4-5](Session Description Protocol)實(shí)現(xiàn)。消息體獨(dú)立于SIP協(xié)議,可包含任何內(nèi)容。雖然SIP并沒有強(qiáng)制使用SDP來描述消息體,但SDP協(xié)議是為SIP量身定做的,因此在描述消息體方面通常選擇SDP。
SDP是用來描述多媒體會話通告,多媒體會話邀請和其他形式的多媒體會話初始化的協(xié)議,是Internet協(xié)議棧中的一個(gè)關(guān)鍵協(xié)議。SDP定義了會話描述的統(tǒng)一格式,但是沒有定義多播地址的分配和SDP消息的傳送,不支持會話內(nèi)容或媒體編碼的協(xié)商操作。
SDP包括會話的名稱和目的、會話活躍區(qū)間、組成會話的媒體及接收媒體的相關(guān)信息(地址、端口、格式等)。SDP描述由許多文本行組成,文本行的格式為:<類型>=<值>。<類型>是一個(gè)字母,<值>是結(jié)構(gòu)化的文本串,其格式依類型而定。類型有會話級別和媒體級別之分,會話級信息應(yīng)用于整個(gè)會話,而媒體級信息應(yīng)用于特殊的媒體流。
目前被廣泛接受的VOIP控制信令體系包括ITU-T的H.323標(biāo)準(zhǔn)和IETF的SIP協(xié)議。二者實(shí)現(xiàn)的信令控制功能基本相同,但設(shè)計(jì)風(fēng)格和實(shí)現(xiàn)方法不同,因此弄清二者的區(qū)別與聯(lián)系,結(jié)合實(shí)際情況決定采用哪個(gè)協(xié)議或?qū)⒍呓Y(jié)合使用,是構(gòu)建一個(gè)性能優(yōu)良的IP電話系統(tǒng)首先要解決的問題[6]。
這兩種協(xié)議的網(wǎng)絡(luò)結(jié)構(gòu)相似,但其各組成部分的職能卻有很大不同。H.323標(biāo)準(zhǔn)是為構(gòu)建多媒體會議系統(tǒng)而提出的,并不是專門為IP電話提出的。在H.323系統(tǒng)中,終端主要為媒體通訊提供數(shù)據(jù),功能比較簡單,而對呼叫的控制、媒體傳輸控制等功能的實(shí)現(xiàn)則主要由網(wǎng)守來完成。SIP則不同,它的出發(fā)點(diǎn)是以現(xiàn)有的Internet為基礎(chǔ)來構(gòu)建IP電話業(yè)務(wù)網(wǎng),它是為了在兩點(diǎn)之間進(jìn)行對話而設(shè)計(jì)的。SIP協(xié)議不只是簡單的提供數(shù)據(jù),還提供了對呼叫的控制信息。服務(wù)器則用來進(jìn)行定位、轉(zhuǎn)發(fā)或接受消息。
H.323中呼叫的建立過程和媒體、參數(shù)協(xié)商等的信令控制過程是分開進(jìn)行的,它先通過H.225協(xié)議在終端之間建立呼叫連接,然后在終端之間進(jìn)行性能交換、參數(shù)協(xié)商、主從確定等控制。SIP中呼叫控制的信息封裝在SIP消息的報(bào)頭中,因此會話請求過程與媒體協(xié)商過程是同時(shí)進(jìn)行的。這樣,SIP的呼叫建立過程就相對簡短明了一些。但在呼叫建立延遲方面,H.323也有它的優(yōu)越性。
H.323定義了很多功能來處理中間網(wǎng)絡(luò)設(shè)備故障問題。當(dāng)一個(gè)網(wǎng)守失效時(shí),協(xié)議就會使用備用網(wǎng)守,如果一個(gè)由中間信號設(shè)備發(fā)送的呼叫失敗,H.323能夠向目的設(shè)備重新發(fā)送呼叫以保證呼叫不會中斷。而SIP協(xié)議則不具備處理中間實(shí)體故障的能力。
在可擴(kuò)展性方面,H.323為實(shí)現(xiàn)補(bǔ)充業(yè)務(wù)定義了專門的協(xié)議,并且可以通過標(biāo)準(zhǔn)化組織在不影響其現(xiàn)有特性的情況下添加新的特性來進(jìn)行擴(kuò)展。但它的缺點(diǎn)是隨著新特性的不斷增加,其編碼的大小也會不斷增加。而SIP通過對頭域進(jìn)行擴(kuò)展就能很方便地實(shí)現(xiàn)其補(bǔ)充業(yè)務(wù)或智能業(yè)務(wù)。當(dāng)舊的頭域和特性不再需要時(shí),SIP允許它們逐漸消失,以保證協(xié)議代碼的簡潔。
[1]凌朝東.基于Nios II多核駕駛疲勞檢測系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(6):1410-1412.
[2][美]Gonzalo Camadllo.SIP 揭密[M].白建軍,彭暉,彭田敏,等,譯.北京:人民郵電出版社,2003.
[3]J.Rosenberg,H.Schulzrinne.SIP:Locating SIP Servers [M].IETF RFC 3263,2002.
[4]M.Handley,V.Jacobson.Session Description Protocol[M].IETF,RFC2327,1998.
[5]J.Rosenberg.An Offer/Answer Model with Session Description Protocol[M].IETF RFC 3264,2002.
[6]李琳,柴喬林,袁春陽.H.323與SIP在VOIP應(yīng)用中的實(shí)現(xiàn)及比較[J].計(jì)算機(jī)應(yīng)用,1001-9081(2002)09-0074-03.