SIP DB33标准笔记 注册/目录发送/心跳
SIP协议扩展中:
在 RFC 3261 基础上定义了一个新方法 DO。方法 DO 的功能包括:控制对方动作、更新对方信息、查询对方状态、历史监控资料查询和回放等。发送方法 DO 的请求报文时,不会创建一个新
的 SIP 会话, 也不需要存在一个 SIP 会话作为前提。 方法 DO 与 SIP 会话无关, 可在 SIP 会话内存在,也可在 SIP 会话之外存在,当 DO 是在一个 SIP 会话内发送时,方法 DO 中包含的 Call-ID 应与 SIP
会话的 Call-ID 一致。
当DO请求得到成功执行时,一般应回送一个“200 OK”响应消息,消息体中可包含结果信息,如当前设备状态等。 当DO请求失败时, 可回送请求失败 (Request Failure,4xx) 、 服务器失败 (Server
failure,5xx)和全局失败(Global Failure,6xx)响应消息。对于监控中的部分控制请求,DO请求可无响应消息。
采用 RFC 3261、RFC 3265 和方法 DO 实现视频监控系统跨区域联网时,方法的消息体 MIME类型应采用本规范定义的设备描述和控制协议(DDCP 协议) ,ContentType 字段应设为“application/DDCP” 。
SIP 地址编码格式应采用 RFC 3261 中规定的 SIP:user@host 形式。其中 user 部分应符合本规范定义的对象编码规则,host 按 RFC 3261 规定执行。
设备注册与发现:
注册登记流程如下:
1) 源联网单元向目的联网单元发送REGISTER消息。 如果联网单元要求从目的联网单元中注销,把Expires设置为0。如果联网单元修改了IP地址和监听端口,应先注销,再重新进行注册登记;
2) 目的联网单元收到注册登记消息后应对注册登记信息进行验证、核准,对符合接入条件的联网单元进行注册登记;
3) 目的联网单元应将注册成功或失败的消息返回给该源联网单元。

消息示例:
F1:REGISTER sip:目的联网单元域名或IP地址 SIP/2.0
Via: SIP/2.0/UDP 源联网单元IP地址
MaxForwards: From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址>; tag=BK32B1U8DKDrB
To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
CallID:
CSeq: REGISTER
Contact: <sip:源联网单元IP地址:>
Expires:
F2:
Via: SIP/2.0/UDP 源联网单元IP地址
From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
To:显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
CallID:
CSeq: REGISTER
或:
Via: SIP/2.0/UDP 源联网单元IP地址
From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址>;tag=BK32B1U8DKDrB
To:显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
CallID:
CSeq: REGISTER
目录发送:
a) 在以下两种情况下应向所有与之联网的联网单元发送目录信息:
1) 联网单元注册成功后,应发送整个允许共享的设备目录信息;
2) 联网单元的目录信息发生变化后,应发送变化部分目录信息。
应使用RFC 3265中定义的方法NOTIFY发送目录信息。
b) 目录发送流程如下:
1) 需发送共享设备目录信息的源联网单元向所有与之联网的目的联网单元发送NOTIFY信息。NOTIFY消息的消息体包含整个允许共享的设备目录信息,每个设备对应的目录信息应包含以下内容:显示名(Name)、地址编码(Address)、权限功能码(Privilege)、父节点地址编码 (Parent) 、 活动状态 (Status) 、 经度 (Longitude) 、 纬度 (Latitude) 、 子节点个数 (Subnum) 、子节点列表(Sublist)等。
2) 目的联网单元收到正确目录消息后更新本地目录数据库;
3) 目的联网单元应将目录接收成功或失败的消息返回给该源联网单元。

