頭域值可以以比較長的格式或者壓縮格式出現(xiàn)在同樣的消息體中。在使用時每個頭都必須支持比較長的格式和壓縮格式。
7.4 Bodies
除非另外提示,Requests(請求)可能包括消息體,這種請求包括一個新請求,新請求在本規(guī)范的新拓展中定義。消息體解析依賴于請求方式method。
對響應(yīng)消息來說,請求方式和響應(yīng)狀態(tài)碼決定消息體類型和消息解析。所有的響應(yīng)可能包括在一個消息體。
7.4.1 MessageBody Type
消息體的網(wǎng)絡(luò)媒體類型必須通過Content-Type頭給定。如果消息體已經(jīng)處理過編碼流程,例如壓縮,那么必須通過Content-Encoding頭聲明;否則,必須忽略Content-Encoding。如果可行的話,聲明消息體字符串為Content-Type頭的一個部分。
在RFC 2046[11]定義的 "multipart" MIME 類型可以在消息體中使用。在使用中,如果遠(yuǎn)端部署方請求通過了一個Accept頭,這個頭沒有包含multipart,那么,發(fā)送的請求中包含多方消息體必須發(fā)送一個會話描述作為一個非multipart消息體。
SIP消息可以包含二進(jìn)制消息體或消息體的部分。當(dāng)發(fā)送方?jīng)]有提供明確的字符參數(shù)設(shè)置時,被定義的text的媒體子類型有一個默認(rèn)字符設(shè)置值"UTF-8"。
7.4.2MessageBody Length
以bytes為單位的消息體長度是由Content-Length頭提供。Section 20.14描述了頭內(nèi)容的具體細(xì)節(jié)。
HTTP/1.1中的分塊傳輸編碼不能在SIP中使用。(注意:為了以一系列的傳輸來分塊數(shù)據(jù),分塊傳輸編碼修改了消息體,每一個塊都有各自的大小指示)
7.5FramingSIP Messages
不像HTTP,SIP部署使用了UDP或其他的不可信賴的數(shù)據(jù)包協(xié)議。每個數(shù)據(jù)包傳輸一個請求或者響應(yīng)。Section 18介紹了使用非可靠性傳輸?shù)南薅ā?/div>
通過以數(shù)據(jù)流方式傳輸方式來處理SIP消息的機(jī)制必須在start-line之前忽略掉任何回車換行字符[H4.1]。
Content-Lengthheader頭的值用來定位數(shù)據(jù)流中的每個SIP消息結(jié)束位置。當(dāng)SIP消息是通過數(shù)據(jù)方式傳輸時,它總是出現(xiàn)在這里。
8 GeneralUser Agent Behavior
一個用戶代理表示一個最終的系統(tǒng)架構(gòu)。它包含一個用戶代理客戶端(UAC),用來產(chǎn)生請求,和一個用戶代理服務(wù)器端,它用來對請求產(chǎn)生響應(yīng)反饋。UAC用戶代理客戶端具備產(chǎn)生請求的能力,UAC產(chǎn)生請求是由外部刺激和驅(qū)動的流程而產(chǎn)生(例如,用戶點(diǎn)擊了一個按鈕和PSTN線路上的一個信號),并且對響應(yīng)進(jìn)行處理。一個UAS代理客戶端可以接收一個請求,并且基于用戶輸入,外部驅(qū)動刺激,程序執(zhí)行結(jié)果或者其他機(jī)制所產(chǎn)生一個響應(yīng)。
當(dāng)一個UAC發(fā)送一個請求時,這個請求會經(jīng)過幾個代理服務(wù)器,這些代理服務(wù)器將前轉(zhuǎn)這個請求到UAS。當(dāng)UAS生成響應(yīng)時,這個響應(yīng)會返回到UAC。
UAC和UAS的處理流程完全依賴于兩個因素。首先,這個流程取決于這個請求或響應(yīng)是否在dialog里面還是外面,其次,流程還取決于請求的method。Dialogs的討論將會在Section 12進(jìn)行;它們表示一種介于用戶代理之間的點(diǎn)對點(diǎn)的關(guān)系,這個關(guān)系是通過具體的SIP methods創(chuàng)建的,例如INVITE。
在本部分內(nèi)容中,我們討論UAC和UAS的執(zhí)行處理規(guī)則,這個規(guī)則是完全獨(dú)立于method的,當(dāng)處理請求時,這些請求是在dialog的外面。這里當(dāng)然也包括請求自己創(chuàng)建的dialog。
關(guān)于dialog外部的對請求和響應(yīng)的安全處理流程的描述在Section 26進(jìn)行。具體來說,介于UAS和UAC存在的機(jī)制是互相驗(yàn)證的過程。通過消息體使用S/MIME加密的方式實(shí)現(xiàn)一系列私有功能支持。
8.1 UACBehavior
這部分討論UAC的外面dialog的運(yùn)行狀態(tài)。
8.1.1 Generatingthe Request
一個有效的被UAC規(guī)范化的SIP請求必須最低包括以下幾個頭字段:To,F(xiàn)rom, CSeq,Call-ID,Max-Forwards,和 Via;對所有SIP請求來說,這些頭字段是強(qiáng)制支持的。
這六個頭字段是構(gòu)建一個SIP消息的基礎(chǔ)結(jié)構(gòu),因?yàn)樗鼈兟?lián)合起來為SIP通過了最基本
的和最重要的路由服務(wù),消息地址,響應(yīng)路由,限定消息擴(kuò)展,消息順序和事務(wù)的唯一身份。
這些頭字段另外包含了method,Request-URI,和SIPversion。
運(yùn)行在dialog外面的請求發(fā)送示例包括了一個INVITE,它用來創(chuàng)建一個會話 (Section 13) 和一個OPTIONS,它用來查詢能力支持(Section 11)。
8.1.1.1 Request-URI
消息的初始Request-URI應(yīng)該在To頭中設(shè)置為URL的值。一個需要注意的例外就是 REGISTER method;REGISTER 的Request-URI設(shè)置方式在Section 10中討論。對于安全原因或便利性來說,它可能也不是太方便來設(shè)置這些值域?yàn)橥瑯拥闹担ㄌ貏e是,
如果在轉(zhuǎn)換期間,初始的UA希望Request-URI可以被修改的環(huán)境中)。
在某些特定的環(huán)境中,一個已存在的route狀態(tài)可以影響Request-URI的消息。一個已存在的路由系列是一系列有序URIs,這些URLs確認(rèn)服務(wù)器鏈,UAC將會發(fā)送出去的請求,這些請求是dialog外部的請求。通常情況下,這些URL在UA端通過一個用戶或服務(wù)商手動配置,或者通過其他的非SIP機(jī)制來配置。當(dāng)服務(wù)商希望配置UA支持一個outbound proxy時,規(guī)范還是推薦需要提供一個已存在的路由系列,設(shè)置為一個單URI作為一個 outbound proxy。


