您當(dāng)前的位置是:  首頁 > 資訊 > 國內(nèi) >
 首頁 > 資訊 > 國內(nèi) >

圖解完整SIP協(xié)議以及相關(guān)周邊協(xié)議

2019-11-11 09:47:03   作者:james.zhu    來源:Asterisk開源派   評論:0  點擊:


  SIP協(xié)議以及相關(guān)的技術(shù)本身涉及了很多的相關(guān)技術(shù)。特別是最近幾年,因為語音視頻業(yè)務(wù)模式的不斷演進(jìn),所支持的技術(shù)也越來越豐富。筆者在編寫很多關(guān)于SIP協(xié)議技術(shù)文章時總是會提及到其他的相關(guān)協(xié)議。很多讀者反饋,他們也想進(jìn)一步學(xué)習(xí)SIP協(xié)議和周邊的相關(guān)的協(xié)議,但是缺乏一個基本的脈絡(luò)來了解SIP以及其他相關(guān)協(xié)議和技術(shù)的背景。
  其實,筆者自己也是通過前期SIP協(xié)議的脈絡(luò),一步步拓展到其他的協(xié)議和技術(shù)領(lǐng)域,然后在不斷深挖其背景知識。經(jīng)過一段時間后,這些背景知識能夠都連接起來,最后就可以基本上完整了解SIP語音技術(shù)方面的相關(guān)背景知識。今天,筆者根據(jù)以前的一下積累和網(wǎng)絡(luò)資源知識,給大家分享一些關(guān)于SIP協(xié)議和相關(guān)協(xié)議的總覽,以便讀者能夠完整了解其大概的技術(shù)路徑,方便讀者以后學(xué)習(xí)。當(dāng)然,具體的每個協(xié)議的具體細(xì)節(jié)和其應(yīng)用場景,筆者建議讀者還要根據(jù)自己的工作比較來進(jìn)一步研究,筆者是從整個SIP協(xié)議和多個角度來分享一些相關(guān)的RFC官方。
  這里,筆者提醒大家, RFC協(xié)議和SIP相關(guān)技術(shù)在一直不斷更新中,一些舊的RFC版本可能更新為比較新的RFC版本,同時,RFC標(biāo)準(zhǔn)組織也在不斷添加新的RFC規(guī)范,所以,這里的內(nèi)容不一定肯定是最新的規(guī)范,所以,大家在使用過程中需要不斷查閱RFC規(guī)范的官方網(wǎng)站獲得最新的資源(盡量查看RFC3XXX以上規(guī)范包括8XXX,2XXX左右版本已經(jīng)停止使用)。目前,其總覽包括對幾個方面內(nèi)容為:SIP核心內(nèi)容,SIP拓展功能,會話描述協(xié)議,NAT處理機(jī)制協(xié)議,安全機(jī)制處理協(xié)議,呼叫服務(wù)的規(guī)范協(xié)議,3GPP/PSTN等規(guī)范協(xié)議等差不多十二大分類(此分類僅是一個非官方的分類方式,不一定非常嚴(yán)謹(jǐn),僅為了學(xué)習(xí)方便),F(xiàn)在我們逐步介紹這些分類。
  1、SIP核心相關(guān)協(xié)議和概念定義
  此部分協(xié)議規(guī)定了SIP協(xié)議的基本框架和其主要的一些核心的概念構(gòu)成。一般,我們討論的大部分是關(guān)于RFC3261的協(xié)議,這是SIP協(xié)議的最核心的部分。其核心概念包括的主要功能:SIP注冊,會話管理,SIP定位查詢,SIP拓展頭定義等。
  RFC: 3261, 3263, 3311, 3327, 3665, 4320, 5407, 5621, 5658 5954, 6062, 6086, 6141, 6228, 6357, 7339, 7415, 7462, 6442
  2、會話描述相關(guān)協(xié)議
  此部分主要針對SIP會話描述中的相關(guān)參數(shù)進(jìn)行規(guī)范說明,主要的是針對SDP的說明。讀者可能比較熟悉的RFC例如3264,SDP描述的RFC4566, 此規(guī)范定義了SDP的Offer/Answer 模式,RTP控制協(xié)議RTCP等。
  RFC:4091. 3264,3388,3407,3605,4145,4317,4566,4574,4756,4796,4867,5159,5888,5939,5956,6871,6157,6337,4092605,4145,4317,4566,4574,4756,4796,4867,5159,5888,5939,5956,6871
  6157,6337,4092
  3、基本SIP拓展協(xié)議
  SIP協(xié)議-RFC3261不可能完全覆蓋所有的SIP的協(xié)議內(nèi)容。很多比較新的功能或者其他第三方的規(guī)范需要和SIP協(xié)議整合在一起。其SIP拓展功能扮演著這個角色。通過對SIP協(xié)議的拓展,SIP協(xié)議就可以支持更多的其他除RFC3261以外的拓展功能。例如,最近我們剛剛討論的可靠性傳輸使用的拓展RFC3262。讀者可以查閱歷史文檔獲得這些說明。
  RFC:7131, 2976,3323,3325,3326,3420,3608,3840,3841,4028,4168,4244,5049,5079,5688,5767,5876,6050,6432,6809,7044,7092,7118,7206,7316,7329,7332,7544,  3262
  4、PSTN/ISDN/3GPP相關(guān)協(xié)議
  此部分規(guī)范了以前或者現(xiàn)在一些運營商和終端客戶仍然使用的PSTN線路,SS7網(wǎng)絡(luò)等相關(guān)的規(guī)范,也包括了IMS網(wǎng)絡(luò)的接入和處理規(guī)范說明,例如支持的SIP-T規(guī)范說明,SS7中的ISUP和SIP消息的映射,早期媒體流處理,移動端的MSRP等。
  RFC:2848,3204,3324,3325,3398,3578,3666,3910,3959,3960,4083,4457,5502,5876,6432,6567,7315,7316,7433,7434,7549, 3372,8591
  5、支持的各種服務(wù)功能
  SIP協(xié)議主要是規(guī)范了語音或者視頻呼叫的流程,當(dāng)然需要規(guī)范其具體的服務(wù)功能和IPPBX的一些具體的功能,例如(BLA,電話轉(zhuǎn)接等)。此分類主要針對呼叫過程中的服務(wù)功能進(jìn)行規(guī)范說明,例如目前SIP用戶使用比較多的SBC的使用場景(RFC5853)。關(guān)于SBC的部署場景,查閱筆者以前的歷史文檔,筆者針對SBC部署場景有非常多的討論。
  RFC: 3891, 3515, 3725, 3892, 4117, 4488, 4508 5194, 5359, 5369, 5373, 5359, 5589, 5629, 5631 5853, 5897, 5947, 6011, 6140, 6341, 6442, 6774, 6794, 6872, 6873, 6910, 6913,  7118, 7245, 7355, 7416, 7463, 7092
  6、呼叫質(zhì)量保證服務(wù)協(xié)議
  SIP協(xié)議中呼叫是主要的目的。但是在呼叫過程中如何保證其語音質(zhì)量能夠在每一個節(jié)點都能正常進(jìn)行,如何通過一定的技術(shù)手段來保證其呼叫語音質(zhì)量。此分類具體規(guī)范了一些重要的指標(biāo)說明,例如,QoS等。
  RFC: 3611, 3312, 3313, 3524, 3326, 6076,3890, 4032, 5027, 6035, 6794, 4412
  7、即時消息和在線服務(wù)相關(guān)協(xié)議
  在SIP技術(shù)應(yīng)用場景中,除了基本的呼叫功能以外。用戶還使用了IM功能和在線狀態(tài)功能,這些功能支持了更多融合通信,移動終端等一些富媒體功能說明,例如,訂閱推送等具體功能。
  RFC: 4481, 3856,3857,3863, 4119,4235, 4480, 4482, 4483, 4575, 4730, 5139,
  5196, 5262, 5362, 5365, 5367, 5491, 5606,5628, 5774, 5839, 5962, 6447, 6848, 6914, 6993, 7081, 7247, 7248, 7459, 7573, 7572
  8、事件提示服務(wù)相關(guān)協(xié)議
  事件提醒是目前比較熱門的一個功能大類。一些基于手機(jī)APP的SIP終端協(xié)議這些功能來實現(xiàn)呼叫喚醒,呼入來電以后,手機(jī)APP可以接聽來電呼叫。這些功能需要手機(jī)APP設(shè)置推送功能。此大類規(guī)定了如何實現(xiàn)事件推送等相關(guān)協(xié)議。
  RFC: 7621, 3265, 3680, 3856, 3903, 4574, 4575, 4660, 4661, 5363, 5367, 5839
  5875, 5989, 6140, 6446, 6665, 6795, 7106,7200, 3842
  9、SIP URLs其他使用協(xié)議
  事實上,SIP協(xié)議的規(guī)范很多是來自于HTML中的語法。因此,SIP協(xié)議也能夠支持通過URL來處理一些流程。其規(guī)范定義了一些通過URL進(jìn)行SIP呼叫處理的機(jī)制。
  RFC: 7621, 3087, 4240, 4458, 5365, 5627, 5630, 6468, RFC2396
  10、SIP安全機(jī)制相關(guān)協(xié)議
  此部分規(guī)范定義了和安全相關(guān)的一些RFC說明,包括用戶驗證,語音加密等參數(shù)配置機(jī)制,例如TLS,ICE等。
  RFC:5361, 3329, 3358, 3893, 4474, 4538, 4567, 4568, 4570, 4572, 4916,
  5009, 5027, 5360, 5363, 5393, 5922, 5923, 5924, 6216, 6072
  11、緊急呼叫服務(wù)實現(xiàn)協(xié)議
  因為SIP使用的場景越來越多,一些國家和地區(qū)已經(jīng)完全停止了PSTN的運營。傳統(tǒng)的PSTN場景中,每個電話號碼都?xì)w屬于當(dāng)?shù)剡\營商,如果每個終端客戶發(fā)生緊急事件,電話系統(tǒng)的用戶可以直接撥打當(dāng)?shù)氐囊恍┚o急服務(wù)號碼。在SIP語音呼叫場景中,這個功能就在管理起來就顯得比較復(fù)雜,因為SIP線路的運營商可能不在用戶本地,提供的號碼也不一定在本地,因此,用戶在呼叫時,到底呼叫到哪里的緊急服務(wù)號碼就是一個非常大的疑問。另外,一些國家針對語音呼叫專門針對電話系統(tǒng)的服務(wù)做了一些法律的規(guī)范,如果電話系統(tǒng)出現(xiàn)了不能支持緊急呼叫的錯誤,電話系統(tǒng)的廠家也需要承擔(dān)一定的責(zé)任。因此,在如何實現(xiàn)緊急呼叫方面,RFC組織專門發(fā)布了一些規(guī)范來說明緊急呼叫的功能支持。
  RFC:5031, 5012, 5069, 5222, 6444, 7135, 7163, 4412
  12、媒體多方通信相關(guān)協(xié)議
  SIP語音除了單純的單方語音呼叫以外,也支持了多方的呼叫場景,例如語音電話會議,視頻會議等功能,例如支持的最新的RTP的SSRCs更新版本, 以及融合通信功能中的BFCP在SIP雙流中的一些應(yīng)用場景的規(guī)范。
  RFC:3911, 4245, 4353, 4579, 4583, 5057, 5239, 5364, 5366, 5368, 5370, 5850, 4582, 8108
  13、關(guān)于SIP和NAT處理協(xié)議
  SIP使用場景中,我們經(jīng)常會遇到外網(wǎng)SIP終端注冊問題,服務(wù)器遇到NAT設(shè)置等問題。這些都有相應(yīng)的規(guī)范來指導(dǎo)廠家支持一些和NAT地址轉(zhuǎn)換相關(guān)的說明。
  RFC:3581,4961,5245,5389,5626,5766,5768,  5769,5780,5928,6156,6223,6314,6336,6544,7064,7065,7350,7376,7443,7584,7635,7675
  14、如何學(xué)習(xí)
  前面筆者談?wù)摵芏嚓P(guān)于SIP協(xié)議和周邊協(xié)議的內(nèi)容。但是,畢竟我們每個人的時間和資源有限,每個人都有知識盲點,我們不可能把所有的知識都能夠很好地掌握,也不要相信那些所謂的人生導(dǎo)師和行業(yè)權(quán)威。這是一個沒有權(quán)威的時代,只要大家愿意去學(xué)習(xí),沒有人能夠阻擋住你自己進(jìn)步的腳步(懶和焦慮,英語不好是我們這個時代賦予的最好借口)。現(xiàn)在的環(huán)境更加容易獲得學(xué)習(xí)資源。根據(jù)基本的工作環(huán)境和業(yè)務(wù)需求,筆者斗膽提供以下幾個建議(以下都是正確的廢話):
  • 利用網(wǎng)絡(luò),查閱相關(guān)的RFC文檔資料,查閱大廠的技術(shù)文檔,查閱開源項目的文檔資料。
  • 下載可以使用的工具資料,以RFC3261為起點,逐步拓展知識點。例如開源的軟交換(Kamailio/OpenSIPS),開源的媒體服務(wù)器(Asterisk/FreeSWITCH/OpenIMS),開源的FreePBX,開源的SIP終端,F(xiàn)reeSBC,開源的排查工具。這些都可以自己學(xué)習(xí)配置來掌握相關(guān)的SIP技術(shù)協(xié)議。
  • 不斷實踐練習(xí),切記不要成為一個界面工程師。很多開發(fā)人員或者維護(hù)人員也僅僅停留在界面開發(fā)和數(shù)據(jù)庫連接上,如果你是一位語音通信工程師的話,底層協(xié)議才是你需要掌握的知識點。
  • 結(jié)合自己的工作環(huán)境和公司業(yè)務(wù),深挖和自己業(yè)務(wù)相關(guān)的規(guī)范標(biāo)準(zhǔn)。
  • 不斷學(xué)習(xí)最新的關(guān)于SIP協(xié)議相關(guān)協(xié)議和技術(shù),關(guān)注比較權(quán)威的組織,例如3GPP。
  • 閱讀比較經(jīng)典的一些開源項目代碼和實現(xiàn)方式,配合RFC規(guī)范檢測這些功能實現(xiàn)流程。
  15、總結(jié)
  SIP協(xié)議和其相關(guān)技術(shù)涉及了很多方面的其他協(xié)議,讀者在學(xué)習(xí)時一定要搞明白整個學(xué)習(xí)的路徑,同時結(jié)合自己的業(yè)務(wù)場景來提升自己的能力。本文章的主要目的是為SIP技術(shù)學(xué)習(xí)的開發(fā)維護(hù)人員通過一個基本的學(xué)習(xí)路徑,幫助讀者能夠非常清楚地掌握相關(guān)的RFC標(biāo)準(zhǔn)。本文章涵蓋了13個章節(jié),通過這些章節(jié)清楚明了地說明了具體涉及的RFC規(guī)范,讀者根據(jù)其脈絡(luò)做進(jìn)一步的學(xué)習(xí)。最后,筆者為讀者提供了一些基本的建議,讀者可以根據(jù)這些建議來學(xué)習(xí)。
  再次說明,本文章中所涉及的規(guī)范可能會經(jīng)常更新,很多規(guī)范本身也會隨時隨著其他規(guī)范的更新而再次更新。因此,這里不可能非常準(zhǔn)確涵蓋所有的RFC規(guī)范,可能筆者也遺漏了一些RFC規(guī)范。另外,RFC本身沒有規(guī)范的分類,這里僅為了學(xué)習(xí)發(fā)布,筆者自己劃分的一些分類,可能誤導(dǎo)讀者。請讀者諒解!
  參考資料:
  https://tools.ietf.org/html/rfc7957
  https://tools.ietf.org/html/rfc5411
  http://www.cs.columbia.edu/sip/drafts.html


  關(guān)注微信公眾號:asterisk-cn,獲得有價值的Asterisk/SIP技術(shù)和行業(yè)分享
  權(quán)威Asterisk freepbx FreeSBC技術(shù)文檔: www.freepbx.org.cn
  完整企業(yè)融合通信商業(yè)解決方案:www.hiastar.com
  如何使用FreeSBC+FreeSWITCH/Asterisk,qq技術(shù)分享群:334023047
【免責(zé)聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

專題

CTI論壇會員企業(yè)