消息示例:
F1:NOTIFY sip:目的联网单元地址编码@目的联网单元域名或IP地址 SIP/2.0
Via: SIP/2.0/TCP 源联网单元IP地址
MaxForwards: From: 显示名<sip:联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
CallID:
CSeq: NOTIFY
Contenttype: Application/DDCP
ContentLength: 消息实体的字节长度
<?xml version="1.0"?>
<Action>
<Variable>Catalog</Variable>
<Name>显示名</Name>
<Address>地址编码</Address>
<Parent>地址编码</Parent>
<Status>活动状态</Status>
<Subnum></Subnum>
<Sublist>
<Item>
<Name>显示名</Name>
<Address>地址编码</Address>
< Privilege > 权限功能码< /Privilege >
<Parent>地址编码</Parent>
<Status>活动状态</Status>
< Longitude >经度</ Longitude >
< Latitude >纬度</ Latitude >
<Subnum></Subnum>
<Sublist>...</Sublist>
</Item>
<Item>
<Name>显示名</Name>
<Address>地址编码</Address>
< Privilege > 权限功能码< /Privilege >
<Parent>地址编码</Parent>
<Status>活动状态</Status>
< Longitude >经度</ Longitude >
< Latitude >纬度</ Latitude >
<Subnum></Subnum>
<Sublist>...</Sublist>
</Item>
</Sublist>
</Action>
F2:
Via: SIP/2.0/TCP 源联网单元IP地址
From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
CallID: CSeq: NOTIFY
Contenttype: Application/DDCP
ContentLength: 消息实体的字节长度
<?xml version="1.0"?>
<Response>
<Variable>Catalog</Variable>
<Result></Result>
</Response >
或:
Via: SIP/2.0/TCP 源联网单元IP地址
From: 显示名<sip:联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
CallID:
CSeq: NOTIFY
心跳信息传递:
联网单元应定时向所有与之联网的联网单元发送心跳报文消息。应使用方法DO传递心跳信息,心跳消息的消息体包含保持活动信息(Keepalive)。心跳报文不要求应答确认报文。
消息示例:
F1:DO sip:目的联网单元地址编码@目的联网单元域名或IP地址 SIP/2.0
Via: SIP/2.0/TCP 源联网单元IP地址
MaxForwards:
From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
CallID:
CSeq: DO
Contenttype: Application/DDCP
ContentLength: 消息实体的字节长度
<?xml version="1.0"?>
<Action>
<Notify>
<Variable>Keepalive</Variable>
</Notify>
</Action>
SIP DB33标准笔记 注册/目录发送/心跳的更多相关文章
- SIP DB33标准笔记 监控图像获取
实时监控图像的获取: a) 实时监控图像的获取过程应包括获取实时流.释放实时流.应使用 RFC 3261 中定义的方法INVITE 获取一个摄像机的实时监控视频流. 取消没有完成的连接应采用 CANC ...
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
- 《Windows内核安全与驱动开发》阅读笔记 -- 索引目录
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 一.内核上机指导 二.内核编程环境及其特殊性 2.1 内核编程的环境 2.2 数据类型 2.3 重要的数据结构 2.4 函数调 ...
- 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案
第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...
- thinkphp学习笔记1—目录结构和命名规则
原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...
- loadrunner使用socket协议来实现客户端对服务器产生压力实例。(通过发送心跳包,达到连接多个客户端的目的)
#include "lrs.h" vuser_init(){ char *ip; int handler; //编写获取LR分配的Vuser IP函数,将IP保存在ip变量中. i ...
- 《Essential C++》读书笔记 之 目录导航
<Essential C++>读书笔记 之 目录导航 2014-07-06 第一章:<Essential C++>读书笔记 之 C++编程基础 第二章:<Essentia ...
- Android深入四大组件(八)广播的注册、发送和接收过程
前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...
- 关于TCP长连接和发送心跳的一些理解
原因 TCP是一种有连接的协议,但是这个连接并不是指有一条实际的电路,而是一种虚拟的电路.TCP的建立连接和断开连接都是通过发送数据实现的,也就是我们常说的三次握手.四次挥手.TCP两端保存了一种数据 ...
随机推荐
- 《深入理解Java虚拟机》学习笔记之内存回收
垃圾收集(Garbage Collection,GC)并不是Java语言的半生产物,事实上GC历史远比Java久远,真正使用内存动态分配和垃圾收集技术的语言是诞生于1960年的Lisp语言.经过半个世 ...
- CentOs下安装PHP环境的步骤
前言 在CentOs环境下安装php开发环境,需要首先安装一些源文件,然后使用yum命令直接安装即可,在Fedora 20 源中已经有了PHP的源,直接可以使用以下命令安装即可: # yum inst ...
- jQuery后续...
jQuery 选择器 1.jQuery选择器的简介 (1). Jquery中的选择器完全继承了CSS的风格,利用Jquery选择器,可以非常便捷和快速的找出特定的Dom元素,然后为他们添加相应的行为, ...
- 1787: [Ahoi2008]Meet 紧急集合
1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1482 Solved: 652[Submit][ ...
- Gridview AutoGenerateColumns属性
第一篇随笔,以后会陆续的把刚开始工作时的知识点都记录下来,毕竟现在用WebForm的不多了~ AutoGenerateColumns MSDN 说明 : 获取或设置一个值,该值指示是否为数据源中的每个 ...
- java aes encrypt
本次使用aes 对称加密算法. 选用aes的原因是,可以还原加密串. 程序如下: public static String encode(String content){ KeyGenerator k ...
- python 接口自动化测试--框架整改(五)
代码结构: 目标架构: 1.用例分析器,自动根据接口的参数,类型生成测试用例 2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断 3.核心调用引擎,分SOAP和HTTP两种, ...
- C# 使用Process调用外部程序中所遇到的参数问题
在使用Process.Start 调用外部程序时,除了程序的地址之外,是可以传递参数的,Process.Start 也有多个重载: // // 摘要: // 启动由包含进程启动信息(例如,要启动的进程 ...
- SQL server 数据库(视图、事物、分离附加、备份还原))
ql Server系列:视图.事物.备份还原.分离附加 视图是数据库中的一种虚拟表,与真实的表一样,视图包含一系列带有名称的行和列数据.行和列数据用来自定义视图的查询所引用的表,并且在引用视图时动态 ...
- 实现在easyui中的datagrid,点击某一列的列头弹出combobox下拉框
easyUI datagrid在列头加下拉框,实现对列内容的筛选. 代码: onLoadSuccess: function (data) {//Fires when data is loaded s ...