逄海川 王學剛 李廣林
(1.中國人民武裝警察部隊工程大學 研究生管理大隊12隊,陜西 西安 710086;2.中國人民武裝警察部隊內蒙古總隊 通信站,內蒙古 呼和浩特 010000;3.中國人民武裝警察部隊工程大學 信息工程系網絡工程教研室,陜西 西安 710086)
SIP(Session Initiation Protocol會話初始化協議)是由IETF于1999年提出的,用于在IP網絡中建立、修改和終止多媒體會話,實現實時通信應用的一種應用層控制協議。其應用包括語音、視頻、游戲、消息、呼叫控制和在線狀態等[1]。在SIP協議應用中的會話主要包括普通電話呼叫、IP電話呼叫、Internet多媒體會話和多媒體分發等。SIP協議的設計模式借鑒了HTTP和SMTP協議,編碼方式基于文本,協議簡潔高效并且易于擴展。它能控制多媒體會議電話的建立和終結,并能協商和動態調整會話參數。
SIP協議采用客戶端/服務器模式。主要包括四種實體:SIP用戶代理(User Agent,UA)、SIP 注冊服務器(Register Server)、SIP 代理服務器(Proxy Server)和 SIP 重定向服務器(Redirect Server)[2]。 每種實體在SIP協議體系結構中起到不同的作用,它們構成的網絡服務鏈,共同支持SIP建立會話。位置服務器(Location Server)本身不屬于SIP實體,但是它是任何使用SIP協議的體系結構中非常重要的一部分。
SIP用戶代理是用于和用戶交互的SIP實體,包括軟電話、硬件實現的SIP電話、其他計算機應用程序等,它通常有一個和用戶連接的接口。根據SIP協議,一個UA按照邏輯功能可以分為用戶代理客戶端 UAC(User Agent Client)和用戶代理服務器 UAS(User Agent Server)。在呼叫過程中UAC和UAS各有分工,其中UAC負責創建一個客戶端事務并使用它來發起一個新的請求報文,而UAS則負責對消息進行響應,并生成響應報文,并根據情況創建服務端事務發送響應報文。
注冊服務器是接收REGISTER請求消息的服務器,完成對用戶的注冊功能。在SIP通信中,UA向注冊服務器發送注冊請求,注冊服務器驗證UA身份后,把UA的統一資源定位符URI和地址的關聯信息發送到代理服務器,并儲存在位置服務器。
代理服務器是SIP網絡中的一個中間實體,它負責將請求消息路由到UAS,將響應消息路由到UAC。在轉發請求消息時,代理服務器接受用戶代理的會話請求并查詢注冊服務器,獲取收件方UA的地址信息。
重定向服務器接收SIP請求消息,將請求消息的地址映射成零個或多個新地址,并且將這些新地址返回給客戶機的服務器,通過查詢位置服務對UA提供消息路由。與代理服務器不同的是它并不發起任何請求消息,而是將位置信息封裝在一個3xx響應消息中返回給客戶機,讓客戶機自行嘗試下一跳位置。
位置服務器本身不屬于SIP實體,是Internet中的公共服務器,向代理服務器和重定向服務器提供位置查詢信息,為用戶存儲和返回可能的地址。位置服務器實質上是一個數據庫,它包含單個URI到一個或多個聯系地址之間的映射。
這些服務器元素只是邏輯上的劃分,而物理上則可以是放置在同一臺服務器上,也可以分布在不同的物理實體中。通過這些服務器可以實現用戶認證、管理、呼叫控制等功能,可以提供豐富的智能業務。
SIP協議是一個采用文本方式的請求/應答協議。SIP消息[3]有兩種類型:從客戶機發送到服務器的請求消息和從服務器發送到客戶機的響應消息。而SIP請求連同它所觸發的應答構成一個SIP事務。
SIP請求消息由一個請求行、幾個標題頭、一個空行和一個消息體組成。其格式為:

請求行和頭域根據業務、地址和協議特征定義了呼叫的本質,消息體獨立于SIP協議并且可包含任何內容。其中請求行有三個元素:方法、請求URI和協議版本。在SIP核心規范中定義了6種SIP請求,每個SIP請求都含有一個“方法”(Method)的字段,表示這個請求的目的。
一個SIP請求消息會觸發應答響應,也就是SIP響應消息。SIP響應消息由狀態行、幾個標題頭、一個空行和一個消息體組成。
其格式為:

其中,一個狀態行有3個元素:協議的版本號、狀態碼和一個原因短語。狀態碼報告事務的狀態,是從100~699的整數,并且分為6個不同的類。其中第一位數字指示響應的類別,后兩位數字表示具體的響應。
消息頭包含在SIP請求消息的請求行后及SIP響應消息的狀態行之后,提供了關于請求或應答的信息和關于這些消息所包含的消息體的信息。消息頭包括四種類型:可用于所有請求和響應消息中的通用頭域,只在SIP請求消息中有效的請求頭域,只在SIP響應消息中有效的響應頭域,可用于請求和響應消息中描述消息體內容的屬性的消息體頭。
消息頭的格式為:消息頭名:消息頭值
SIP通過E-mail形式的地址來標明用戶地址。在使用SIP服務之前,每一個用戶都必須先要獲得一個SIP標識符,即URL,它通過諸如用戶電話號碼或主機名等元素來構造(例如:SIP:user@company.com),它與E-mail地址格式具有相似性。
請求和應答都可能有消息體。被SIP消息攜帶的消息體通常是所建立的會話的描述,主要由SDP[4-5](Session Description Protocol)實現。消息體獨立于SIP協議,可包含任何內容。雖然SIP并沒有強制使用SDP來描述消息體,但SDP協議是為SIP量身定做的,因此在描述消息體方面通常選擇SDP。
SDP是用來描述多媒體會話通告,多媒體會話邀請和其他形式的多媒體會話初始化的協議,是Internet協議棧中的一個關鍵協議。SDP定義了會話描述的統一格式,但是沒有定義多播地址的分配和SDP消息的傳送,不支持會話內容或媒體編碼的協商操作。
SDP包括會話的名稱和目的、會話活躍區間、組成會話的媒體及接收媒體的相關信息(地址、端口、格式等)。SDP描述由許多文本行組成,文本行的格式為:<類型>=<值>。<類型>是一個字母,<值>是結構化的文本串,其格式依類型而定。類型有會話級別和媒體級別之分,會話級信息應用于整個會話,而媒體級信息應用于特殊的媒體流。
目前被廣泛接受的VOIP控制信令體系包括ITU-T的H.323標準和IETF的SIP協議。二者實現的信令控制功能基本相同,但設計風格和實現方法不同,因此弄清二者的區別與聯系,結合實際情況決定采用哪個協議或將二者結合使用,是構建一個性能優良的IP電話系統首先要解決的問題[6]。
這兩種協議的網絡結構相似,但其各組成部分的職能卻有很大不同。H.323標準是為構建多媒體會議系統而提出的,并不是專門為IP電話提出的。在H.323系統中,終端主要為媒體通訊提供數據,功能比較簡單,而對呼叫的控制、媒體傳輸控制等功能的實現則主要由網守來完成。SIP則不同,它的出發點是以現有的Internet為基礎來構建IP電話業務網,它是為了在兩點之間進行對話而設計的。SIP協議不只是簡單的提供數據,還提供了對呼叫的控制信息。服務器則用來進行定位、轉發或接受消息。
H.323中呼叫的建立過程和媒體、參數協商等的信令控制過程是分開進行的,它先通過H.225協議在終端之間建立呼叫連接,然后在終端之間進行性能交換、參數協商、主從確定等控制。SIP中呼叫控制的信息封裝在SIP消息的報頭中,因此會話請求過程與媒體協商過程是同時進行的。這樣,SIP的呼叫建立過程就相對簡短明了一些。但在呼叫建立延遲方面,H.323也有它的優越性。
H.323定義了很多功能來處理中間網絡設備故障問題。當一個網守失效時,協議就會使用備用網守,如果一個由中間信號設備發送的呼叫失敗,H.323能夠向目的設備重新發送呼叫以保證呼叫不會中斷。而SIP協議則不具備處理中間實體故障的能力。
在可擴展性方面,H.323為實現補充業務定義了專門的協議,并且可以通過標準化組織在不影響其現有特性的情況下添加新的特性來進行擴展。但它的缺點是隨著新特性的不斷增加,其編碼的大小也會不斷增加。而SIP通過對頭域進行擴展就能很方便地實現其補充業務或智能業務。當舊的頭域和特性不再需要時,SIP允許它們逐漸消失,以保證協議代碼的簡潔。
[1]凌朝東.基于Nios II多核駕駛疲勞檢測系統設計[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應用中的實現及比較[J].計算機應用,1001-9081(2002)09-0074-03.