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 协议) ,Content­Type 字段应设为“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地址
  Max­Forwards:   From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址>; tag=BK32B1U8DKDrB
  To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
  Call­ID:
  CSeq: REGISTER
  Contact: <sip:源联网单元IP地址:>
  Expires:
F2:
  Via: SIP/2.0/UDP 源联网单元IP地址
  From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
  To:显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
  Call­ID:
  CSeq: REGISTER
或:
  Via: SIP/2.0/UDP 源联网单元IP地址
  From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址>;tag=BK32B1U8DKDrB
  To:显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
  Call­ID:
  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地址
  Max­Forwards:   From: 显示名<sip:联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
  To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
  Call­ID:
  CSeq: NOTIFY
  Content­type: Application/DDCP
  Content­Length: 消息实体的字节长度
  <?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地址>
  Call­ID:   CSeq: NOTIFY
  Content­type: Application/DDCP
  Content­Length: 消息实体的字节长度
  <?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地址>
  Call­ID:   
  CSeq: NOTIFY

心跳信息传递:

  联网单元应定时向所有与之联网的联网单元发送心跳报文消息。应使用方法DO传递心跳信息,心跳消息的消息体包含保持活动信息(Keepalive)。心跳报文不要求应答确认报文。

  

消息示例:

F1:DO sip:目的联网单元地址编码@目的联网单元域名或IP地址 SIP/2.0
  Via: SIP/2.0/TCP 源联网单元IP地址
  Max­Forwards:
  From: 显示名<sip:源联网单元地址编码@源联网单元域名或IP地址> ;tag=BK32B1U8DKDrB
  To: 显示名<sip:目的联网单元地址编码@目的联网单元域名或IP地址>
  Call­ID:
  CSeq: DO
  Content­type: Application/DDCP
  Content­Length: 消息实体的字节长度
  <?xml version="1.0"?>
  <Action>
  <Notify>
      <Variable>Keepalive</Variable>
  </Notify>
  </Action>

SIP DB33标准笔记 注册/目录发送/心跳的更多相关文章

  1. SIP DB33标准笔记 监控图像获取

    实时监控图像的获取: a) 实时监控图像的获取过程应包括获取实时流.释放实时流.应使用 RFC 3261 中定义的方法INVITE 获取一个摄像机的实时监控视频流. 取消没有完成的连接应采用 CANC ...

  2. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  3. 《Windows内核安全与驱动开发》阅读笔记 -- 索引目录

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 一.内核上机指导 二.内核编程环境及其特殊性 2.1 内核编程的环境 2.2 数据类型 2.3 重要的数据结构 2.4 函数调 ...

  4. 调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

    第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...

  5. thinkphp学习笔记1—目录结构和命名规则

    原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...

  6. loadrunner使用socket协议来实现客户端对服务器产生压力实例。(通过发送心跳包,达到连接多个客户端的目的)

    #include "lrs.h" vuser_init(){ char *ip; int handler; //编写获取LR分配的Vuser IP函数,将IP保存在ip变量中. i ...

  7. 《Essential C++》读书笔记 之 目录导航

    <Essential C++>读书笔记 之 目录导航 2014-07-06 第一章:<Essential C++>读书笔记 之 C++编程基础 第二章:<Essentia ...

  8. Android深入四大组件(八)广播的注册、发送和接收过程

    前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...

  9. 关于TCP长连接和发送心跳的一些理解

    原因 TCP是一种有连接的协议,但是这个连接并不是指有一条实际的电路,而是一种虚拟的电路.TCP的建立连接和断开连接都是通过发送数据实现的,也就是我们常说的三次握手.四次挥手.TCP两端保存了一种数据 ...

随机推荐

  1. 寻找与疾病相关的SNP位点——R语言从SNPedia批量提取搜索数据

    是单核苷酸多态性,人的基因是相似的,有些位点上存在差异,这种某个位点的核苷酸差异就做单核苷酸多态性,它影响着生物的性状,影响着对某些疾病的易感性.SNPedia是一个SNP调査百科,它引用各种已经发布 ...

  2. 轻松理解JavaScript闭包

    摘要 闭包机制是JavaScript的重点和难点,本文希望能帮助大家轻松的学习闭包 一.什么是闭包? 闭包就是可以访问另一个函数作用域中变量的函数. 下面列举出常见的闭包实现方式,以例子讲解闭包概念 ...

  3. jquery写日期选择器

    跟上我的脚步,让我们来领略代码的世界! 使用jquery做一个日期时间选择器,最好使用bootstrap弹窗 实现: (1)点击文本框弹出窗口: (2)弹窗里面显示日期时间选择下拉 (3)年份取当前年 ...

  4. Octave Tutorial(《Machine Learning》)之第二课《数据移动》

    第二课 Moving Data 数据移动 常用内置函数 (1)加载文件 load 文件名.dat(或load('文件名.dat')) 接着输入文件名便可查看文件里的数据 (2)显示当前工作空间的所有变 ...

  5. ubuntu nsight上链接OpenGL

    写一个需要使用OpenGL的程序,右击该程序名,此处需要OpenGL库的程序为Julia-C 右击,选择属性,弹出属性对话框,在左边选择build下的设置,中间窗格中选择GCC C++ Linker下 ...

  6. 将基因组数据分类并写出文件,python,awk,R data.table速度PK

    由于基因组数据过大,想进一步用R语言处理担心系统内存不够,因此想着将文件按染色体拆分,发现python,awk,R 语言都能够非常简单快捷的实现,那么速度是否有差距呢,因此在跑几个50G的大文件之前, ...

  7. 兔子生娃问题---函数递归应用--c语言实现

    事情是这样的:在很久很久以前....有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列:1, 1 ...

  8. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  9. python之数据结构链表实现方式

    #!/usr/bin/env python # --------------------------------------- # author : Geng Jie # email : gengji ...

  10. Windows 10 系统Microsoft Edge的使用手册

    Windows 10 默认浏览器(Edge)使用手册 体验网络有了一种新的方法.只有在 Windows 10 上才能找到它. 下面详细介绍一下Edge浏览器的使用规范: 一.打开Windows10系统 ...