在onvif协议对接中,首先要明确服务器和客户端的身份

服务器:通常是你要对接的其他厂家的数字摄像头(IPC)
客户端:通常是对接的ipc的设备程序,安防业内多称(NVR),当然其他软件工具也可称为客户端,如ONVIF Device Test Tool, vlc软件

设备搜索

要访问一个IPC摄像头,或者说要调用IPC摄像头提供的Web服务接口,就要先知道其IP地址,这就是设备发现的过程,或者叫设备搜索的过程。ONVIF并未自己定义服务发现框架,而是复用了已经很成熟的WS-Discovery标准

WS-Discovery原理

WS-Discovery:全称Web Services Dynamic Discovery。
官方技术规范:http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-spec-os.html

传统的Web Services服务调用的模式都是这样的:客户端在设计时就预先知道目标服务的地址(IP地址或者域名),客户端基于这个地址进行服务调用。那如果客户端预先不知道目标服务的地址该怎么办
就需要使用WS-Discovery标准,遵循该标准,客户端预先不知道目标服务地址的情况下,可以动态地探测到可用的目标服务,以便进行服务调用。这个过程就是设备发现的过程。

WS-Discovery定义了两种模式:Ad hoc模式和Managed模式。

①:Ad hoc模式客户端以多播(multicast)的形式往多播组(multicast group)发送一个Probe(探测)消息搜索目标服务,在该探测消息中,包含相应的搜寻条件。如果目标服务满足该条件,则直接将响应ProbeMatch消息(服务自身相关的信息,包括地址)回复给客户端。
②:Managed模式:即代理模式。Ad hoc模式有个局限性,只能局限于一个较小的网络。Managed模式就是为了解决这个问题的,在Managed模式下,一个维护所有可用目标服务的中心发现代理(Discovery Proxy)被建立起来,客户端只需要将探测消息发送到该发现代理就可以得到相应的目标服务信息。

Ad hoc模式,端口3702
/* 搜索请求 */
<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns="http://www.w3.org/2003/05/soap-envelope">
<Header><wsa:MessageID xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">uuid:941c75c0-2496-4ad5-ab68-bf4540192247    //和回应的RelatesTo字段值相同</wsa:MessageID><wsa:To xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:To><wsa:Action xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action>
</Header>
<Body><Probe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/ws/2005/04/discovery"><Types>tds:Device</Types><Scopes /></Probe>
</Body>
</Envelope>
/* 搜索回应 */
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"mlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsa5="http://www.w3.org/2005/08/addressing" xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:dn="http://www.onvif.org/ver10/network/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:tds="http://www.onvif.org/ver10/device/wsdl">
<s:Header><wsa:MessageID>uuid:6219a33f-9802-d1a8-07bd-00:05:50:53:00:64 //设备的MAC地址</wsa:MessageID><wsa:RelatesTo>uuid:941c75c0-2496-4ad5-ab68-bf4540192247  //和请求的MessageID的uuid相同</wsa:RelatesTo><wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To><wsa:Action>http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches</wsa:Action>
</s:Header>
<s:Body><d:ProbeMatches><d:ProbeMatch><wsa:EndpointReference><wsa:Address>urn:uuid:cf20f214-5566-7788-99aa-000550530064</wsa:Address></wsa:EndpointReference><d:Types>dn:NetworkVideoTransmitter tds:Device</d:Types><d:Scopes>onvif://www.onvif.org/type/video_encoder onvif://www.onvif.org/type/audio_encoder onvif://www.onvif.org/hardware/IPC-model onvif://www.onvif.org/location/country/china onvif://www.onvif.org/name/NVT onvif://www.onvif.org/Profile/Streaming onvif://www.onvif.org/A1C2B3/mac/00:05:50:53:00:64    //设备的MAC地址onvif://www.onvif.org/Profile/T</d:Scopes><d:XAddrs>http://10.10.88.100:8899/onvif/device_service //设备(IPC)的IP地址和ONVIF端口号</d:XAddrs><d:MetadataVersion>1</d:MetadataVersion></d:ProbeMatch></d:ProbeMatches>
</s:Body>
</s:Envelope>

搜索IPC有两种搜索方式

  1. 自己实现socket编程(UDP),通过sendto往多播地址发送探测消息(Probe),再使用recvfrom接收IPC的应答消息(ProbeMatch)。
  2. 根据ONVIF标准的remotediscovery.wsdl文档,使用gSOAP工具快速生成框架代码,直接调用其生成的函数接口来搜索IPC。

从原理上来说,这两种方式归根结底是一样的,都是WS-Discovery协议。
方式1是自己写代码。
方式2是利用gSOAP快速生成代码。
组播地址为239.255.255.250(也可以自己输入IP地址和端口。如10.10.88.100),端口3702

