現(xiàn)在是2020年5月,中移動(dòng)RCS剛剛推出,由于工作原因需要在原開發(fā)的SIP協(xié)議?;A(chǔ)上增加對(duì)RCS富媒體短信的支持,但是這個(gè)系統(tǒng)相關(guān)的一些業(yè)務(wù)支持還不清楚,這里做下記錄。
鄲城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
RCS(Rich Communication Suite)也叫增強(qiáng)型富媒體短信,什么概念呢,普通的短信一般只能是文本,RCS增強(qiáng)型富媒體短信有點(diǎn)象微信里的消息,可以是文本,也可以是圖片,短視頻,交互式查詢框,也能夠發(fā)紅包,可以想象一下在不安裝任何app的情況下就能實(shí)現(xiàn)微信的大部分功能。
在中移動(dòng)內(nèi)部網(wǎng)絡(luò)中會(huì)新增加5GMC消息系統(tǒng)和Maap平臺(tái)管理模塊。UE與5G消息之間的接口基于GSMA UP2.4系列標(biāo)準(zhǔn),要求平臺(tái)兼容UP2.3、UP1.0及企標(biāo)5G消息終端,但新終端均應(yīng)以UP2.4系列及以上版本作為技術(shù)參考。
信令接口使用SIP協(xié)議,涉及到的SIP方法主要有兩種:MESSAGE與INVITE,兩種方法的消息體格式是統(tǒng)一的。媒體流的傳輸使用MSRP,媒體通道的連接信息在信令交互中協(xié)商。
平臺(tái)稍微有點(diǎn)復(fù)雜,這些基本地上都由大廠來完成,作為user端,最主要是的是如何完成消息的發(fā)送。上段所描述的MESSAGE與INVITE方法也有這種說法:
CPIM (Common Presence and Instant Messaging)是一種IM通信中的會(huì)話描述格式。CPIM具體的消息格式由 RFC3862 定義。
(1)MESSAGE消息分為兩部分:消息頭部分、消息體部分。
(2)IMDN做為狀態(tài)報(bào)告,當(dāng)用戶需要狀態(tài)報(bào)告時(shí),在CPIM中攜帶IMDN頭域。
(3)消息文本內(nèi)容被封裝在CPIM中,并使用base64做為傳輸編碼。
(4)對(duì)于無法在SIP MESSAGE方法內(nèi)攜帶的SIP頭域,如Contact頭,在需要攜帶時(shí),可將此類頭域作為參數(shù)攜帶于CPIM消息體內(nèi)的From頭域中。
注冊(cè)流程和一般的SIP注冊(cè)流程相同,在參數(shù)上略有區(qū)別。需攜帶sip.instance=UUID,UUID格式根據(jù)RFC4412格式,由DMS配置參數(shù)獲取,需攜帶終端支持的業(yè)務(wù)能力。
終端支持能力見表:
消息舉例(注冊(cè)請(qǐng)求(AKA鑒權(quán)方式)):
1. 協(xié)議用ANSI C實(shí)現(xiàn)
2. 支持(Windows、VxWorks、Linux、Solaris等操作系統(tǒng))
3. 模塊之間采用松散耦合組合方式。
4. 支持從單任務(wù)到分布式系統(tǒng),多處理器支持。
5. 支持動(dòng)態(tài)創(chuàng)建多個(gè)任務(wù)實(shí)體
6. 線程安全機(jī)制
7. 支持消息或非消息驅(qū)動(dòng)方式
8. 高效的類分定時(shí)器管理策略
9. 高速編解碼技術(shù)
10. 協(xié)議日志管理
11. 協(xié)議性能統(tǒng)計(jì)
12. 方便的協(xié)議API
13. 協(xié)議Release lib文件體積有700K
14. 占用內(nèi)存比較小
Open IP Phone Develop 開放源代碼的 IP Phone 開發(fā)平臺(tái)
要在windows或者linux平臺(tái)下開發(fā)基于SIP的軟電話,需要以下軟件
服務(wù)器端軟件: 注冊(cè)多個(gè)客戶端到服務(wù)器上,可以進(jìn)行通話測(cè)試
SIP客戶端軟件 :主要用于測(cè)試,可以對(duì)別人已經(jīng)完成的客戶端進(jìn)行抓包,以比對(duì)自己程序的發(fā)包數(shù)據(jù)
SIP協(xié)議棧: 基于某個(gè)現(xiàn)成的SIP協(xié)議棧來開發(fā)會(huì)加快開發(fā)進(jìn)度
RTP棧 :傳輸語言或者視頻數(shù)據(jù)的協(xié)議棧
抓包測(cè)試工具: 調(diào)試網(wǎng)絡(luò)程序最有效的辦法
以下介紹這些軟件主要以開源軟件為主
一 服務(wù)器端軟件
H.323協(xié)議和SIP協(xié)議的比較
H.323和SIP分別是通信領(lǐng)域與因特網(wǎng)兩大陣營(yíng)推出的協(xié)議。H.323企圖把IP電話當(dāng)作是眾所周知的傳統(tǒng)電話,只是傳輸方式發(fā)生了改變,由電路交換變成了分組交換。而SIP協(xié)議側(cè)重于將IP電話作為因特網(wǎng)上的一個(gè)應(yīng)用,較其它應(yīng)用(如FTP,E-mail等)增加了信令和QoS的要求,它們支持的 業(yè)務(wù)基本相同,也都利用RTP作為媒體傳輸?shù)膮f(xié)議。但H.323是一個(gè)相對(duì)復(fù)雜的協(xié)議。
H.323采用基于ASN.1和壓縮編碼規(guī)則的二進(jìn)制方法表示其消息。ASN.1通常需要特殊的代碼生成器來進(jìn)行詞法和語法分析。而SIP的基于文本的協(xié)議,類似于HTTP?;谖谋镜木幋a意味著頭域的含義是一目了然的,如From、To、Subject等域名。這種分布式、幾乎不需要復(fù)雜的文檔說明的標(biāo)準(zhǔn)規(guī)范風(fēng)格,其優(yōu)越性已在過去的實(shí)踐中得到了充分的證明(如今廣為流行的郵件協(xié)議SMTP就是 這樣的一個(gè)例子)。SIP的消息體部份采用SDP進(jìn)行描述,SDP中的每一項(xiàng)格式為=,也比較簡(jiǎn)單。
在支持會(huì)議電話方面,H.323由于由多點(diǎn)控制單元(MCU)集中執(zhí)行會(huì)議控制功能,所有參加會(huì)議終端都向MCU發(fā)送控制消息,MCU可能會(huì)成為頸,特別是對(duì)于具有附加特性的大型會(huì)議;并且H.323不支持信令的組播功能,其單功能限制了可擴(kuò)展性,降低了可靠性。而SIP設(shè)計(jì)上就為分布式的呼叫模型,具有分布式的組播功能,其組播功能不僅便于會(huì)議控制,而且簡(jiǎn)化了用戶定位、群組邀請(qǐng)等,并且能節(jié)約帶寬。但是H.323的集中控制便于計(jì)費(fèi),對(duì)帶寬的管理也比較簡(jiǎn)單、有效。
H.323中定義了專門的協(xié)議用于補(bǔ)充業(yè)務(wù),如H.450.1、H.450.2和H.450.3等。SIP并未專門定義的協(xié)議用于此目的,但它很方便地支持補(bǔ)充業(yè)務(wù)或智能業(yè)務(wù)。只要充分利用SIP已定義的頭域(如Contact頭域),并對(duì)SIP進(jìn)行簡(jiǎn)單的擴(kuò)展(如增加幾個(gè)域),就可以實(shí)現(xiàn)這些業(yè)務(wù)。例如對(duì)于呼叫 轉(zhuǎn)移,只要在BYE請(qǐng)求消息中添加Contact頭域,加入意欲轉(zhuǎn)至的第三方地址就可以實(shí)現(xiàn)此業(yè)務(wù)。對(duì) 于通過擴(kuò)展頭域較難實(shí)現(xiàn)的一些智能業(yè)務(wù),可在體系結(jié)構(gòu)中增加業(yè)務(wù)代理,提供一些補(bǔ)充服務(wù)或與 智能網(wǎng)設(shè)備的接口。
在H.323中,呼叫建立過程涉及到第三條信令信致到:RAS信令信道、呼叫信令信道和H.245控制信道。通過這三條信道的協(xié)調(diào)才使得H.323的呼叫得以進(jìn)行,呼叫建立時(shí)間很長(zhǎng)。在SIP中,會(huì)話請(qǐng)求過程和媒體協(xié)商過程等一起進(jìn)行。盡管H.323v2已對(duì)呼叫建立過程作了改進(jìn),但較之SIP只需要1.5個(gè)回路時(shí)延來建立呼叫,仍是無法相比。H.323的呼叫信令通道和H.245控制信道需要可靠的傳 輸協(xié)議。而SIP獨(dú)立于低層協(xié)議,一般使用UDP等無法連接的協(xié)議,用自己信用層的可靠性機(jī)制來保 證消息的可靠傳輸。
總之,H.323沿用的是傳統(tǒng)的實(shí)現(xiàn)電話信令模式,比較成熟,已經(jīng)出現(xiàn)了不少H.323產(chǎn)品。H.323符合通信領(lǐng)域傳統(tǒng)的設(shè)計(jì)思想,進(jìn)行集中、層次控制,采用H.323協(xié)議便于與傳統(tǒng)的電話網(wǎng)相連。SIP協(xié)議借鑒了其它因特網(wǎng)的標(biāo)準(zhǔn)和協(xié)議的設(shè)計(jì)思想,在風(fēng)格上遵循因特網(wǎng)一貫堅(jiān)持的簡(jiǎn)練、開放、兼容和可擴(kuò)展等原則,比較簡(jiǎn)單。
以下針對(duì)它們的應(yīng)用目標(biāo)、標(biāo)準(zhǔn)結(jié)構(gòu)、系統(tǒng)組成以及系統(tǒng)實(shí)現(xiàn)的難易程度等幾個(gè)方面進(jìn)行簡(jiǎn)單分析。 h.323標(biāo)準(zhǔn)是itu-t組織 1996年在h.320/h.324的基礎(chǔ)上建立起來的,其應(yīng)用目標(biāo)是,在基ip的網(wǎng)絡(luò)環(huán)境中,實(shí)現(xiàn)可靠的面向音視頻和數(shù)據(jù)的實(shí)時(shí)應(yīng)用。如今經(jīng)過多年的技術(shù)發(fā)展和標(biāo)準(zhǔn)的不斷完善,h.323已經(jīng)成為被廣大的itu成員以及客戶所接受的一個(gè)成熟標(biāo)準(zhǔn)族。
sip標(biāo)準(zhǔn)是itef組織在1999年提出的,其應(yīng)用目標(biāo)是在基于internet環(huán)境,實(shí)現(xiàn)數(shù)據(jù)、音視頻實(shí)時(shí)通訊,特別是通過internet將視頻通訊這種應(yīng)用大眾化,引入到千家萬戶。由于sip協(xié)議相對(duì)于h.323而言,相對(duì)簡(jiǎn)單、自由,廠商可以使用相對(duì)小的成本就可以構(gòu)造滿足應(yīng)用的系統(tǒng)。例如僅僅使用微軟基于sip協(xié)議的msn,和rtc就可以構(gòu)造一個(gè)簡(jiǎn)單的,基于internet應(yīng)用環(huán)境的視頻通訊環(huán)境。這樣網(wǎng)絡(luò)運(yùn)營(yíng)商就可以在盡量少的成本基礎(chǔ)上,利用現(xiàn)有的網(wǎng)絡(luò)資源開展視音頻通訊業(yè)務(wù)的擴(kuò)展工作。 h.323是一個(gè)單一標(biāo)準(zhǔn),而不是一個(gè)關(guān)于在ip環(huán)境中實(shí)時(shí)多媒體應(yīng)用的完整標(biāo)準(zhǔn)族,對(duì)于呼叫的建立、管理以及所傳輸媒體格式等各個(gè)方面都有完善而嚴(yán)格的規(guī)定。一個(gè)遵守h.323標(biāo)準(zhǔn)建立的多媒體系統(tǒng),可以保證實(shí)現(xiàn)客戶穩(wěn)定完善的多媒體通訊應(yīng)用。
sip標(biāo)準(zhǔn)嚴(yán)格意義上講是一個(gè)實(shí)現(xiàn)實(shí)時(shí)多媒體應(yīng)用的信令標(biāo)準(zhǔn),由于它采用了基于文本的編碼方式,使得它在應(yīng)用上,特別是點(diǎn)到點(diǎn)的應(yīng)用環(huán)境中,具有極大的靈活性、擴(kuò)充性以及跨平臺(tái)使用的兼容性,這一點(diǎn)使得運(yùn)營(yíng)商可以十分方便的利用現(xiàn)有的網(wǎng)絡(luò)環(huán)境實(shí)現(xiàn)大規(guī)模的推廣應(yīng)用。
但是sip協(xié)議自身不支持多點(diǎn)的會(huì)議功能以及管理和控制功能,而是要依賴于別的協(xié)議實(shí)現(xiàn),影響了系統(tǒng)的完備性,特別是對(duì)于需要多點(diǎn)通訊的要求,應(yīng)用單純的sip系統(tǒng)難以實(shí)現(xiàn)。針對(duì)這些不足,以radvison公司為首的itu-t sg16小組提出了sip的運(yùn)用規(guī)范,并實(shí)現(xiàn)了sip和h.323之間的互通互聯(lián),并成功的解決了sip在多點(diǎn)環(huán)境下的應(yīng)用難題。 首先,在系統(tǒng)主要組成成員的功能性方面進(jìn)行類比,sip的ua等價(jià)于一個(gè)h.323的終端,實(shí)現(xiàn)呼叫的發(fā)起和接收,并完成所傳輸媒體的編解碼應(yīng)用;sip代理服務(wù)器、重定向服務(wù)器以及注冊(cè)服務(wù)器的功能則等價(jià)于h.323的gatekeeper,實(shí)現(xiàn)了終端的注冊(cè)、呼叫地址的解析以及路由。
其次,雖然在呼叫信令和控制的具體實(shí)現(xiàn)上不同,但一個(gè)基于sip的呼叫流程與h.323的q931相類似,sip所采用的會(huì)話描述協(xié)議(sdp)則類似于h.323中的呼叫控制協(xié)議h.245。 h.323標(biāo)準(zhǔn)的信令信息是采用符合asn.1 per的二進(jìn)制編碼,并且在連接實(shí)現(xiàn)全過程都要嚴(yán)格標(biāo)準(zhǔn)的定義,系統(tǒng)的自由度小,如要實(shí)現(xiàn)大規(guī)模的應(yīng)用,需要對(duì)整個(gè)網(wǎng)絡(luò)的各個(gè)環(huán)節(jié)進(jìn)行規(guī)劃。
sip標(biāo)準(zhǔn)的信令信息是基于文本的,采用符合iso10646的utf-8編碼,并且全系統(tǒng)的構(gòu)造結(jié)構(gòu)相對(duì)靈活,終端和服務(wù)器的實(shí)現(xiàn)也相對(duì)容易成本也較低,從網(wǎng)絡(luò)運(yùn)營(yíng)商的角度考慮,構(gòu)造一個(gè)大規(guī)模視頻通訊網(wǎng)絡(luò),采用sip系統(tǒng)的成本要廉價(jià)許多,而且也更具有可實(shí)現(xiàn)性。 在這里,我只討論與java相關(guān)的SIP技術(shù),其實(shí)實(shí)現(xiàn)SIP的技術(shù)有多種,比如CGI.
java為SIP提供了非常好的支持,JCP(Java Community Process)組織推動(dòng)開發(fā)的一套基于Java技術(shù)的API:JAIN API(Java API for Integrated Networks),它包含JAIN SIP(JAIN SIP Lite)和SIP Servlet(JSR 116),SIP for J2ME,三個(gè)規(guī)范.
以下為與java相關(guān)的SIP技術(shù):
JAIN SIP API (JSR 32)
SIP Servlet API (JSR 116)
JAIN SIP Lite (JSR 125)
SIP API for J2ME (JSR 180)
JAIN SIMPLE Presence (JSR 164)
JAIN SIMPLE Instant Messaging (JSR 165)
JAIN SDP (JSR 141) SIP描述協(xié)議
Java Media Framework for RTP (J2SE可選包,并非JAIN的)
SIP for J2ME:(JSR 180 )
JAIN SIP API主要提供了J2SE平臺(tái)的SIP協(xié)議棧的實(shí)現(xiàn),主要面向桌面的J2SE應(yīng)用;SIP Servlet API主要為面向服務(wù)端的SIP程序提供了一個(gè)API規(guī)范,如今實(shí)現(xiàn)了該規(guī)范的應(yīng)用服務(wù)器有BEA Weblogic SIP Server和Micromethod,還有Jiplet Container,至于如何開發(fā)sip servlet,可參見參考資料.SIP for J2ME主要為面向手機(jī)的CLDC設(shè)備的J2ME客戶端.它們之間的差別在參考資料[6]中講解得很詳細(xì).
其它Java相關(guān)技術(shù):
jiplet: 一個(gè)支持sip servlet的應(yīng)用服務(wù)器
nist-sip SIP Libraries and Tools
JAIN Service Logic Execution Environment (SLEE)
sip是基本協(xié)議,像Psip,osip等都是sip的一種實(shí)現(xiàn),類似與封裝了一層,方便使用。
SIP文檔和標(biāo)準(zhǔn)協(xié)議。SIP的標(biāo)準(zhǔn)協(xié)議都是IETF制定的,所以SIP的標(biāo)準(zhǔn)協(xié)議都是通過RFCXXXX的方式來公布的,每個(gè)協(xié)議均制定了一些SIP的特性。我研究了一些,將自己目前認(rèn)為幾個(gè)比較主要的SIP協(xié)議記錄下來。因?yàn)闆]有涉及SDP和加密,所以和這兩塊相關(guān)的協(xié)議沒有做過多的研究。
RFC3261:SIP的基本協(xié)議,定義了SIP的基本功能,特性等。要搞SIP的話,這個(gè)協(xié)議是不能不看的。網(wǎng)上有人已經(jīng)將它翻譯成中文,再結(jié)合英文原版協(xié)議看,應(yīng)該比較好理解。
RFC3262:SIP中,如何定位服務(wù)器。這個(gè)沒過多研究,一般的SIP協(xié)議棧都可以很好的支持,讓它們?nèi)プ鼍涂梢粤恕?/p>
RFC3265:事件通知機(jī)制,可通過此協(xié)議進(jìn)行一些事件監(jiān)控。
RFC3515:呼叫的轉(zhuǎn)接。
RFC3666:與PSTN連接時(shí)的一些特性的說明。
RFC3911:通過Join的方式進(jìn)行會(huì)議。