posts - 32,comments - 75,trackbacks - 0
          公司要做VOIP的項(xiàng)目,從網(wǎng)上轉(zhuǎn)了篇文章來(lái)看看。

          摘 要 SIP、SAP、SDP是NGN與3Tnet中涉及的重要協(xié)議。本文在介紹與分析SIP、SAP、SDP協(xié)議的基礎(chǔ)上,給出了一個(gè)基于三種協(xié)議組合而實(shí)現(xiàn)的多媒體會(huì)議應(yīng)用實(shí)例。

            關(guān)鍵詞 SIP SAP SDP

            1 引 言

            SIP(Session Initiation Protocol,會(huì)話初始協(xié)議)、SAP(Session Announcement Protocol,會(huì)話通告協(xié)議)、SDP(Session Description Protocol,會(huì)話描述協(xié)議)是三個(gè)與會(huì)話(Session)有關(guān)的既有聯(lián)系又有區(qū)別的RFC協(xié)議。在本文中,我們將對(duì)這三個(gè)協(xié)議做簡(jiǎn)單分析并給出一個(gè)利用這三個(gè)協(xié)議實(shí)現(xiàn)的具有一定實(shí)用價(jià)值的多媒體應(yīng)用。

            2 協(xié)議分析

            2.1 SIP協(xié)議介紹與分析

            會(huì)話初始協(xié)議(SIP)是一信令協(xié)議用于初始、管理和終止分組網(wǎng)絡(luò)中的語(yǔ)音和視頻會(huì)話,具體地說(shuō)就是用來(lái)生成、修改和終結(jié)一個(gè)或多個(gè)參與者之間的會(huì)話。SIP是互聯(lián)網(wǎng)工程任務(wù)組(IETF)多媒體數(shù)據(jù)和控制體系結(jié)構(gòu)的一個(gè)組成部分,因此它與IETF的許多其他協(xié)議都有聯(lián)系,例如RTP(實(shí)時(shí)傳輸協(xié)議)和本文提到的SAP、SDP協(xié)議。

            SIP主要提供了與會(huì)話建立和終結(jié)相關(guān)的五個(gè)方面功能,它們是:

            (1)用戶定位:用于通信的終端系統(tǒng)的決定;

            (2)用戶可用性:被呼叫方參與通信的意愿的決定;

            (3)用戶能力:使用的媒體和媒體參數(shù)的決定;

            (4)會(huì)話建立:“振鈴”,呼叫和被呼叫方會(huì)話參數(shù)的建立;

            (5)會(huì)話管理:包括轉(zhuǎn)移和終結(jié)會(huì)話,修改會(huì)話參數(shù),以及調(diào)用業(yè)務(wù)等。

            SIP網(wǎng)絡(luò)由四種類型的邏輯SIP實(shí)體組成。每一實(shí)體具有特定的功能,并且作為客戶機(jī)(初始請(qǐng)求),或作為服務(wù)器(響應(yīng)請(qǐng)求),或作為兩者的結(jié)合參與到SIP通信中。一個(gè)“物理設(shè)備”能夠具有多于一個(gè)邏輯SIP實(shí)體的功能性。例如,作為代理服務(wù)器的網(wǎng)絡(luò)服務(wù)器可同時(shí)具備注冊(cè)服務(wù)器的功能。

            下面是四種功能實(shí)體:

            (1)用戶代理

            在SIP中,用戶代理(UA)是端點(diǎn)實(shí)體。用戶代理通過(guò)交換請(qǐng)求和響應(yīng)初始和終止會(huì)話。UA作為一應(yīng)用程序,它包含用戶代理客戶機(jī)和用戶代理服務(wù)器,如下:

            · 用戶代理客戶機(jī)(UAC):客戶機(jī)應(yīng)用程序,它初始SIP請(qǐng)求。

            · 用戶代理服務(wù)器(UAS):服務(wù)器應(yīng)用程序,當(dāng)接收到SIP請(qǐng)求時(shí)它聯(lián)系用戶并且代表用戶返回一響應(yīng)。

            在SIP網(wǎng)絡(luò)中具有UA功能的設(shè)備是:工作站,IP電話,電話網(wǎng)關(guān),呼叫代理,自動(dòng)應(yīng)答服務(wù)。

            (2)代理服務(wù)器

            代理服務(wù)器是同時(shí)作為服務(wù)器和客戶機(jī)的中間實(shí)體,其目的是代表其他客戶機(jī)生成請(qǐng)求。請(qǐng)求被內(nèi)部處理或可能在翻譯之后將其傳遞到其他服務(wù)器。如果需要,代理在轉(zhuǎn)發(fā)之前可解釋和重寫請(qǐng)求消息。

            (3)重定向服務(wù)器

            重定向服務(wù)器接受SIP請(qǐng)求,并將被呼叫方的SIP地址映射成零個(gè)(如果沒(méi)有可知地址)或更多的新地址并且將它們返回客戶機(jī)。不像代理服務(wù)器,重定向服務(wù)器不傳遞請(qǐng)求到其他服務(wù)器。

            (4)注冊(cè)服務(wù)器

            注冊(cè)服務(wù)器是接受REGISTER請(qǐng)求的服務(wù)器,其目的是根據(jù)用戶在請(qǐng)求中規(guī)定的聯(lián)系信息更新位置數(shù)據(jù)庫(kù)。

            SIP通過(guò)E-mail形式的地址來(lái)標(biāo)明用戶地址。每一用戶通過(guò)一等級(jí)化的URL來(lái)標(biāo)識(shí),它通過(guò)諸如用戶電話號(hào)碼或主機(jī)名等元素來(lái)構(gòu)造(例如:SIP:user@company.com)。因?yàn)樗cE-mail地址的相似性,SIP URLs容易與用戶的E-mail地址關(guān)聯(lián)。

            SIP有兩種類型的消息,它們是:

            (1)請(qǐng)求:從客戶機(jī)發(fā)到服務(wù)器的消息。

            (2)響應(yīng):從服務(wù)器發(fā)到客戶機(jī)的消息。

            其中請(qǐng)求消息包括:

            · INVITE:初始呼叫,改變所以參數(shù)(re-INVITE)。

            · ACK:確認(rèn)INVITE的最終應(yīng)答。

            · BYE:終止呼叫。

            · CANCEL:撤消搜索和振玲。

            · OPTIONS:查詢另一方能力。

            · REGISTER:注冊(cè)位置服務(wù)。

            · INFO:發(fā)送會(huì)話中信息而不改變會(huì)話狀態(tài)。

            · PRACK:與ACK作用相同,但是用于臨時(shí)響應(yīng)。

            · SUBSCRIBE:該方法用來(lái)向遠(yuǎn)端端點(diǎn)預(yù)訂其狀態(tài)變化的通知。

            · NOTIFY:該方法發(fā)送消息以通知預(yù)訂者它所預(yù)定的狀態(tài)的變化。

            · UPDATE:允許客戶更新一個(gè)會(huì)話的參數(shù)而不影響該會(huì)話的當(dāng)前狀態(tài)。

            · MESSAGE:通過(guò)在其請(qǐng)求體中承載即時(shí)消息內(nèi)容實(shí)現(xiàn)即時(shí)消息。

            · REFER:其功能是指示接受方通過(guò)使用在請(qǐng)求中提供的聯(lián)系地址信息聯(lián)系第三方。

            響應(yīng)消息包含數(shù)字響應(yīng)代碼。SIP響應(yīng)代碼集部分基于HTTP響應(yīng)代碼。有兩種類型的響應(yīng),它們是:

            · 臨時(shí)響應(yīng)(1XX):臨時(shí)響應(yīng)被服務(wù)器用來(lái)指示進(jìn)程,但是不終結(jié)SIP事物。

            · 最終響應(yīng)(2XX,3XX,4XX,5XX,6XX):最終響應(yīng)終止SIP事物。

            每條SIP消息由以下三部分組成:

            (1)起始行(Start Line):每個(gè)SIP消息由起始行開始。起始行傳達(dá)消息類型(在請(qǐng)求中是方法類型,在響應(yīng)中是響應(yīng)代碼)與協(xié)議版本。起始行可以是一請(qǐng)求行(請(qǐng)求)或狀態(tài)行(響應(yīng))。

            (2)SIP頭:用來(lái)傳遞消息屬性和修改消息意義。它們?cè)谡Z(yǔ)法和語(yǔ)義上與HTTP頭域相同(實(shí)際上有些頭就是借自HTTP),并且總是保持格式:<名字>:<值>。

            (3)消息體:用于描述被初始的會(huì)話(例如,在多媒體會(huì)話中包括音頻和視頻編碼類型,采樣率等)。消息體能夠顯示在請(qǐng)求與響應(yīng)中。SIP清晰區(qū)別了在SIP起始行和頭中傳遞的信令信息與在SIP范圍之外的會(huì)話描述信息。可能的體類型就包括本文將要描述的SDP會(huì)話描述協(xié)議。

            2.2 SAP協(xié)議介紹與分析

            SAP的全稱是會(huì)話通告協(xié)議,其目的是為了通知一個(gè)多播的多媒體會(huì)議或其他多播會(huì)話而將相關(guān)的會(huì)話建立信息發(fā)送給所期望的會(huì)議參與者。SAP協(xié)議本身并不建立會(huì)話,它只是將建立會(huì)話所必要的信息,例如所采取的視頻或音頻編碼方式通知給其他在一個(gè)多播組內(nèi)的參與者,當(dāng)參與者接收到該通知數(shù)據(jù)包后就可以啟動(dòng)相應(yīng)的工具并設(shè)置正確的參數(shù)向該會(huì)議的發(fā)起者建立會(huì)話了(建立會(huì)話可以使用SIP協(xié)議)。

            通知的發(fā)起者并不知道各參與者是否收到了會(huì)話通知,也就是說(shuō)每個(gè)參與者并不向通知發(fā)起者回復(fù)“我收到了通知”的確認(rèn);因此,通知發(fā)起者只能夠通過(guò)周期性地發(fā)送這個(gè)會(huì)話通知從而最大可能地使參與者收到通知。

            SAP并不是向每個(gè)參與者一一發(fā)通知數(shù)據(jù)包,它是通過(guò)多播的機(jī)制(multicast)向一個(gè)已知的多播地址和端口一次性發(fā)送一個(gè)通知數(shù)據(jù)包,該多播組內(nèi)的成員如果工作正常的化就會(huì)收到該通知數(shù)據(jù)包。因此,為了使會(huì)議的參與者都能夠接收到通知,就要確保其參加到該多播組內(nèi)。

            一個(gè)通知數(shù)據(jù)報(bào)除了可以通知某會(huì)話將要發(fā)起外,還可以通知該會(huì)話取消了或該會(huì)話的某些通信參數(shù)已被修改了。當(dāng)然,這需要相應(yīng)機(jī)制使這幾個(gè)通知都是針對(duì)同一會(huì)話的。

            那么SAP如何描述會(huì)話的相關(guān)信息,這就需要借助SDP協(xié)議了。在SAP數(shù)據(jù)包的payload字段中一般情況下填充的就是SDP數(shù)據(jù),它描述了建立會(huì)話所必要的基本信息。

            SDP將在1.3節(jié)中介紹。

            2.3 SDP協(xié)議介紹與分析

            上面介紹的兩個(gè)協(xié)議都用到了SDP,實(shí)際上SDP就是用來(lái)描述多媒體會(huì)話通告,多媒體會(huì)話邀請(qǐng)和其他形式的多媒體會(huì)話初始化的協(xié)議。SDP包通常包括以下信息:

            (1)會(huì)話信息

            · 會(huì)話名和目的。

            · 會(huì)話活動(dòng)時(shí)間。

            由于參與會(huì)話的資源是受限制的,因此包括以下附加信息是非常有用的。

            · 會(huì)話使用的帶寬信息。

            · 會(huì)話負(fù)責(zé)人的聯(lián)系信息。

            (2)媒體信息

            · 媒體類型,例如視頻和音頻。

            · 傳輸協(xié)議,例如RTP/UDP/IP和H.320。

            · 媒體格式,例如H.261視頻和MPEG視頻。

            · 多播地址和媒體傳輸端口(IP多播會(huì)話)。

            · 用于聯(lián)系地址的媒體和傳輸端口的遠(yuǎn)端地址(IP單播會(huì)話)。

            SDP描述由許多文本行組成,文本行的格式為<類型>=<值>,<類型>是一個(gè)字母,<值>是結(jié)構(gòu)化的文本串,其格式依<類型>而定。

            3 SAP、SIP、SDP組合應(yīng)用實(shí)例

            在這個(gè)應(yīng)用實(shí)例中,我們?cè)O(shè)計(jì)了這樣一種場(chǎng)景:某公司領(lǐng)導(dǎo)需要與本公司各部門負(fù)責(zé)人召開電視會(huì)議。他使用的多媒體會(huì)議系統(tǒng)采用了本文所描述的這種SAP、SIP、SDP組合應(yīng)用技術(shù)。該公司領(lǐng)導(dǎo)首先通過(guò)一臺(tái)具有Web瀏覽功能的客戶機(jī)登陸會(huì)議服務(wù)器,注冊(cè)一個(gè)會(huì)議。在注冊(cè)的同時(shí),他就將各部門負(fù)責(zé)人納入了本次會(huì)議的參與者之列(當(dāng)然,還需要該公司領(lǐng)導(dǎo)和各部門負(fù)責(zé)人的客戶機(jī)在同一個(gè)多播組內(nèi))。然后,他在頁(yè)面上點(diǎn)擊一個(gè)“會(huì)議通知”按鈕,會(huì)議服務(wù)器就通過(guò)SAP協(xié)議向本次會(huì)議的各參與者(包括公司領(lǐng)導(dǎo)和部門負(fù)責(zé)人)所在客戶機(jī)發(fā)送召開會(huì)議的通知。此時(shí),若各參與者所在客戶機(jī)是正常的連接到網(wǎng)絡(luò)上并且SAP通知接收器正常工作的話,它就會(huì)以聲音或圖形的方式通知該參與者,同時(shí)準(zhǔn)備好本客戶機(jī)參加此次會(huì)議的客戶端程序。當(dāng)各參與者發(fā)現(xiàn)會(huì)議通知后,他在已經(jīng)準(zhǔn)備好的會(huì)議客戶端程序上點(diǎn)擊一個(gè)“參加會(huì)議”的按鈕,客戶端就通過(guò)SIP協(xié)議將該客戶機(jī)輕松地加入到會(huì)議之中。當(dāng)參與者到齊后,在會(huì)議主席(公司領(lǐng)導(dǎo))的控制下,此次會(huì)議就可以正式開始了。

            各參與者客戶機(jī)上的SAP通知接收器接收到會(huì)議通知后,它會(huì)盡可能地調(diào)用客戶機(jī)上的各種資源以滿足本次會(huì)議的要求,如果實(shí)在不能夠滿足的話,它也可以以書面形式通知參與者本機(jī)所缺的資源。在整個(gè)會(huì)議的SAP、SIP交互過(guò)程中都用到了SDP協(xié)議來(lái)描述會(huì)話和媒體信息。簡(jiǎn)要流程如附圖所示。

            4 結(jié)束語(yǔ)

            SAP、SIP、SDP都不是孤立的協(xié)議,只有在相互組合與協(xié)調(diào)并且與其他協(xié)議配合的情況下,才能夠發(fā)揮它們應(yīng)有的強(qiáng)大作用。本文給出了SAP、SIP、SDP組合應(yīng)用的一個(gè)實(shí)例,這樣的應(yīng)用其實(shí)還很多,例如將本文的技術(shù)稍加改動(dòng)也可用于樓宇的多點(diǎn)視頻自動(dòng)監(jiān)控系統(tǒng)中。隨著上述協(xié)議的進(jìn)一步發(fā)展和普及,我們堅(jiān)信SAP、SIP、SDP將會(huì)廣泛地應(yīng)用于NGN(下一代網(wǎng)絡(luò))、3Tnet(高性能寬帶信息網(wǎng))等寬帶多媒體應(yīng)用中。
          posted on 2005-12-25 13:59 fanta 閱讀(2338) 評(píng)論(1)  編輯  收藏 所屬分類: Java

          FeedBack:
          # re: SIP SAP及SDP協(xié)議組合應(yīng)用的研究(轉(zhuǎn))
          2007-02-08 17:43 | javvin
          主站蜘蛛池模板: 伊吾县| 金沙县| 密云县| 灵武市| 陇川县| 宁阳县| 赫章县| 科技| 黑山县| 华阴市| 肃北| 新巴尔虎右旗| 台中县| 酉阳| 奈曼旗| 西贡区| SHOW| 孟村| 石棉县| 新干县| 翁牛特旗| 页游| 开平市| 哈巴河县| 盐边县| 余干县| 龙游县| 桐梓县| 普洱| 胶州市| 华容县| 印江| 三河市| 岳阳市| 江川县| 六枝特区| 靖远县| 郸城县| 桂林市| 永福县| 寻乌县|