SIP 請求方法(2) REGISTER

2021-10-11 08:15:32 字數 2513 閱讀 4521

ua用register方法通知sip網路它當前的聯絡 uri (ip address)和路由到這個聯絡位址對應的uri。sip註冊與手機初始化時的註冊過程有點類似。ua通過**伺服器外呼時並不要求註冊。但是,除非使用其它非sip的定位手段告知終端當前的聯絡uri,否則,ua想通過**伺服器接收來電,就必須先註冊。

雖然在標準規範中沒有具體定義,但是register請求可以包含訊息體的。根據註冊請求中的contact和expires頭域使用情況,註冊伺服器將採取不同的操作。如果沒有expires引數或expires頭域,那麼註冊的sip uri

將在1小時後失效。如果contacts沒有expires引數,可以用expires頭域來設定聯絡位址的有效期限。如果contacts攜帶expires引數,那麼它只對當前contact有效。非sip uri沒有預設的超時時間。下表是一些contact uri例項:

註冊 contact uri例項

請求頭域

註冊伺服器響應動作

contact: *

登出所有註冊記錄

expires: 0

contact: sip:[email protected] ;expires=1800

註冊當前位址為聯絡位址,有效期限30分鐘

contact: sip:[email protected]

註冊當前位址為聯絡位址

expires: 1800

註冊有效期限30分鐘

contact: mailto:[email protected] ;q=0.1

註冊 e-mail url,沒有超時限定

no contact header present

返回當前所有註冊記錄

對register請求來說,cseq是遞增的。register請求的request-uri, to, from, 和 call-id 頭域使用,與其它方法稍微有些不同。request-uri只有註冊域,而沒有使用者部分。register請求可以被**或**,直到抵達它指定域的負責當局。to頭域包含描述註冊ua 的位址記錄(aor) sip uri。from頭域包信請求傳送方的sip uri,通常和to頭域是一致的。建議同一ua所發的註冊訊息使用同一call-id。

ua發出register請求後,可能收到3xx重定向應答或4xx錯誤應答,這時應答訊息中的contact頭域應當攜帶註冊伺服器的真實位址。

如果註冊請求的傳送方與待註冊資源不同,這稱為第三方註冊。這時,from頭域攜帶的是傳送方的uri,to頭域還是指向待註冊資源。這裡給乙個第三方註冊的訊息例項,secretary為euclid註冊:

register sip:registrar.athens.example.com sip/2.0

via: sip/2.0/udp 201.202.203.204:5060;branch=z9hg4bk313

max-forwards:70

to: sip:[email protected]

from: ;tag=543131

call-id: 48erl8132409wqer

cseq: 1 register

contact: sip:[email protected]

contact: mailto:[email protected]

content-length: 0

有時候,ua註冊時提供的uri可能是不可路由的。比如說,如果ua在nat之後,或者防火牆阻止外部請求訪問內部主機。如果在sip dialog外使用這類contact uri(比如發refer或執行諮詢轉移),那麼呼叫控制操作可能會失敗。對此有一種擴充套件機制,ua可以向註冊伺服器請求乙個全域性可路由的使用者**uri(globally routable user agent uri (gruu) )。可以在contact頭域或其它裝置想要直接訪問的地方使用這個uri。ua在request請求中包含乙個supported:gruu頭域和乙個sip. instance功能標籤,如果註冊伺服器支援這個機制,在200 ok應答中將返回gruu,資訊在contact頭域中的pub-gruu和temp-gruu引數中描述。temp-gruu引數值每次註冊重新整理時都會變更,只要註冊重新整理,pub-gruu就一直有效。下面給出乙個包含gruu的contact頭域例項:

contact: ;pub-gruu=」sip:[email protected];gr=urn:uuid:00a0dc91e6bdf6」

;temp-gruu=」sip:[email protected];gr」

;+sip.instance=」」

;expires=1800

最後,給出register請求的必要頭域列表:

register請求的必要頭域

viatofrom

call-id

cseq

max-forwards

SIP 請求方法(10) PRACK

rfc3262定義了prack方法,它用於保證臨時應答 1xx 的傳輸可靠性。invite請求的2xx,3xx,4xx,5xx,與 6xx應答的可靠性是通過ack方法確定的。但是,如果臨時應答 比如180 ringing 對呼叫狀態至關重要,則可能需要對收到的臨時應答進行確認。prack方法適用於除...

SIP 請求方法(11) UPDATE

rfc3311定義了update方法,可以在不改變dialog狀態的前提下修改會話的引數。sip中使用invite請求建立會話,過程中使用offer answer模型。通常,invite中帶offer,而在它對應的應答中帶answer。在會話建立之後,可以用re invite修改會話引數。但是,會話...

Select2遠端請求後台資料方法

param dom 節點 param url 請求url param ismultiple 是否多選 param ispagination 是否分頁 function initselect2 dom,url,ismultiple,ispagination return processresults ...