日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SIP注册

發(fā)布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SIP注册 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

SIP注冊

?

注冊服務(wù)為特定地區(qū)的位置服務(wù)創(chuàng)建綁定關(guān)系,這個綁定關(guān)系是用來建立包含一個或者多個聯(lián)系地址的address-of-record URI。因而,當(dāng)那個地區(qū)的proxy接收到一個請求,這個請求的Request-URI和address-of-record的記錄匹配,那么這個proxy會轉(zhuǎn)發(fā)請求到這個address-of-record中登記的聯(lián)系地址中去。
Address-of-Record: 記錄地址。一個address-of-record(AOR)是一個SIP或者SIPS URI它指向了一個具有定位服務(wù)的主機(jī),這個主機(jī)可以把URI映射成為用戶真正物理位置的URI。通常情況下,定位服務(wù)器是通過登記服務(wù)來建立的。一個AOR經(jīng)常被認(rèn)為是一個用戶的”公共地址” 。

?

需要注意的是,登記服務(wù)器(registrar)和proxy服務(wù)器都是邏輯上的角色,可以在網(wǎng)絡(luò)中用一個設(shè)備來部屬.還需要注意的是如果他們(登記服務(wù)器和proxy)本身是分開的,那么UA可以通過proxy服務(wù)器發(fā)送注冊請求。?

?

1 構(gòu)造一個REGISTER請求
REGISTER請求用來增加、刪除、查詢綁定資料。

?

下面這些頭域,除了Contact,必須在REGISTER頭域中包含。Contact頭域可選。
Request-URI: 這個頭域指明了登記服務(wù)所指明的位置服務(wù)所在的區(qū)域(比如sip:chicago.com)。”userinfo”和”@”元素在SIP URI中不能出現(xiàn)。
To:這個頭域包含了被查詢、增加、修改的address-of-record。to頭域和Request-URI頭域通常是不同的,因為這個由用戶名組成。這個address-of-record必須是一個SIP URI或者SIPS URI.
From: 這個頭域包含了提交這個注冊信息的用戶的address-of-record資料。這個值和To頭域的值相同,除非這個請求是第三方發(fā)起的注冊請求。
Call-ID: UAC發(fā)出的給某個注冊服務(wù)器(registrar)的所有注冊請求都應(yīng)該有相同的Call-ID頭域值。如果相同的客戶端用了不同的Call-ID值,注冊服務(wù)器(registrar)就不能檢測是否一個REGISTER請求由于延時的關(guān)系導(dǎo)致了故障。
Cseq: Cseq值保證了REGISTER請求的正確順序。一個UA為每一個具備相同的Call-ID的REGISTER請求順序遞增這個Cseq字段。
Contact: REGISTER請求可以有一個Contact頭域。這個頭域可以有0個或者多個包含綁定地址信息的值。 “expires”參數(shù)表明UA的綁定的有效時間。以秒為單位的整數(shù)。如果本參數(shù)沒有制定,那么這個參數(shù)的值就是Expires頭域的值。實現(xiàn)中,可以把超過2**32-1的值(4294967295秒或者136年)認(rèn)為是2**32-1。非法的值應(yīng)當(dāng)視同3600。
UA在沒有收到上一個注冊請求的應(yīng)答或者上一個REGISTER請求超時之前,禁止發(fā)送新的注冊請求(就是說,包含一個新的Contact頭域值,而不是重發(fā))。?

?

1.1 增加綁定
1.1.1 設(shè)置Contact地址的過期參數(shù)
當(dāng)一個客戶端發(fā)出一個REGISTER請求,它可能包含一個過期參數(shù)用來表示這個注冊的地址的有效期。
客戶端設(shè)置有效期的方法有兩種:一個是通過設(shè)置Expires頭域,一個是通過設(shè)置”expires”contact頭域的參數(shù)來設(shè)置。后一種允許針對同一個REGISTER請求中的多個綁定聯(lián)系地址中的每一個聯(lián)系地址單獨設(shè)定有效期,然后所有沒有帶”expires”參數(shù)的Contact頭域的值都使用Expires的設(shè)置。
如果REGISTER中沒有兩種有效期都沒有設(shè)置,這就表明這個有效期由服務(wù)器來決定。
1.1.2 Contact Adress的參數(shù)選擇
如果在一個REGISTER請求中包含多個Contact,這說明UA想要把這些Contact頭域的內(nèi)容都和To頭域中制定的address-of-record地址綁定起來。這個列表可以用”q”參數(shù)來區(qū)分Contact頭域的優(yōu)先級。”q”參數(shù)用來標(biāo)志特定Contact頭域值和其他綁定的address-of-record的聯(lián)系地址之間的優(yōu)先級。

?

1.2 刪除綁定
注冊信息是一個純粹軟件的狀態(tài),并且如果不刷新會過期。如果需要,也可以被刪除。一個客戶端可以設(shè)置注冊服務(wù)器(registar)的有效期(10.2.1)。一個UA可以通過發(fā)出有效期為”0”的REGISTER請求,使某一個聯(lián)系地址立刻失效。UAS都需要實現(xiàn)這個機(jī)制使得在聯(lián)系地址過期前能夠被刪除。
REGISTER規(guī)范中的Contact頭域如果設(shè)置成為”*”則表示需要操作所有的注冊項。但是也只能在具有一個Expires頭域并且這個頭域為’0’的情況下能夠使用。(這就是說,只能夠在要刪除所有的注冊項的時候使用”*”)。
用”*”來刪除所有的注冊項有一個好處,就是使得UA不需要知道每一個注冊項的精確值。

?