FreeSBC/ProSBC 免費(fèi)邊界會話控制器, 下載ISO:https://freesbc.telcobridges.com/
關(guān)注微信公眾號:asterisk-cn,獲得有價值的Asterisk行業(yè)分享
Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
Asterisk freepbx技術(shù)文檔: www.freepbx.org.cn
融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
Asterisk/FreePBX中國合作伙伴,官方qq技術(shù)分享群(3000千人):589995817
Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
Asterisk freepbx技術(shù)文檔: www.freepbx.org.cn
融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
Asterisk/FreePBX中國合作伙伴,官方qq技術(shù)分享群(3000千人):589995817
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點(diǎn)判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。
相關(guān)閱讀:
- ·SIP協(xié)議與應(yīng)用場景技術(shù)分享筆記-卷1-rfc3261-52019-01-21 10:16:13
- ·SIP協(xié)議與應(yīng)用場景技術(shù)分享筆記-卷1-rfc3261-32018-12-13 16:19:41
- ·SIP協(xié)議與應(yīng)用場景技術(shù)分享筆記-卷1-rfc3261-22018-12-07 10:43:28
- ·SIP協(xié)議與應(yīng)用場景技術(shù)分享筆記-卷1-rfc3261-12018-11-30 14:29:07
- ·SIP協(xié)議與應(yīng)用場景技術(shù)分享系列教材陸續(xù)發(fā)布2018-11-02 09:47:17
- ·PJSIP目前最流行開源SIP協(xié)議棧中國社區(qū)正式啟動2015-01-14 17:17:53