注册订阅
来源:互联网 发布:java贪吃蛇游戏 编辑:程序博客网 时间:2024/04/29 18:08
注册
注册订阅
终端在注册成功后,向S-CSCF发送SUBSCRIBE请求,请求订阅该用户所有相关的公有标识注册信息。
“隐式注册处理”、“网络发起重认证”、“网络发起注销”功能都需要基于当前功能点。
1、终端向P-CSCF发起订阅请求
SUBSCRIBEsip:ue@ims.test SIP/2.0
Via: SIP/2.0/UDP1.1.1.1;brach=1111
Route:<sip:1.1.1.2;lr>
Route:<sip:1.1.1.4;lr>
From:<sip:ue@ims.test>;tag=xxx
To:<sip:ue@ims.test>
Event: reg
Expires: 600
Accept:application/reginfo+xml
Contact:sip:1.1.1.1
Content-Length:0
终端添加VIA头域,告知该事务请求的应答应该发送到哪里。
这里有两条Route头域,其中第一条是终端已知的P-CSCF地址,表示下一跳首先发给P-CSCF,第二条Route头域是S-CSCF的地址,该地址信息就是在之前UE向S-CSCF注册过程中,由S-CSCF在200 OK里协带的Service-Route头域值(参考“UE协带鉴权发起第二次注册”小节)。
From、To头域的值都为ue@ims.test,表示终端希望订阅自己的信息(在有些情况下,P-CSCF也希望订阅终端信息,如果P-CSCF实现向S-CSCF进行注册订阅,则From头域为P-CSCF的URL,To头域为终端的URL)。
在Event头域里指示需要订阅注册相关事件。
Expires头域指示当前期望订阅的有效生命周期为600秒。
Accept头域指明终端这次订阅只能处理“reginfo+xml”类型的信息。
Content头域告知远端,后续主动向终端发送事务请求时应该发送到哪里。
2、P-CSCF转发订阅请求到S-CSCF
P-CSCF收到终端发来的订阅请求后,检查如果没有协带P-Preferred-Identiy头域,则取该用户的默认公有标识做为有效的公有用户身份,做为新加的P-Asserted-Identity头域值,告诉S-CSCF需要订阅和这个公有标识相关的注册信息。
P-CSCF在转发消息之前,删除为自身地址的首个Route头域,同时将自己的地址添加到Via头域。
SUBSCRIBEsip:ue@ims.test SIP/2.0
Via: SIP/2.0/UDP1.1.1.2; brach=1112
Via: SIP/2.0/UDP1.1.1.1;brach=1111
Route:<sip:1.1.1.4;lr>
From:<sip:ue@ims.test>;tag=xxx
To:<sip:ue@ims.test>
Event: reg
Expires: 600
Accept:application/reginfo+xml
Contact:sip:1.1.1.1
Content-Length:0
3、4、S-CSCF收到订阅请求,给予订阅请求应答,并通过P-CSCF转发到终端
5、6、S-CSCF从P-Asserted-Identity头域提取公有用户标识,验证合法后,将该公有用户标识相关联的所有公有用户标识的注册信息通过Notify信令告知给终端,其中信令报文如下:
NOTIFYsip:ue@1.1.1.1 SIP/2.0
Via: SIP/2.0/UDP1.1.1.4;brach=1114
From: <sip:ue@ims.test>;tag=xxxxx
To:<sip:ue@ims.test>
Contact:<sip:1.1.1.4 >
Content-Type:application/reginfo+xml
Event: reg
Subscription-State:active
……
<?xmlversion="1.0" encoding="UTF-8"?>
<reginfoxmlns="urn:ietf:params:xml:ns:reginfo" version="0" state="full">
<registration aor="sip:ue@ims.test " id="11 " state="active">
<contact id="12" state="active" event="registered">
<uri>sip:ue@1.1.1.1</uri>
/contact>
</registration>
<registration aor="tel:+867551234567" id="14 " state="active">
<contact id="15" state="active" event=" created ">
<uri>sip:ue@1.1.1.1</uri>
/contact>
</registration>
<registration aor="sip:uehome@ims.test " id="17 " state="terminated">
</registration>
</reginfo>
当前只关注Body内容描述,其它SIP头域信息不详细描述。
reginfo根元素,指明当前子元素描述是个注册信息。
xmlns属性指明所使用的名字空间为urn:ietf:params:xml:ns:reginfo
version属性表示当前这个消息通知的版本为0,后面不断发送注册通知消息后,该值会不断递增
state属性为“full”,表明当前发送的是比较完整的全部相关用户标识的注册信息,如果后面再进行通知刷新时仅针对某个用户标识的改变,则state属性将为“partial”,同时仅包括部分用户标识信息
第一条registration表明,当前公有标识sip:ue@ims.test已经成功注册(event="registered"),该公有标识绑定的联系地址为sip:ue@1.1.1.1。
第二条registration表明,当前公有标识tel:+867551234567是隐性注册的(event="created "),该公有标识是第一条公有标识一样,都绑定到sip:ue@1.1.1.1这个联系地址,这里意思就是打哪个都可以呼叫到sip:ue@1.1.1.1。
第三条registration的state="terminated",表明没有注册,所以也就没有子元素。
7、8终端在收到Notify注册事件通知后,给S-CSCF发送应答。
参考资料
《中国电信IMS网络SIP协议总体技术要求》
《IMS-移动领域的IP多媒体概念和服务》
- 注册订阅
- EventBus注册,取消注册,订阅,传值,黏性
- dubbo服务只注册不订阅
- dubbo直连、只订阅、只注册
- EventBus源码解析02-订阅者注册
- Dubbo服务只订阅和只注册
- 注册事件,使其生效,订阅事件(VB)
- (一)注册微信个人订阅号
- 删除RHEL 6.7 的RHN注册和订阅提示
- Guava EventBus源码分析(二):注册订阅者方法
- 容器、接口、注册订阅、组合实现驱动层隔离
- dubbo 服务提供者仅订阅而不注册
- 《一》注册订阅号并完成基本配置
- [Dubbo]dubbo只订阅不注册+直连提供者
- 在支付页面注册账号的时候加上了订阅邮件的按钮
- 微信企业号注册教程 视频教程 公众号 服务号 订阅号
- EventBus设计与实现分析——订阅者的注册
- 8.dubbo点对点直连、只注册、只订阅、开启服务人工管理上下线
- ul中的li的高度在IE6、IE7、IE8、FF下不兼容问题的解决办法
- VMware虚拟化入门10大注意事项
- 母牛的故事 (SDUT 1243)
- 1029. Median
- chapter3
- 注册订阅
- 谷歌:判断一个自然数是否是某个数的平方
- java解惑之动物庄园
- Android ADT Bundle(Eclipse with ADT) ADT R23
- 【足迹C++primer】38、关联容器操作(2)
- Android系统理论基础
- uva 12508 - Triangles in the Grid(几何+计数)
- 马拦过河卒 (SDUT 1265)
- Decrypting Cisco type 5 password hashes