
10.2.2 Removing Bindings
注冊(cè)綁定是一種軟狀態(tài),除非此狀態(tài)被刷新,否則,它會(huì)終止注冊(cè)狀態(tài),但是也可以直接解除綁定關(guān)系。 客戶端可以嘗試去設(shè)置超時(shí)周期來解除綁定,超時(shí)周期有注冊(cè)服務(wù)來設(shè)置,具體的描述在Section 10.2.1中介紹。一個(gè)UA可以通過在注冊(cè)請(qǐng)求中的Contact地址中設(shè)置超時(shí)周期為0來立即解除綁定。在超時(shí)周期超時(shí)之前,UAs應(yīng)該支持綁定解除的機(jī)制。
REGISTER-specific Contact 頭域"*"的值應(yīng)用在所有的注冊(cè)中,但是它一定不能被使用,除非Expires以設(shè)置為“0”的方式出現(xiàn)。 使用Contact頭的“*”允許一個(gè)正在注冊(cè)的UA移除所有和address-of-record綁定的關(guān)系,無需知道其準(zhǔn)確數(shù)值。
10.2.3 Fetching Bindings
無論請(qǐng)求是否包含一個(gè)Contact頭,對(duì)任何注冊(cè)請(qǐng)求來說,一個(gè)成功的協(xié)議包含完整的存在的綁定列表。如果沒有Contact頭出現(xiàn)在當(dāng)前的注冊(cè)請(qǐng)求中,綁定列表不會(huì)修改。
10.2.4 Refreshing Bindings
每個(gè)UA負(fù)責(zé)對(duì)已創(chuàng)建的綁定進(jìn)行刷新。一個(gè)UA的綁定不應(yīng)該由其他的UA執(zhí)行綁定刷新。 從注冊(cè)服務(wù)獲得的200(OK)響應(yīng)碼包含了一個(gè)Contact域的列表,這個(gè)列表模擬當(dāng)前的綁定狀態(tài)。如果UA通過Section 19.1.4中的對(duì)比規(guī)則,已經(jīng)創(chuàng)建了這個(gè)contact 地址, UA會(huì)對(duì)比每個(gè)contact地址來對(duì)照檢查。如果是這樣的話,這個(gè)UA會(huì)根據(jù)超時(shí)參數(shù)更新超時(shí)周期設(shè)置,或者,如果缺省了這個(gè)參數(shù)的話,則根據(jù)這個(gè)Expires域來設(shè)置超時(shí)設(shè)置。 此UA在超時(shí)周期時(shí)間到期之前,然后對(duì)它的每個(gè)綁定執(zhí)行一個(gè)REGISTER請(qǐng)求。它可能在一個(gè)REGISTER請(qǐng)求中合并幾個(gè)更新。
在單個(gè)啟動(dòng)循環(huán)中,一個(gè)UA應(yīng)該使用同一Call-ID支持所有的注冊(cè)。除非是一個(gè)轉(zhuǎn)發(fā)服務(wù),作為初始注冊(cè),注冊(cè)刷新應(yīng)該被發(fā)送到同樣的網(wǎng)絡(luò)地址中。
10.2.5 Setting the Internal Clock
如果注冊(cè)請(qǐng)求中的響應(yīng)包含一個(gè)Date 頭,客戶端可以使用這個(gè)日期頭來獲悉當(dāng)前的時(shí)間,以便使用此時(shí)間設(shè)置任何內(nèi)部時(shí)鐘。
10.2.6 Discovering a Registrar
UA能夠使用三種方式來決定注冊(cè)的地址:通過配置的方式,使用address-of-record地址,使用multicast廣播方式。通過注冊(cè)服務(wù)地址,UA能夠被設(shè)置。如果沒有設(shè)置注冊(cè)服務(wù)的地址的話,UA應(yīng)該使用address-of-record的主機(jī)地址作為Request-URI,并且使用正常的SIP定位服務(wù)機(jī)制[4]對(duì)此地址發(fā)送請(qǐng)求。例如,對(duì)于這個(gè)UA的用戶 sip:carol@chicago.com來說,其注冊(cè)地址請(qǐng)求應(yīng)該發(fā)送到sip:chicago.com。
最后,一個(gè)UA可以使用廣播的方式來進(jìn)行設(shè)置。廣播注冊(cè)被稱之為"all SIP servers" 廣播地址 "sip.mcast.net" (224.0.1.75 是IPv4地址)。沒有分配到?jīng)]有非常熟知的IPv6廣播地址;這種廣播地址分配目前沒有獨(dú)立說明。SIP UA可以監(jiān)聽那個(gè)地址,使用此地址,并且讓其他當(dāng)?shù)赜脩粢部梢垣@悉本UA的地址狀態(tài)(參考 [33]);但是,本地用戶不會(huì)對(duì)此請(qǐng)求回復(fù)響應(yīng)消息。
廣播注冊(cè)方式可能不適合使用在某些環(huán)境中,例如,多個(gè)業(yè)務(wù)共享同一內(nèi)網(wǎng)。
10.2.7 Transmitting a Request
一旦REGISTER method構(gòu)建成功以后,并且消息目的地確認(rèn)以后,UACs會(huì)根據(jù)在 Section 8.1.2 中所描述的流程讓傳輸層來進(jìn)行下一步處理。 因?yàn)镽EGISTER無響應(yīng)生成,如果傳輸層返回超時(shí)錯(cuò)誤,UAC不應(yīng)該馬上重新注冊(cè)到同樣的注冊(cè)服務(wù)。 一個(gè)馬上重新注冊(cè)的處理流程也可能和超時(shí)一樣。在一個(gè)合理的時(shí)間周期范圍內(nèi)等待網(wǎng)絡(luò)環(huán)境的修正,降低網(wǎng)絡(luò)負(fù)載,排查網(wǎng)絡(luò)設(shè)備故障。這里,無特別具體的時(shí)間周期設(shè)置。
10.2.8 Error Responses
如果一個(gè)UA收到了423響應(yīng)碼(Interval Too Brief),它可以重新注冊(cè)。但是,這里有一個(gè)必要條件-注冊(cè)請(qǐng)求中的超時(shí)周期后才能重新注冊(cè)。具體來說,注冊(cè)流程中需要耗費(fèi)一定的時(shí)間,使得在注冊(cè)請(qǐng)求中所有contact地址中的超時(shí)周期等于或大于423響應(yīng)中的Min-Expires頭中的超時(shí)周期,它才可以重新注冊(cè)。
繼續(xù)發(fā)布。。。
關(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