3、SDP使用方式
一般情況下,應(yīng)用場(chǎng)景都至少是在兩方或者多方參與者之間進(jìn)行。多方語音或者視頻應(yīng)用場(chǎng)景中,系統(tǒng)需要對(duì)話型的多媒體應(yīng)用來傳輸會(huì)話描述。為了會(huì)話創(chuàng)建,會(huì)話描述允許參與者同意它們之間的一系列兼容性能力的協(xié)商。為了客戶端和服務(wù)器端之間的媒體傳輸,多媒體流要求一系列的恰當(dāng)?shù)拿襟w協(xié)商來保證客戶端和服務(wù)器端的傳輸。在所有的用戶創(chuàng)建中,SDP用來傳輸通信參與方之間的會(huì)話信息來支持它們之間的媒體能力協(xié)商。因此,SDP主要可以使用在以下五個(gè)方面的應(yīng)用中:
SIP中的會(huì)話,前面我們已經(jīng)提到,SIP是一種基于應(yīng)用層的協(xié)議,它可以創(chuàng)建會(huì)話,修改會(huì)話和結(jié)束會(huì)話。典型的應(yīng)用如SIP呼叫,網(wǎng)絡(luò)會(huì)議和媒體分發(fā)等。SIP消息用來創(chuàng)建會(huì)話并且傳輸會(huì)話描述。會(huì)話描述來支持參與方之間的能力協(xié)商。通常情況下,會(huì)話描述由SDP通過格式化處理而產(chǎn)生。當(dāng)使用SIP協(xié)議時(shí),RFC3264規(guī)定了offer/answer模式,它是一種有限的架構(gòu)可以支持使用SDP進(jìn)行協(xié)商。
WebRTC的會(huì)話,和SIP一樣,WebRTC也是一種應(yīng)用層協(xié)議,其目的是通過網(wǎng)絡(luò)在瀏覽器用戶之間為實(shí)時(shí)通信交互中語音,視頻和數(shù)據(jù)應(yīng)用程序協(xié)議。WebRTC信息傳遞SDP消息來實(shí)現(xiàn)對(duì)會(huì)議會(huì)話的創(chuàng)建修改管理,以便基于瀏覽器的終端之間可以協(xié)商一系列的能力支持。例如,WebRTC使用SDPoffer/answer模式來協(xié)商其會(huì)話能力支持。
流媒體,RealTimeStreamingProtocol(RTSP),RFC2326規(guī)定了具體的細(xì)節(jié),它也是一種應(yīng)用層協(xié)議,使用數(shù)據(jù)屬性對(duì)數(shù)據(jù)傳輸進(jìn)行控制。控制功能可以是對(duì)視頻的播放或者暫停等。RTSP提供了一種擴(kuò)展架構(gòu)對(duì)已控制的實(shí)時(shí)數(shù)據(jù),例如語音視頻實(shí)現(xiàn)按需傳遞。RTSP客戶端和服務(wù)器端通過部分SDP語法使用對(duì)媒體傳輸能力參數(shù)進(jìn)行協(xié)商。
Email和www應(yīng)用,這是另外一種傳輸手段來傳輸會(huì)話描述。其媒體類型使用的是「application/sdp」,通過此方式可以在參與方之間自動(dòng)發(fā)起一個(gè)應(yīng)用。
多播會(huì)話聲明,為了協(xié)助多播多媒體會(huì)議通知和其他多播會(huì)話和并且為了和所需要的會(huì)議參與方進(jìn)行相關(guān)會(huì)話創(chuàng)建消息的通信,可能需要一個(gè)分布式會(huì)話目錄。這樣的會(huì)話目錄實(shí)例,例如SAP通知方可以周期性地對(duì)已知的多播組發(fā)送此會(huì)話的描述,其他會(huì)話目錄收到通知,這些會(huì)話目錄可能是潛在遠(yuǎn)端參與者,它們可以此會(huì)話描述在此會(huì)話中啟動(dòng)必要的應(yīng)用工具。SAP通知方本身也不知道接收方是否存在丟失,它也不會(huì)提供其他UDP/IP的可靠性保證手段。其中,SAP(SessionAnnouncementProtocol,RFC2974)是使用了類似會(huì)話目錄部署方式的協(xié)議,對(duì)這樣的會(huì)話通知,SDP提供了一種推薦會(huì)話描述格式。關(guān)于SAP中對(duì)會(huì)話的管理可以查閱RFC2974-4/5章節(jié),筆者這里不再贅述。
4、SDP要求和建議
前面筆者已經(jīng)多次介紹SDP的作用和目的,這里我們?cè)俅魏?jiǎn)單強(qiáng)調(diào)一下。SDP的目的是在多媒體會(huì)話中傳輸多媒體流,支持會(huì)話描述的接收參與到會(huì)話中。在實(shí)際應(yīng)用場(chǎng)景中,不同場(chǎng)景有對(duì)多媒體和會(huì)話有不同的要求。媒體流的呈現(xiàn)方式可以是多對(duì)多的形式,會(huì)話有時(shí)也根據(jù)業(yè)務(wù)要求,有時(shí)不會(huì)繼續(xù)呈現(xiàn)活動(dòng)狀態(tài)。目前來看,網(wǎng)絡(luò)中的基于多播會(huì)話的形式和其他會(huì)議形式有一點(diǎn)不同,任何接收會(huì)話數(shù)據(jù)方可以加入到會(huì)話中(除非會(huì)話流量加密)。在這種場(chǎng)景中,SDP有兩個(gè)基本的目的,SDP是一種已存在會(huì)話的通信手段,它同時(shí)也是一種對(duì)參與方傳輸有效信息開啟和參與會(huì)話的手段。在單播環(huán)境中,SDP的目的可能和后一種方式接近。因此,一般來說,SDP會(huì)話描述需要包括幾個(gè)方面的內(nèi)容:
- 會(huì)話名稱和目的
- 會(huì)話活動(dòng)時(shí)間
- 構(gòu)成會(huì)話的媒體
- 獲取媒體所需要的必要參數(shù)(地址,端口,格式)
- 支持會(huì)話所需帶寬
- 此會(huì)話負(fù)責(zé)人聯(lián)系方式
以上信息是SDP會(huì)話描述的基本要求,SDP會(huì)話描述需要的具體類別消息內(nèi)容包括:
媒體和傳輸信息,此部分信息包括媒體類型(語音,視頻,數(shù)據(jù)),傳輸協(xié)議(RTP/UDP/IP,H323或者),傳輸協(xié)議中需要考慮多播組地址,單播組地址和NAT等規(guī)范,媒體格式(H.263視頻,MPEG視頻)。
- 會(huì)話有效性信息:會(huì)話具有一定的時(shí)間有效性,它可以在規(guī)定邊界范圍內(nèi)活動(dòng)或者停止。它包括一個(gè)在會(huì)話時(shí)間內(nèi)的任意列表,包括啟動(dòng)和停止時(shí)間,每個(gè)會(huì)話邊界的重復(fù)次數(shù)類似信息,例如「每星期二早晨十點(diǎn)做一個(gè)小時(shí)檢測(cè)」。會(huì)話時(shí)間有效性具有全局持續(xù)性的特點(diǎn),和本地設(shè)置不相關(guān)。
- 私有會(huì)話:SDP中可以支持私有會(huì)話和公共會(huì)話。私有會(huì)話是通過加密方式來處理,公共會(huì)話則無需加密。SDP自己本身沒有對(duì)兩種會(huì)話加以區(qū)別。在私有會(huì)話分發(fā)前對(duì)會(huì)話描述進(jìn)行加密則可。如果是私有廣播的話,需要對(duì)廣播增加私有密鑰。關(guān)于SDP加密機(jī)制的處理,讀者可查閱RFC2974和RFC3261。
- 更多會(huì)話其他信息:SDP會(huì)話描述應(yīng)該傳遞更多足夠的信息全部參與方是否加入會(huì)話中。SDP也可以包括一個(gè)URL來獲得更多會(huì)話信息支持。
- 歸類:當(dāng)很多會(huì)話描述通過SAP或者其他機(jī)制分發(fā)出去時(shí),應(yīng)該支持一個(gè)過濾會(huì)話設(shè)置,接收方可以針對(duì)自己感興趣的會(huì)話接收響應(yīng),過濾掉不感興趣的會(huì)話。因此,通過劃分類別來加以區(qū)分。SDP支持了一個(gè)類別定義機(jī)制,可以支持對(duì)某些會(huì)話做類別處理,SDP通過"a=cat:"屬性定義類別。
國(guó)際化支持,SDP推薦使用UTF-8解碼(RFC3629規(guī)范)使用ISO10646字符串來實(shí)現(xiàn)多語言解碼支持。但是,為了保持會(huì)話描述格式的緊湊,有時(shí)SDP也支持其他的字符串規(guī)范,例如,ISO8859-1。注意,國(guó)際化支持僅支持SDP中的自由文本格式域值(例如,會(huì)話名稱,背景信息),不支持整個(gè)SDP。
接下來的章節(jié),筆者將繼續(xù)討論SDP基礎(chǔ)的第三部分,關(guān)于細(xì)節(jié)規(guī)范的總體介紹。
參考鏈接:https://www.rfc-editor.org/rfc/rfc2974

關(guān)注微信公眾號(hào):asterisk-cn,獲得有價(jià)值的Asterisk行業(yè)分享
Asterisk freepbx FreeSBC技術(shù)文檔: www.freepbx.org.cn
融合通信/IPPBX商業(yè)解決方案:www.hiastar.com
如何使用FreeSBC,qq技術(shù)分享群:334023047