- Spiral:spiral是一種“螺旋式”處理方式,它是一個SIP請求,返回到代理,然后,代理再把這個請求前轉到其他的終端,但是處理的流程不同,也導致和初始的URL不同。通常情況下,螺旋式處理方式表示請求中的Request-URI和上一次抵達的請求中的URL是不同的。注意,螺旋式的處理流程處理不是一個錯誤條件,它和loop(回環(huán)完全不同)。典型的使用場景是呼叫前轉的處理。A用戶呼叫 joe@example.com。這里的example.com是一個代理,它會前轉到用戶Joe的電腦終端,接下來,joe會把這個呼叫前轉繼續(xù)前轉到bob@example.com。這里的請求其實又回到了同一代理example.com。但是,這種處理方式不是loop環(huán)境。因為,這里的請求發(fā)生了變化,它觸發(fā)了不同的呼叫,這里的URL是bob@example.com,不是joe@example.com。所以,它的處理是有效的處理流程,被認為是一種螺旋式的處理。而在loop中,它的處理流程和Request-URI是保持不變的,代理重復處理同樣的流程,因此導致觸發(fā)錯誤條件。
其他說明:
這里,筆者提醒讀者,筆者總感覺以上英文概念Spiral翻譯成螺旋式處理流程也不一定準確,但是筆者一時間沒有找到更加準確的中文用詞。
另外,IPPBX可以比較輕松實現(xiàn)類似呼叫轉移到功能,在一些SBC的設備中也特別支持了 SIP spiral 呼叫。
- Stateful Proxy:狀態(tài)代理是一個邏輯實體,它按照規(guī)范中請求處理的流程保持用戶端和服務器端之間的事務狀態(tài)機的處理狀態(tài),也就是所謂的事務狀態(tài)代理。狀態(tài)代理的執(zhí)行在Section 16 做了進一步的說明。狀態(tài)代理(事務)和呼叫狀態(tài)代理是不同的。
- Stateless Proxy:無狀態(tài)代理是一個邏輯實體,它不會保持用戶端和服務器端之間的事務狀態(tài)機。無狀態(tài)代理前轉從下游收到的每個請求,前轉從上游收到的每一個響應。
- Strict Routing:如果代理被稱為嚴格代理表示這個代理遵守RFC 2543的路由處理規(guī)則,和一些比較早的RFC 版本規(guī)范。當Router 頭出現(xiàn)時,那個規(guī)范會引起代理破壞 Request-URI的內容。嚴格路由的流程不在本規(guī)范中使用,本規(guī)范支持松散路由的處理。因此,執(zhí)行嚴格路由的代理也被稱之為嚴格路由器。
- Target Refresh Request:目標刷新請求是在一個dialog中發(fā)送,這個請求可以修改dialog中的遠端目標。
- Transaction User (TU): TU是處理協(xié)議層,它存在于事務層。TU(事務用戶)包括UAC core,UAS core和proxy core。
- Upstream:它表示在事務中的前轉消息方向,針對的是從用戶代理服務器端返回到用戶代理客戶端的響應流程。
- URL-encoded: 一個通過規(guī)范的RFC 2396, Section 2.4 [5]解碼的字符串。
- User Agent Client (UAC):用戶代理客戶端是一個邏輯實體,它創(chuàng)建了一個新的請求,并且使用客戶端事務狀態(tài)機發(fā)送請求。UAC的角色是僅維持那個事務的時長。換句話說,UAC是一款軟件,它發(fā)起一個請求,它以UAC的方式工作。如果它后續(xù)收到一個請求,它以用戶代理服務器的方式來處理事務流程。
- UAC Core:一系列UAC的請求處理功能,它在事務層和傳輸層以上。
- User Agent Server (UAS): 用戶代理服務器是一個邏輯實體,它對SIP請求生成一個響應。響應接受,拒絕或轉發(fā)請求。它的角色是僅維持事務時長。換句話說,它是一款軟件來響應請求,它以UAS的方式工作。如果在后續(xù)狀態(tài)中收到一個請求,它以用戶代理客戶端的方式來處理事務流程。
- UAS Core: 一系列UAS的請求處理功能,它在事務層和傳輸層以上。
- User Agent (UA):UA是一個邏輯實體,它能以用戶代理客戶端或者用戶代理服務器端的方式工作。
UAC和UAS的角色,代理和轉發(fā)服務器都是基于事務對事務的基礎上定義的。例如,用戶代理以UAC的方式發(fā)起一個呼叫時,發(fā)送請求時,它的工作方式是UAC;當從被呼叫方收到一個BYE請求時,它的工作方式是UAS。同樣的道理,同樣的軟件,它可以以代理服務器的方式工作來處理請求,也可以以轉發(fā)服務器的方式工作來處理下一個請求。
代理,定位服務器和注冊服務器都是邏輯實體。在部署時,它們可以集成為一個單一的應用服務器。
7
SIP Messages
SIP Messages
SIP 是基于文本的協(xié)議,使用的是UTF-8 charset (RFC 2279[7])。
一個SIP消息可以是從客戶端到服務器端的請求消息,也可以是服務器端到客戶端的響應消息。
雖然它們的語法規(guī)范和字符設置不同,請求 (section 7.1 ) 和響應 (section 7.2) 消息都使用RFC 2822[3]的基本格式來處理。(SIP支持RFC 2822無效的頭)。兩種類型的消息由一個起始行,一個或者多個頭,一個表示頭結束的空行和一個可選的消息體表示。
起始行,每個消息頭和空行都必須以換行符結尾。注意,即使沒有消息體,空行也要顯示。
除了上面字符的不同以外,很多SIP消息和SIP頭語法都是遵守HTTP/1.1的語法。于其在這里重復語法和語義的定義,這里,我們建議使用HTTP/1.1規(guī)范的[HX.Y] 的部分作為參考 ( RFC 2616[8])。
但是,SIP不是HTTP的拓展。
參考資料:
https://www.fftelecoms.org/app/uploads/2018/03/Version-2-1-interface-SIP-FFT-pour-interconnexion-voix_clean.pdf
https://docs.oracle.com/cd/E21764_01/doc.1111/e13807/overview.htm#OWLDG97410
關注微信公眾號:asterisk-cn,獲得有價值的Asterisk行業(yè)分享
Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
Asterisk freepbx技術文檔: www.freepbx.org.cn
融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
Asterisk/FreePBX中國合作伙伴,官方qq技術分享群(3000千人):589995817