1 引 言
SIP(Session Initiation Protocol,工作階段初始通訊協定)、SAP(Session Announcement Protocol,會話通告協議)、SDP(Session Description Protocol,會話描述協議)是三個與會話(Session)有關的既有聯絡又有區別的RFC協議。在本文中,我們將對這三個協議做簡單分析並給出一個利用這三個協議實現的具有一定實用價值的多媒體應用。
2 協議分析
2.1 SIP協議介紹與分析
工作階段初始通訊協定(SIP)是一信令協議用於初始、管理和終止分組網路中的語音和視頻會話,具體地說就是用來產生、修改和終結一個或多個參與者之間的會話。SIP是互連網工程工作群組(IETF)多媒體資料和控制體繫結構的一個組成部分,因此它與IETF的許多其他協議都有聯絡,例如RTP(即時傳輸協議)和本文提到的SAP、SDP協議。
SIP主要提供了與會話建立和終結相關的五個方面功能,它們是:
(1)使用者定位:用於通訊的終端系統的決定;
(2)使用者可用性:被來電者參與通訊的意願的決定;
(3)使用者能力:使用的媒體和媒體參數的決定;
(4)會話建立:“響鈴”,呼叫和被來電者會話參數的建立;
(5)會話管理:包括轉移和終結會話,修改會話參數,以及調用業務等。
SIP網路由四種類型的邏輯SIP實體組成。每一實體具有特定的功能,並且作為客戶機(初始請求),或作為伺服器(響應請求),或作為兩者的結合參與到SIP通訊中。一個“物理裝置”能夠具有多於一個邏輯SIP實體的功能性。例如,作為Proxy 伺服器的網路伺服器可同時具備忘冊伺服器的功能。
下面是四種功能實體:
(1)使用者代理程式
在SIP中,使用者代理程式(UA)是端點實體。使用者代理程式通過交換請求和響應初始和終止會話。UA作為一應用程式,它包含使用者代理程式客戶機和使用者代理程式伺服器,如下:
· 使用者代理程式客戶機(UAC):客戶機應用程式,它初始SIP請求。
· 使用者代理程式伺服器(UAS):伺服器應用程式,當接收到SIP請求時它聯絡使用者並且代表使用者返回一響應。
在SIP網路中具有UA功能的裝置是:工作站,IP電話,電話網關,呼叫代理,自動應答服務。
(2)Proxy 伺服器
Proxy 伺服器是同時作為伺服器和客戶機的中間實體,其目的是代表其他客戶機產生請求。請求被內部處理或可能在翻譯之後將其傳遞到其他伺服器。如果需要,代理在轉寄之前可解釋和重寫請求訊息。
(3)重新導向伺服器
重新導向伺服器接受SIP請求,並將被來電者的SIP地址映射成零個(如果沒有可知地址)或更多的新地址並且將它們返回客戶機。不像Proxy 伺服器,重新導向伺服器不傳遞請求到其他伺服器。
(4)註冊伺服器
註冊伺服器是接受REGISTER請求的伺服器,其目的是根據使用者在請求中規定的聯絡資訊更新位置資料庫。
SIP通過E-mail形式的地址來標明使用者地址。每一使用者通過一等級化的URL來標識,它通過諸如使用者電話號碼或主機名稱等元素來構造(例如:SIP:user@company.com)。因為它與E-mail地址的相似性,SIP URLs容易與使用者的E-mail地址關聯。
SIP有兩種類型的訊息,它們是:
(1)請求:從客戶機發到伺服器的訊息。
(2)響應:從伺服器發到客戶機的訊息。
其中請求訊息包括:
· INVITE:初始呼叫,改變所以參數(re-INVITE)。
· ACK:確認INVITE的最終應答。
· BYE:結束通話。
· CANCEL:撤消搜尋和振玲。
· OPTIONS:查詢另一方能力。
· REGISTER:註冊位置服務。
· INFO:發送會話中資訊而不改變工作階段狀態。
· PRACK:與ACK作用相同,但是用於臨時響應。
· SUBSCRIBE:該方法用來向遠端端點預訂其狀態變化的通知。
· NOTIFY:該方法發送訊息以通知預訂者它所預定的狀態的變化。
· UPDATE:允許客戶更新一個會話的參數而不影響該會話的目前狀態。
· MESSAGE:通過在其請求體中承載立即訊息內容實現立即訊息。
· REFER:其功能是指示接受方通過使用在請求中提供的聯絡地址資訊聯絡第三方。
響應訊息包含數字響應代碼。SIP響應代碼集部分基於HTTP響應代碼。有兩種類型的響應,它們是:
· 臨時響應(1XX):臨時響應被伺服器用來指示進程,但是不終結SIP事物。
· 最終響應(2XX,3XX,4XX,5XX,6XX):最終響應終止SIP事物。
每條SIP訊息由以下三部分組成:
(1)起始行(Start Line):每個SIP訊息由起始行開始。起始行傳達訊息類型(在請求中是方法類型,在響應中是響應代碼)與協議版本。起始行可以是一請求行(請求)或狀態行(響應)。
(2)SIP頭:用來傳遞訊息屬性和修改訊息意義。它們在文法和語義上與HTTP頭域相同(實際上有些頭就是借自HTTP),並且總是保持格式:<名字>:<值>。
(3)訊息體:用於描述被初始的會話(例如,在多媒體會話中包括音頻和視頻編碼類別型,採樣率等)。訊息體能夠顯示在請求與響應中。SIP清晰區別了在SIP起始行和頭中傳遞的信令資訊與在SIP範圍之外的會話描述資訊。可能的體類型就包括本文將要描述的SDP會話描述協議。
2.2 SAP協議介紹與分析
SAP的全稱是會話通告協議,其目的是為了通知一個多播的多媒體會議或其他多播會話而將相關的會話建立資訊發送給所期望的會議參與者。SAP協議本身並不建立會話,它只是將建立會話所必要的資訊,例如所採取的視頻或音頻編碼方式通知給其他在一個多播組內的參與者,當參與者接收到該通知數據包後就可以啟動相應的工具並設定正確的參數向該會議的發起者建立會話了(建立會話可以使用 SIP協議)。
通知的發起者並不知道各參與者是否收到了會話通知,也就是說每個參與者並不向通知發起者回複“我收到了通知”的確認;因此,通知發起者只能夠通過周期性地發送這個會話通知從而最大可能地使參與者收到通知。
SAP並不是向每個參與者一一發通知數據包,它是通過多播的機制(multicast)向一個已知的多播地址和連接埠一次性發送一個通知數據包,該多播組內的成員如果工作正常的化就會收到該通知數據包。因此,為了使會議的參與者都能夠接收到通知,就要確保其參加到該多播組內。
一個通知數據報除了可以通知某會話將要發起外,還可以通知該會話取消了或該會話的某些通訊參數已被修改了。當然,這需要相應機制使這幾個通知都是針對同一會話的。
那麼SAP如何描述會話的相關資訊,這就需要藉助SDP協議了。在SAP資料包的payload欄位中一般情況下填充的就是SDP資料,它描述了建立會話所必要的基本資料。
SDP將在1.3節中介紹。
2.3 SDP協議介紹與分析
上面介紹的兩個協議都用到了SDP,實際上SDP就是用來描述多媒體會話通告,多媒體會話邀請和其他形式的多媒體會話初始化的協議。SDP包通常包括以下資訊:
(1)會話資訊
· 會話名和目的。
· 會話啟用時間。
由於參與會話的資源是受限制的,因此包括以下附加資訊是非常有用的。
· 會話使用的頻寬資訊。
· 會話負責人的聯絡資訊。
(2)媒體資訊
· 媒體類型,例如視頻和音頻。
· 傳輸協議,例如RTP/UDP/IP和H.320。
· 媒體格式,例如H.261視頻和MPEG視頻。
· 多播地址和媒體傳輸連接埠(IP多播會話)。
· 用於聯絡地址的媒體和傳輸連接埠的遠端地址(IP單播會話)。
SDP描述由許多文本行組成,文本行的格式為<類型>=<值>,<類型>是一個字母,<值>是結構化的文本串,其格式依<類型>而定。
3 SAP、SIP、SDP組合應用執行個體
在這個應用執行個體中,我們設計了這樣一種情境:某公司領導需要與本公司各部門負責人召開電視會議。他使用的多媒體會議系統採用了本文所描述的這種SAP、SIP、SDP組合應用技術。該公司領導首先通過一台具有Web瀏覽功能的客戶機登陸會議服務器,註冊一個會議。在註冊的同時,他就將各部門負責人納入了本次會議的參與者之列(當然,還需要該公司領導和各部門負責人的客戶機在同一個多播組內)。然後,他在頁面上點擊一個“會議通知”按鈕,會議服務器就通過SAP協議向本次會議的各參與者(包括公司領導和部門負責人)所在客戶機發送召開會議的通知。此時,若各參與者所在客戶機是正常的串連到網路上並且SAP通知接收器正常工作的話,它就會以聲音或圖形的方式通知該參與者,同時準備好本客戶機參加此次會議的用戶端程式。當各參與者發現會議通知後,他在已經準備好的會議用戶端程式上點擊一個“參加會議”的按鈕,用戶端就通過SIP協議將該客戶機輕鬆地加入到會議之中。當參與者到齊後,在會議主席(公司領導)的控制下,此次會議就可以正式開始了。
各參與者客戶機上的SAP通知接收器接收到會議通知後,它會儘可能地調用客戶機上的各種資源以滿足本次會議的要求,如果實在不能夠滿足的話,它也可以以書面形式通知參與者本機所缺的資源。在整個會議的SAP、SIP互動過程中都用到了SDP協議來描述會話和媒體資訊。簡要流程如附圖所示。
4 結束語
SAP、SIP、SDP都不是孤立的協議,只有在相互組合與協調並且與其他協議配合的情況下,才能夠發揮它們應有的強大作用。本文給出了SAP、SIP、SDP組合應用的一個執行個體,這樣的應用其實還很多,例如將本文的技術稍加改動也可用於樓宇的多點視頻自動監控系統中。隨著上述協議的進一步發展和普及,我們堅信SAP、SIP、SDP將會廣泛地應用於NGN(下一代網路)、3Tnet(高效能寬頻資訊網)等寬頻多媒體應用中。