网络协议之ONVIF搜索(Probe)相关推荐

  1. 网络visca控制协议_支持网络及串口onvif,visca、pelco-d/p协议多功能控制键盘采购型号...

    视频会议摄像机四维摇杆控制键盘NK-IPHDVC600KC 产品概述: 派尼珂IP网络多协议高清视频会议摄像机控制键盘,采用全新进口光电矢量变速四维操纵杆,具有很好的操控性.耐用性.手感舒适,支持多接 ...

  2. 趣谈网络协议笔记-二(第十七讲)

    趣谈网络协议笔记-二(第十七讲) P2P协议:我下小电影,99%急死你 自勉 逃离舒适区! 正文 一. P2P协议 整个篇章讲的就是这两个协议之间的区别.P2P协议就是迅雷下载数据时所用的协议, 众所 ...

  3. TCP/IP网络协议的通俗理解,socket,http,soap。

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来我花了一些时间去了解这些网络协议,现在对TCP/IP网络 ...

  4. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  5. 使用wireshark抓包并进行网络协议分析

    前言 今天想通过抓包实验,巩固一下所学习的网络协议.同时,在知识点上会加上以前遇到的一些问题.这次实验并不是对所有的网络协议都进行分析,而是从下面这个问题出发(面试常被问).从这一过程中复习学过的网络 ...

  6. Wireshark(2):应用Wireshark观察基本网络协议

    转载自一站式学习Wireshark(二):应用Wireshark观察基本网络协议 TCP: TCP/IP通过三次握手建立一个连接.这一过程中的三种报文是:SYN,SYN/ACK,ACK. 第一步是找到 ...

  7. 阿里云 ESSD 采用自研新一代存储网络协议,打造“超级高速”

    8月26日,阿里云透露,正投入自研数据存储"超级高速",核心存储产品ESSD已率先采用这一最新的自研存储网络协议,并实现大规模商用,数据传输效率提高50%. 据了解,未来该协议还将 ...

  8. 对TCP/IP网络协议的浅出归纳

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...

  9. 网络协议和浏览器到网络简单攻防实现的探索(二)

    一.关于网络协议的整体梳理 1.1 客户端和服务端的通信 常见的架构,B/S和C/s架构.而在浏览器中运行王爷的属于B/S架构.网页浏览器通过地址栏的url获取服务器对应的资源文件.通过浏览器的处理后 ...

  10. 阿里研究院花几年心得终成趣谈网络协议,附技术官讲解

    苦且绕不过去.经过多次放弃之后,我发现在我的职业生涯中,网络这一关无论如何也绕不过去.本来觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了,但是到后来才发现,服务数量一多,吞吐量 ...

最新文章

  1. 寻找网页设计灵感的200佳网站推荐(系列二)
  2. 多波次导弹发射中的规划问题(二) 问题一解答
  3. BZOJ5091摘苹果(概率、期望)
  4. 深度学习之图像处理---七级浮屠
  5. mvc登录设计的详细设计_产品设计:APP指纹密码登录设计
  6. 穷举 迭代 while
  7. 201521123004《软件工程》个人阅读作业1
  8. circle loss代码实现_Python全栈之路-23-使用Python实现Logistic回归算法
  9. 分布式监控系统Zabbix3.2监控数据库的连接数
  10. C语言课后习题(5)
  11. pearson特征选择matlab,使用sklearn做特征选择
  12. 出现问题protected:void __thiscall CTalkCDlg::OnIdok(void)(?OnIdok@CTalkDlg@@IAEXXZ)?
  13. (干货分享)农商行中商业智能建设的整体思路与架构
  14. mysql 查询索引
  15. TOGAF9中文版(五)
  16. python blp模型 估计_随机系数Logit模型及Stata实现
  17. 手把手教你批量保存花瓣图片到同一目录的技巧
  18. 【题解】P2627 [USACO11OPEN]Mowing the Lawn G
  19. 基于华为云服务的人脸识别功能实现
  20. 网线交叉网线线序接法

热门文章

  1. 图片复印如何去除黑底_我告诉你照片打印如何去除黑底
  2. IT项目管理期末复习-西北大学
  3. Java工具类 BeanUtils库介绍以及对象拷贝
  4. 人工智能/机器学习/深度学习 经典必看书籍【附百度网盘链接】
  5. 百度网盘链接在线解析网站_利用在线服务下载百度网盘的文件
  6. XRD 数据处理:使用 Origin 进行多谱图对比
  7. 《炬丰科技-半导体工艺》衬底温度对ZnO薄膜的结构和光学特性的影响
  8. scrapy中文网学习笔记
  9. C++输出谢尔宾斯基三角形
  10. 谢尔宾斯基三角形——python递归