1.3 訪問綁定
無論請求是否包含了Contact頭域,給任何REGISTER請求的成功應(yīng)答都包含了一個完整的綁定列表。如果REGISTER請求頭域中不包含Contact頭域,那么注冊服務(wù)器的綁定列表將不會改變。

?

1.4 刷新綁定
每一個UA都對先前它建立的綁定信息由刷新的義務(wù)。禁止對其他UA建立的綁定信息進(jìn)行刷新。于是在這些綁定信息過期前,UA為每個綁定發(fā)出REGISTER請求來刷新綁定。也可以通過一個REGISTER請求來刷新數(shù)個綁定請求。
UA在一個刷新周期中,應(yīng)該使用相同的Call-ID來進(jìn)行注冊調(diào)用。

?

1.6 尋找注冊服務(wù)器
UA有3種方法來決定向哪里發(fā)出注冊請求:通過配置,使用address-of-record,廣播方式。
1)一個UA可以用非本文檔規(guī)定的方式,配置一個注冊服務(wù)器的地址。
2)用請求的Request-URI部分種的address-of-record的服務(wù)器部分(host part),用普通的SIP服務(wù)器定位機(jī)制。比如,用戶”sip:carol@chicago.com”地址的注冊服務(wù)應(yīng)該是”sip:chicago.com”。
3)UA可以通過監(jiān)聽廣播的形式來獲得注冊服務(wù)器地址。

?

1.8 錯誤響應(yīng)
如果UA接收到一個423(間隔太簡略)應(yīng)答,它可能需要更改REGISTER請求中的所有有效期,使得這些有效期必須大于等于423應(yīng)答頭中的Min-Expires頭域中的有效期,并且重新嘗試發(fā)送這個REGISTER請求。?

?


2 處理REGISTER請求
一個注冊服務(wù)器(registrar)就是一個UAS,這個UAS用來響應(yīng)REGISTER的請求,并且維持一個綁定表,這個綁定表用來提供給它所管理的區(qū)域中的proxy服務(wù)器和重定向服務(wù)器的。
一個注冊服務(wù)器禁止產(chǎn)生6xx應(yīng)答。
一個注冊服務(wù)器可以適當(dāng)?shù)霓D(zhuǎn)發(fā)REGISTER請求。通常用于一個注冊服務(wù)器(registar)監(jiān)聽一個多點廣播,并且通過302應(yīng)答(臨時轉(zhuǎn)移)轉(zhuǎn)發(fā)這個多點廣播的REGISTER請求到它正確的處理位置。
一個注冊服務(wù)器必須知道(例如,通過配置)它所管理的區(qū)域。注冊服務(wù)器一定需要按照接收到的REGISTER請求順序進(jìn)行處理。


當(dāng)接收到一個REGISTER請求,注冊服務(wù)器(registrar)按照如下步驟處理:
1、注冊服務(wù)器(registrar)檢查Request-URI來決定是否它屬于本注冊服務(wù)器所管理的區(qū)域的Request-URI。如果不是,并且如果這個服務(wù)器同時也作為一個proxy服務(wù)器,那么這個服務(wù)器應(yīng)當(dāng)轉(zhuǎn)發(fā)這個請求到指定的區(qū)域。
2、為了保證注冊服務(wù)器能夠支持所需要的擴(kuò)展,注冊服務(wù)器必須處理Require頭域。
3 一個注冊服務(wù)器應(yīng)當(dāng)對UAC進(jìn)行身份認(rèn)證。
4、注冊服務(wù)器應(yīng)當(dāng)檢查認(rèn)證的用戶是否通過認(rèn)證來更改這個address-of-record的登記權(quán)限。
5、注冊服務(wù)器(registrar)REGISTER請求的To頭域中解出address-of-record。如果這個address-of-record并非在這個Request-URI指明的區(qū)域中合法,那么注冊服務(wù)器必須發(fā)出一個404(沒有找到)的應(yīng)答,并且跳過后續(xù)步驟。接著URI必須轉(zhuǎn)換成為標(biāo)準(zhǔn)的格式。所有的URI參數(shù)都必須刪去(包括用戶參數(shù)user-param,并且任何非法(escaped)字符必須轉(zhuǎn)換成為合法字符(unescaped)格式。最后形成一個可以用于綁定的列表。
6、注冊服務(wù)器(registrar)檢查是否請求包含了一個Contact頭域。如果沒有包含,它跳過到最后一步。如果Contact頭域包含了,注冊服務(wù)器檢查是否有一個Contact頭域值是”*”,并且包含了一個Expires頭域。如果請求有其他的Contact頭域或者任何有效期的值是非0的,這個請求就是非法請求,并且服務(wù)器必須送回一個400(非法請求)的應(yīng)答,跳過后續(xù)步驟。如果沒有,那么注冊服務(wù)器檢查是否Call-ID復(fù)核每一個綁定的值。如果不符合,它必須刪除綁定。如果符合,它必須僅僅刪除保存的綁定表中CSeq值小于請求中的Cseq值的記錄。否則,更新必須終止,請求失敗。
7、現(xiàn)在注冊服務(wù)器(registrar)可以依次處理Contact頭域中的聯(lián)系地址了。
8、注冊服務(wù)器(registrar)返回一個200OK)應(yīng)答。這個應(yīng)答必須包含Contact頭域,并且這個頭域的值中列舉了所有當(dāng)前綁定的注冊信息。每一個Contact值都必須包含一個”expires”參數(shù),用來標(biāo)志還有多久這個綁定信息就過期了。應(yīng)答也必須包含一個Date頭域。

?

總結(jié)

以上是生活随笔為你收集整理的SIP注册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。