├── .gitignore ├── LICENSE ├── ONVIF-Core-Specification-v230.pdf ├── README.md └── ebook ├── 01.0.md ├── 02.0.md ├── 03.0.md ├── 04.00.md ├── 04.01.md ├── 04.02.md ├── 04.03.md ├── 04.04.md ├── 04.05.01.md ├── 04.05.02.md ├── 04.05.03.md ├── 04.05.04.md ├── 04.05.05.md ├── 04.05.06.md ├── 04.05.07.md ├── 04.05.md ├── 04.06.md ├── 04.07.md ├── 05.00.md ├── 05.01.01.md ├── 05.01.md ├── 05.02.md ├── 05.03.md ├── 05.04.md ├── 05.05.md ├── 05.06.01.md ├── 05.06.02.md ├── 05.06.md ├── 05.07.md ├── 05.08.md ├── 05.09.md ├── 05.10.md ├── 05.11.01.md ├── 05.11.02.md ├── 05.11.md ├── 05.12.01.md ├── 05.12.02.md ├── 05.12.md ├── 05.13.01.md ├── 05.13.02.md ├── 05.13.md ├── 06.00.md ├── 07.00.md ├── 07.01.md ├── 07.02.md ├── 07.03.00.md ├── 07.03.01.md ├── 07.03.02.md ├── 07.03.03.md ├── 07.03.04.md ├── 07.03.05.md ├── 07.03.06.md ├── 07.04.00.md ├── 07.04.01.md ├── 07.04.02.md ├── 07.04.03.md ├── 07.04.04.md ├── 07.04.05.md ├── 08.00.md ├── 08.01.01.md ├── 08.01.02.md ├── 08.01.md ├── 08.02.01.md ├── 08.02.02.md ├── 08.02.03.md ├── 08.02.04.md ├── 08.02.05.md ├── 08.02.06.md ├── 08.02.07.md ├── 08.02.08.md ├── 08.02.09.md ├── 08.02.10.md ├── 08.02.11.md ├── 08.02.12.md ├── 08.02.13.md ├── 08.02.14.md ├── 08.02.15.md ├── 08.02.16.md ├── 08.02.17.md ├── 08.02.18.md ├── 08.02.19.md ├── 08.02.20.md ├── 08.02.21.md ├── 08.02.22.md ├── 08.02.md ├── 08.03.01.md ├── 08.03.02.md ├── 08.03.03.md ├── 08.03.04.md ├── 08.03.05.md ├── 08.03.06.md ├── 08.03.07.md ├── 08.03.08.md ├── 08.03.09.md ├── 08.03.10.md ├── 08.03.11.md ├── 08.03.12.md ├── 08.03.13.md ├── 08.03.14.md ├── 08.03.15.md ├── 08.03.16.md ├── 08.03.17.md ├── 08.03.18.md ├── 08.03.19.md ├── 08.03.20.md ├── 08.03.21.md ├── 08.03.22.md ├── 08.03.23.md ├── 08.04.00.md ├── 08.04.01.md ├── 08.04.02.md ├── 08.04.03.md ├── 08.04.04.md ├── 08.04.05.md ├── 08.04.06.md ├── 08.04.07.md ├── 08.04.08.md ├── 08.04.09.md ├── 08.04.10.md ├── 08.04.11.md ├── 08.04.12.md ├── 08.04.13.md ├── 08.04.14.md ├── 08.04.15.md ├── 08.04.16.md ├── 08.04.17.md ├── 08.04.18.md ├── 08.04.19.md ├── 08.04.20.md ├── 08.04.21.md ├── 08.04.22.md ├── 08.04.23.md ├── 08.05.00.md ├── 08.05.01.md ├── 08.05.02.md ├── 08.05.03.md ├── 08.06.md ├── 09.00.md ├── 09.01.01.md ├── 09.01.02.md ├── 09.01.md ├── 09.02.01.md ├── 09.02.02.md ├── 09.02.03.md ├── 09.02.md ├── 09.03.md ├── 09.04.01.md ├── 09.04.md ├── 09.05.01.md ├── 09.05.02.md ├── 09.05.03.md ├── 09.05.04.md ├── 09.05.05.md ├── 09.05.md ├── 09.06.md ├── 09.07.01.md ├── 09.07.02.md ├── 09.07.03.md ├── 09.07.md ├── 09.08.md ├── 09.09.md ├── 09.10.md ├── 09.11.md ├── 09.12.01.md ├── 09.12.02.md ├── 09.12.03.md ├── 09.12.04.md ├── 09.12.05.md ├── 09.12.06.md ├── 09.12.07.md ├── 09.12.08.md ├── 09.12.09.md ├── 09.12.md ├── 09.13.md ├── 10.00.md ├── 10.01.01.md ├── 10.01.02.md ├── 10.01.03.md ├── 10.01.md ├── 10.02.md ├── 10.03.md ├── images ├── 7-4-1-1.png ├── 7-4-1-2.png ├── 7-4-1-3.png ├── 7-4-1-4.png ├── 7-4-3.png ├── 7-4-4.png ├── figure_1.png ├── figure_10.png ├── figure_2.png └── figure_9.png └── preface.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /ONVIF-Core-Specification-v230.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ONVIF-Core-Specification-v230.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ONVIF Core Specification 翻译 2 | 3 | 内容基于 Version 2.3 (2013,五月)的版本。 4 | 5 | ## 开始阅读 6 | 7 | [开始阅读](ebook/preface.md) 8 | -------------------------------------------------------------------------------- /ebook/01.0.md: -------------------------------------------------------------------------------- 1 | # 范围 2 | 3 | 本规范定义了网络客户端和设备之间的通讯程序. 4 | 这个新规范可以建立一个视频网络系统,在这个系统中,出自不同制造商的装置和接收者可以使用相同且定义清晰的接口. 5 | 本规范中的功能定义包含了设备发现,设备管理和事件框架. 6 | 7 | 补充专用服务,例如多媒体配置,实时音视频流, PTZ控制,视频分析以及控制,搜索和回访录像定义在各自单独的手册. 8 | 9 | 管理和控制接口定义在标准的Web Services描述中.这个标准也包含完整的XML schema和Web Service描述语言(WSDL)定义. 10 | 11 | 为了interoperability的互操作性,本标准定义了设备发现的流程.标准中的设备发现机制是以WS-Discovery规范为基础扩展的. 12 | 13 | 14 | [继续阅读](02.0.md) 15 | -------------------------------------------------------------------------------- /ebook/02.0.md: -------------------------------------------------------------------------------- 1 | # 规范引用 2 | 3 | ...此处省略一大堆 4 | 5 | [上一章](01.0.md)|[继续阅读](03.0.md) 6 | -------------------------------------------------------------------------------- /ebook/03.0.md: -------------------------------------------------------------------------------- 1 | # 术语和定义 2 | 3 | ## 定义 4 | 5 | 名词|解释 6 | ----|---- 7 | Ad-hoc network| 通常作为方言词为一个独立的基本服务集定义[IEEE 802.11-2007] IEEE:电子与电气工程协会 8 | Basic Service Set| 一组IEEE802.11站,已经成功地加入了一个共同的网络,参见[IEEE 802.11 -2007]。 9 | Capability| 功能命令,允许一个客户端请求一个设备所提供的服务。 10 | Infrastructure network| IEEE 802.11网络,包括一个接入点,定义在[IEEE 802.11 -2007]。 11 | PKCS| 指由RSA Security设计并发布的一组公钥加密标准。 12 | Pre Shared Key| 静态密钥被分配到设备。 13 | PullPoint| 资源提取消息。通过提取消息,通知不会被防火墙阻止。 14 | Remote Discovery Proxy(Remote DP)| 远程DP允许一个设备注册在远程DP和客户端,即使客户端和设备在不同的管理网络域里,通过远程DP也可以找到注册设备。 15 | Service Set ID| [IEEE802.11-2007]无线网络的身份。 16 | Wi-Fi Protected Access| Wi-Fi Alliance创建的检验程序,以看是否符合程序涵盖的安全协议。 17 | 18 | ## 术语 19 | 20 | 名词|解释 21 | ----|---- 22 | ASN|抽象语法标记 23 | BSSID|基本服务集标识 24 | CA|证书认证 25 | CBC|密码块链接 26 | CCMP|计数器模式密码块链接消息认证码协议 27 | DER|杰出的编码规则 28 | DHCP|动态主机配置协议 29 | DM|设备管理 30 | DNS|域名服务器 31 | DP|发现代理 32 | GW|网关 33 | HTTP|超文本传输协议 34 | HTTPS|安全套接层的超文本传输协议 35 | IO, I/O|输入/输出 36 | IP|互联网协议 37 | IPv4|Internet协议版本4 38 | IPv6|Internet协议版本6 39 | MTOM|消息传输优化机制 40 | NAT|网络地址转换 41 | NFC|近场通信 42 | NTP|网络时间协议 43 | OASIS|组织结构化信息标准促进 44 | ONVIF|开放式网络视频接口论坛 45 | POSIX|可移植操作系统接口 46 | PKCS|公钥密码学标准 47 | PSK|预共享密钥 48 | PTZ|平移/倾斜/缩放 49 | REL|权利表达语言 50 | RSA|里维斯特,Sharmir和期刊 51 | SAML|安全性断言标记语言 52 | SHA|安全散列算法 53 | SOAP|简单对象访问协议 54 | SSID|服务集ID 55 | TCP|传输控制协定 56 | TLS|安全传输层协议 57 | TKIP|临时密钥完整性协议 58 | TTL|存活时间 59 | UDDI|统一描述、发现和集成 60 | UDP|用户数据报协议 61 | URI|统一资源标识符 62 | URN|统一资源名称 63 | USB|通用串行总线 64 | UTC|世界标准时间 65 | UTF|Unicode转换格式 66 | UUID|统一的惟一标识符 67 | WDR|宽动态范围 68 | WPA|wi - fi保护访问 69 | WS|Web服务 70 | WSDL|Web服务描述语言 71 | WS-I|Web服务互操作性 72 | XML|可扩展标记语言 73 | 74 | 75 | [上一章](02.0.md)|[继续阅读](04.00.md) 76 | -------------------------------------------------------------------------------- /ebook/04.00.md: -------------------------------------------------------------------------------- 1 | # 4 概述 2 | 3 | 本规范起源于一个网络视频用例,该用例包含了本地和广域网场景,而且要扩展到通用的IP设备使用场景。 4 | 本规范通过定义他们服务端的借口,定义了一组配置和操作网络设备的功能接口。 5 | 6 | 本标准覆盖了设备发现,设备配置以及一个事件框架。 7 | 8 | 所有的服务共享一个公用的XML schema,所有的数据类型由[ONVIF Schema]提供定义。 9 | 不同的服务定义在服务WSDL文档中各自的部分。 10 | 11 | [上一章](03.0.md)|[继续阅读](04.01.md) 12 | -------------------------------------------------------------------------------- /ebook/04.01.md: -------------------------------------------------------------------------------- 1 | # 4.1 web服务 2 | 3 | 术语Web服务是一个标准的方法名称,该方法在IP网络上使用开放的,平台无关的Web服务标准来整合应用程序. 4 | 包括XML,SOAP 1.2[Part 1]和WSDL1.1.XMl用于描述数据,SOAP用于消息传送,WSDL用于描述服务. 5 | 6 | 这个框架建立在Web Services标准上.所有定义在标准中的服务配置表现为Web Services操作和定义在HTTP上的WSDL作为传送基础. 7 | 8 | ![图一](images/figure_1.png) 9 | 10 | 图一给了给予Web Services开发的基本原则的概述.服务提供者(设备)实现ONVIF服务.服务使用给予XML的WSDL来描述.然后, 11 | WSDL 作为请求者(客户端)实现和集成的基础.客户端集成可以简单的使用WSDL编译器工具去生成平台相关的代码作为客户端开发者去集成 12 | Web 服务到自己的程序中. 13 | 14 | Web服务提供者和请求者使用SOAP消息交换协议通讯.SOAP是一个轻量级的,基于XML的消息协议,用于在网络传送之前编码Web服务请求中的信息和相应消息. 15 | SOAP消息独立于任何操作系统和协议,可以使用多种互联网协议传送.ONVIF标准定义符合使用SOAP消息描述Web服务的传送协议. 16 | 17 | Web服务概述章节介绍通用ONVIF服务的结构,规范中的命令定义,错误处理原则和采用的Web服务安全机制. 18 | 19 | 为保证相互可操作性,所有的ONVIF服务都遵循网络服务互通组织(WS—I)的基本说明2.0建议,并使用document/literal模式. 20 | 21 | [上一章](04.00.md)|[继续阅读](04.02.md) 22 | -------------------------------------------------------------------------------- /ebook/04.02.md: -------------------------------------------------------------------------------- 1 | # 4.2 IP配置 2 | 3 | IP配置章节描述了IP配置的需求和建议.IP配置包含: 4 | - IP 网络通讯能力 5 | - 静态IP配置 6 | - 动态IP配置 7 | 8 | [上一章](04.01.md)|[继续阅读](04.03.md) 9 | -------------------------------------------------------------------------------- /ebook/04.03.md: -------------------------------------------------------------------------------- 1 | # 4.3 设备发现 2 | 3 | 配置接口定义在标准的以WS-Discovery标准为基础的Web服务接口.使用这个标准让重用一个现有的合适的Web服务发现框架成为可能, 4 | 而不是使用一个新的服务或者服务的定义. 5 | 6 | 这个标准介绍一个特殊的发现行为适用于例如视频监控.例如,一个完整的发现交互包含一个定义良好的服务定义和一个搜索条件. 7 | 规范包含设备类型和为了达到他所定义的范围. 8 | 9 | 一个成功的发现提供设备服务地址,一旦一个客户端有了设备的地址,它就可以通过设备提供的服务获取详细的设备信息.具体看下面的 10 | [4.5](04.05.md)章节. 11 | 12 | 除了标准web服务发现协议,该手册还提供远程设备发现代理用于发现注册设备,即使客户端和设备在不同域的网络中也可以通过远程发现代理来发现设备. 13 | 14 | 15 | [上一章](04.02.md)|[继续阅读](04.04.md) 16 | 17 | -------------------------------------------------------------------------------- /ebook/04.04.md: -------------------------------------------------------------------------------- 1 | # 4.4 配置文件 2 | 3 | 设备的功能是可以分组的,所以有多个配置文件.这些配置文件都使用他们单独自己的说明书. 4 | 5 | 每一个配置文件包含一些服务和功能定义在各自的说明书中. 6 | 7 | [上一章](04.03.md)|[继续阅读](04.05.md) 8 | 9 | -------------------------------------------------------------------------------- /ebook/04.05.01.md: -------------------------------------------------------------------------------- 1 | # 4.5.1 功能 2 | 3 | 功能命令允许一个客户端去请求一个设备提供的服务,并且可以去决定设备提供哪种一般的或供应商特定的服务, 4 | 功能是根据服务所形成的,这个文档对设备和事件服务的功能交换下了定义。关于其他的服务请参阅各自的服务规范说明。 5 | 6 | * 设备 7 | - 网络 8 | - 系统 9 | - 安全 10 | * 事件 11 | 12 | 不同类别的功能指明了这些命令和参数设置,它们可用于特定服务或服务类别 13 | 14 | [上一章](04.05.md)|[继续阅读](04.05.02.md) 15 | 16 | -------------------------------------------------------------------------------- /ebook/04.05.02.md: -------------------------------------------------------------------------------- 1 | # 4.5.2 网络 2 | 3 | 下面的网络命令允许标准化的管理功能 4 | 5 | * 获取和设置 hostname(主机名) 6 | * 获取和设置DNS配置 7 | * 获取和设置NTP配置 8 | * 获取和设置DDNS(动态域名解析) 9 | * 获取和设置网络接口 10 | * 启用/禁用和列出所有网络协议 11 | * 获取和设置默认网关 12 | * 获取和设置0配置 13 | * 获取,设置,添加和删除IP地址过滤器 14 | * 无限网络接口配置 15 | 16 | [上一章](04.05.01.md)|[继续阅读](04.05.03.md) 17 | 18 | -------------------------------------------------------------------------------- /ebook/04.05.03.md: -------------------------------------------------------------------------------- 1 | # 4.5.3 系统 2 | 3 | 系统命令用于管理下面的设备参数 4 | 5 | * 获取设备信息 6 | * 系统备份 7 | * 获取和设置系统日期和时间 8 | * 恢复出厂 9 | * 升级固件 10 | * 获取系统日志 11 | * 获取设备诊断数据(支持信息) 12 | * 重启 13 | * 获取和设置设备发现参数 14 | 15 | [上一章](04.05.02.md)|[继续阅读](04.05.04.md) 16 | 17 | -------------------------------------------------------------------------------- /ebook/04.05.04.md: -------------------------------------------------------------------------------- 1 | # 4.5.4 检索系统信息 2 | 3 | 系统信息,诸如系统日志,特定于供应商的支持信息和配置备份镜像,可以通过MTOM或HTTP来恢复. 4 | 5 | MTOM方法是由GetSystemLog, GetSystemSupportInformation和GetSystemBackup命令提供,HTTP方法是由 6 | GetSystemUris命令提供; 这些从文件检索到的URIs可以使用HTTP GET方法下载. 7 | 8 | [上一章](04.05.03.md)|[继续阅读](04.05.05.md) 9 | 10 | -------------------------------------------------------------------------------- /ebook/04.05.05.md: -------------------------------------------------------------------------------- 1 | # 4.5.5 固件升级 2 | 3 | 一个设备可提供两种升级固件的机制,第一种在MTOM模式下使用UpgradeSystemFirmware命令发送新的固件镜像。 4 | 第二种分为两个阶段,首先客户端发送StartFirmwareUpgrade命令让设备准备开始升级,然后使用HTTP POST发送固件镜像。 5 | 6 | 第二种机制被设计用在资源有限的设备上,通常这样的设备在正常工作的情况下无法接收和处理新的固件镜像。 7 | 8 | [上一章](04.05.04.md)|[继续阅读](04.05.06.md) 9 | 10 | -------------------------------------------------------------------------------- /ebook/04.05.06.md: -------------------------------------------------------------------------------- 1 | # 4.5.6 系统还原 2 | 3 | 系统还原允许设备从一个备份的镜像还原他的配置.也提供两种方式来还原. 4 | 第一用RestoreSystem命令使用MTOM方式发送备份的镜像,第二用StartSystemRestore命令使用HTTP POST操作发送备份镜像. 5 | 6 | [上一章](04.05.05.md)|[继续阅读](04.05.07.md) 7 | 8 | -------------------------------------------------------------------------------- /ebook/04.05.07.md: -------------------------------------------------------------------------------- 1 | # 4.5.7 安全 2 | 3 | 下面的安全操作用来管理设备的安全配置 4 | 5 | * 获取和设置安全策略 6 | * 处理用户证书和设置 7 | * 开/关 HTTPS客户端认证 8 | * 生成Key和下载证书功能 9 | * 处理IEEE 802.1X证书 10 | * 处理IEEE 802.1X CA 证书 11 | * IEEE 8.2.1X 配置 12 | 13 | [上一章](04.05.06.md)|[继续阅读](04.06.md) 14 | 15 | -------------------------------------------------------------------------------- /ebook/04.05.md: -------------------------------------------------------------------------------- 1 | # 4.5 设备管理 2 | 3 | 设备管理功能通过设备服务提供,设备服务是设备其他所有服务的入口点.设备服务的WSDL是有设备管理WSDL文件提供的. 4 | 设备管理接口由如下几个主题组成. 5 | 6 | * 功能 7 | * 网络 8 | * 系统 9 | * 安全 10 | 11 | [上一章](04.04.md)|[继续阅读](04.05.01.md) 12 | 13 | -------------------------------------------------------------------------------- /ebook/04.06.md: -------------------------------------------------------------------------------- 1 | # 4.6 事件处理 2 | 3 | 事件处理是给予OASIS WS-BaseNotification 和 WS-Topics规范.这些技术可以在不重新定义事件处理原则,基本格式和通讯模式的基础上 4 | 重用一个丰富的通知框架. 5 | 6 | 防火墙扫描, 根据WS-BaseNotification是通过PullPoint通知模式,然而这个模式不支持实时通知.因此,这个规范定义一个替代PullPoint 7 | 通讯模式和服务接口.PullPoint模式允许一个客户端驻留在防火墙之后利用WS-BaseNotification框架接收实时通知. 8 | 9 | 一个完整的标准事件需要标准化的通知.然而通知主题很大程度上取决于应用程序的需要.这个规范定义一组基本的推荐设备支持的通知主题, 10 | 具体可以查看附录A.此外,对于某些服务这个规范扩展了基本和强制通知主题. 11 | 12 | 事件服务的WSDL包含事件WSDL文件提供的扩展. 13 | 14 | [上一章](04.05.07.md)|[继续阅读](04.07.md) 15 | -------------------------------------------------------------------------------- /ebook/04.07.md: -------------------------------------------------------------------------------- 1 | # 4.7 安全 2 | 3 | 这一章描述网络安全需求,这个规范定义安全机制在两个不同的通讯层面上. 4 | 5 | * 传送层面的安全 6 | * 消息层面的安全 7 | 8 | 这个规范还定义如下的基于端口的网络安全. 9 | 10 | * IEEE 802.1X 11 | 12 | 一般的安全需求,定义和传送安全需求在第10章详细说明.消息层面的安全需求在5.12说明.IEEE802.1X需求在8.4.7章节说明 13 | 安全管理处理在下面的设备管理服务4.5.7中列出. 14 | 15 | [上一章](04.05.06.md)|[继续阅读](05.00.md) 16 | 17 | -------------------------------------------------------------------------------- /ebook/05.00.md: -------------------------------------------------------------------------------- 1 | # Web服务框架 2 | 3 | 所有的管理和配置命令是基于Web服务。 4 | 5 | 对于这个标准的目的: 6 | * 该设备是一个服务提供商。 7 | * 客户端是一个服务请求者。 8 | 9 | 一个典型的ONVIF网络系统确实有多个客户端为众多设备处理设备配置和设备管理业务。另外一个提供服务的设备也可能扮演一个客户端。 10 | 11 | Web服务还需要一个常见的方式来发现服务提供者。这一发现是通过使用通用的发现、描述和集成注册中心(UDDI)规格(UDDI API ver2]、[UDDI数据结构ver2]。UDDI规范使用服务代理实现服务发现。这个规范的目标设备的UDDI模型不是面向设备。因此,UDDI和服务代理是本规范的范围之外。 12 | 13 | 根据这个规范,设备(服务提供商)被发现使用WS-Discovery[WS-Discovery]的基础技术。第7节中描述的服务发现原则。 14 | 15 | Web服务允许开发者自由定义服务和信息交流,这可能会导致互操作性问题。Web服务互操作性(ws - i)组织发展标准配置文件和指导方针来创建可互操作的Web服务。客户的设备和应当遵循的指导方针在WS-I Basic Profile 2.0[ws ibp 2.0]。ONVIF标准规范的服务描述遵循WS-I Basic Profile 2.0的建议。 16 | 17 | [上一章](04.07.md)|[继续阅读](05.01.md) -------------------------------------------------------------------------------- /ebook/05.01.01.md: -------------------------------------------------------------------------------- 1 | # 服务要求 2 | 3 | 一个ONVIF兼容的设备应提供设备管理和事件服务。服务需求为不同的设备类型都定义在设备类型规范。 4 | 5 | 如果一个ONVIF兼容的设备支持一个特定的服务,设备应回应所有命令定义在相应服务WSDL。如果特定的命令不需要,服务和设备不支持命令,设备应该响应一个请求与错误代码: 6 | env:Receiver, 7 | ter:ActionNotSupported, 8 | 见5.11.2定义的错误代码。 9 | 10 | [上一章](05.01.md)|[继续阅读](05.02.md) -------------------------------------------------------------------------------- /ebook/05.01.md: -------------------------------------------------------------------------------- 1 | # 服务概述 2 | 3 | 一个ONVIF兼容的设备应当支持大量的Web服务定义和相关规范。 4 | 5 | 设备管理服务是所有设备的其他服务的入口点,因此为目标服务的ONVIF标准定义的WS-Discovery,详情参阅第7章。 6 | 7 | 设备管理服务固定的入口点是: 8 | http://onvif_host/onvif/device_service 9 | 10 | [上一章](05.00.md)|[继续阅读](05.01.01.md) -------------------------------------------------------------------------------- /ebook/05.02.md: -------------------------------------------------------------------------------- 1 | # WSDL概述 2 | 3 | "WSDL是一种XML格式来描述网络服务作为一组端点操作消息包含面向文档的或面向过程的信息。操作和消息是抽象描述的,然后绑定到具体的网络协议和定义消息格式端点。相关的具体终端结合到抽象的端点(服务)。WSDL是可扩展的,允许描述端点和他们的消息无论什么消息格式或网络协议是用来交流。"[WSDL1.1] 4 | 5 | 这个规范遵循WSDL 1.1规范和使用文档/文字包装的样式。 6 | 7 | WSDL文档包括以下内容: 8 | * 类型 - 使用XML架构定义的数据类型的定义。 9 | * 消息 - 定义内容的输入和输出消息。 10 | * 操作 - 定义的输入和输出消息是如何关联到一个逻辑操作。 11 | * 端口类型 - 组织操作的集合在一起。 12 | * 绑定 - 规范的协议,用于消息交换特定端口类型。 13 | * 端口 - 指定的地址绑定。 14 | * 服务 - 用于一组相关的端口。 15 | 16 | 17 | [上一章](05.01.01.md)|[继续阅读](05.03.md) -------------------------------------------------------------------------------- /ebook/05.03.md: -------------------------------------------------------------------------------- 1 | # 命名空间 2 | 3 | 表1中列出在本标准中使用前缀和命名空间。这些可以使用任何不属于标准的前缀。 4 | 5 | ## 表1:在本规范中定义的命名空间 6 | 7 | 前缀|命名空间URI|描述 8 | ----|----|---- 9 | tt|http://www.onvif.org/ver10/schema|在本规范的XML模式描述。 10 | tds|http://www.onvif.org/ver10/device/wsdl|命名空间为WSDL设备服务。 11 | trt|http://www.onvif.org/ver10/media/wsdl|命名空间为WSDL的媒体服务。 12 | tev|http://www.onvif.org/ver10/events/wsdl|命名空间为WSDL事件服务。 13 | ter|http://www.onvif.org/ver10/error|ONVIF定义的命名空间 14 | dn|http://www.onvif.org/ver10/network/wsdl|命名空间用于远程设备发现服务在这个规范。 15 | tns|http://www.onvif.org/ver10/topics|命名空间为ONVIF主题的命名空间 16 | 17 | 在表2中列出的名称空间引用此标准。 18 | 19 | ## 表2:引用名称空间(前缀) 20 | 前缀|命名空间URI|描述 21 | ----|----|---- 22 | wsdl|http://schemas.xmlsoap.org/wsdl/|WSDL命名空间的WSDL框架。 23 | wsoap12|http://schemas.xmlsoap.org/wsdl/soap12/|WSDL命名空间绑定WSDL SOAP 1.2。 24 | http|http://schemas.xmlsoap.org/wsdl/http/|WSDL命名空间的WSDL HTTP GET和POST绑定。 25 | soapenc|http://www.w3.org/2003/05/soap-encoding|编写命名空间定义的SOAP 1.2[SOAP 1.2,第2部分] 26 | soapenv|http://www.w3.org/2003/05/soap-envelope|封装命名空间定义的SOAP 1.2[SOAP 1.2,第1部分] 27 | xs|http://www.w3.org/2001/XMLSchema|实例命名空间定义的XS[xml - schema,第1部分]和[xml - schema,第2部分] 28 | xsi|http://www.w3.org/2001/XMLSchema-instance|schema XML namespace论坛。 29 | d|http://schemas.xmlsoap.org/ws/2005/04/discovery|设备发现定义的命名空间[WS-Discovery]。 30 | wsadis|http://schemas.xmlsoap.org/ws/2004/08/addressing|设备寻址简称WS-Discovery的命名空间[WS-Discovery]。 31 | wsa|http://www.w3.org/2005/08/addressing|设备寻址定义的命名空间所[WS-Addressing]。 32 | wstop|http://docs.oasis-open.org/wsn/t-1|[WS-Topics]规范的架构命名空间。 33 | wsnt|http://docs.oasis-open.org/wsn/b-2|架构命名空间[WS-BaseNotification]规范。 34 | xop|http://www.w3.org/2004/08/xop/include|命名空间所定义的xml二进制优化打包[XOP] 35 | 36 | 此外,该标准是指没有在表3中列出的命名空间前缀。 37 | 38 | ## 表3:参考的命名空间(不带前缀) 39 | 命名空间URI|描述 40 | ----|---- 41 | http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete|主题表达方言定义的主题表达式。 42 | http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet|ONVIF方言的主题表达式。 43 | http://www.onvif.org/ver10/tev/messageContentFilter/ItemFilter|这个ONVIF方言滤波器用于消息内容过滤。 44 | 45 | 46 | [上一章](05.02.md)|[继续阅读](05.04.md) -------------------------------------------------------------------------------- /ebook/05.04.md: -------------------------------------------------------------------------------- 1 | # 类型 2 | 3 | 使用XML schema描述第1部分和第2部分的数据类型定义。所有的数据类型定义在本规范包含在[ONVIF Schema],可以下载: 4 | 5 | * http://www.onvif.org/onvif/ver10/schema/onvif.xsd 6 | 7 | 8 | [上一章](05.03.md)|[继续阅读](05.05.md) -------------------------------------------------------------------------------- /ebook/05.05.md: -------------------------------------------------------------------------------- 1 | # 消息 2 | 3 | 根据WSDL1.1的操作说明在XML中使用输入和输出消息。 4 | 消息部分包含消息内容。 5 | 6 | 本规范中的消息主要包含两个要素: 7 | * 消息名称 8 | * 消息部分 9 | 10 | 消息名称指定元素的名称,该名称是用于操作定义的WSDL文档。消息名称定义消息的名称。 11 | 12 | WSDL消息部分元素用于定义实际的消息的格式。虽然可以有多个零部件在WSDL消息,这个规范遵循WS-Ibasic概要(ws - i BP 2.0),不允许超过一个部分元素在一个消息。因此我们总是使用相同的名称(“参数”),消息部分的名称。 13 | 14 | 下面的WSDL符号是用来ONVIF规格: 15 | 17 | 18 | 相应的, 19 | 21 | 22 | 23 | '前缀'是在该消息被定义的命名空间前缀。 24 | 25 | 本规范用于消息特定类型封装多个部件,以允许多个参数(或数据)的消息。 26 | 27 | 28 | [上一章](05.04.md)|[继续阅读](05.06.md) -------------------------------------------------------------------------------- /ebook/05.06.01.md: -------------------------------------------------------------------------------- 1 | # 单向操作类型 2 | 3 | 一个单向操作类型时使用服务提供者接收控制信息而不发送任何明确的承认信息或确认。本规范使用单向操作,只有发现和事件的目的。 4 | 5 | 这个操作类型是定义为一个单一的输入消息。 6 | 7 | 使用以下表格格式来描述单向操作: 8 | 9 | 消息名称|描述 10 | ----|---- 11 | ‘Operation_Name’Request |请求消息的描述。
Typer1 Namer1 [a1][b1]
Typer2 Namer2 [a2][b2]
:
Typern Namern [an][bn] 12 | 13 | 此表对应下面的WSDL符号在ONVIF规格: 14 | 15 | 16 | 17 | 18 | 19 | 20 | [上一章](05.06.md)|[继续阅读](05.06.02.md) 21 | -------------------------------------------------------------------------------- /ebook/05.06.02.md: -------------------------------------------------------------------------------- 1 | # 请求-响应操作类型 2 | 3 | 一个请求-响应操作类型时,使用的是一个服务提供者接收消息和响应与一个相应的消息。 4 | 5 | 这个操作类型是定义为一个输入,一个输出和多个故障消息。 6 | 7 | 使用以下表格格式来描述请求-响应操作: 8 | 9 | 消息名称|描述 10 | ----|---- 11 | ‘Operation_Name’Request |请求消息的描述。
Typer1 Namer1 [ar1][br1]
Typer2 Namer2 [ar2][br2]
:
Typern Namern [arn][brn] 12 | ‘Operation_Name’Response|响应消息的描述。
Types1 Names1 [as1][bs2]
Types2 Names2 [as2][bs2]
:
Typesn Namesn [asn][bsn] 13 | ‘FaultMessage_Name’ |如果定义特定于操作的缺点,该字段描述了结构定义的错误消息。 14 | 故障代码|描述 15 | Code
Subcode
Subcode |说明操作的具体故障。 16 | 此表对应下面的WSDL书写方式: 17 | 18 | 19 | 20 | = “Fault” message = “’prefix’:’FaultMessage_Name’”> 21 | 22 | 23 | 24 | [上一章](05.06.01.md)|[继续阅读](05.07.md) -------------------------------------------------------------------------------- /ebook/05.06.md: -------------------------------------------------------------------------------- 1 | # 操作 2 | 3 | 操作是定义WSDL端口类型声明。一个操作可以是这两种类型之一: 4 | * 单向 - 服务提供商接收到一条消息。 5 | * 请求-响应-服务提供者接收一条消息并发送一个相应的消息。 6 | 7 | 根据不同的操作,可以使用不同的端口类型。 8 | 9 | 操作名称定义了操作的名称。 10 | 11 | 使用下表概述于表4中的格式,在本说明书中所定义的操作。 12 | 13 | ## 表4:本说明书中使用的操作说明概要 14 | 消息名称|描述 15 | ----|---- 16 | ‘Operation_Name’Request |请求消息的描述。
Typer1 Namer1 [ar1][br1]
Typer2 Namer2 [ar2][br2]
:
Typern Namern [arn][brn] 17 | ‘Operation_Name’Response|响应消息的描述。
Types1 Names1 [as1][bs2]
Types2 Names2 [as2][bs2]
:
Typesn Namesn [asn][bsn] 18 | ‘FaultMessage_Name’ |如果定义特定于操作的缺点,该字段描述了结构定义的错误消息。 19 | 故障代码|描述 20 | Code
Subcode
Subcode |说明操作的具体故障。 21 | description列包含一个元素的列表(如果适用)包含在请求和响应消息的分别。括号之间的值定义了上、下极限的数量的事件,可以预期为元素指定类型的。例如,在上面的表Name s2 22 | 发生至少a s2和mostb s2。 23 | 24 | 大多数命令不定义任何特定的错误消息。如果一条消息被定义,它遵循在表中的直接响应消息。 25 | 26 | 故障代码表中列出具体的故障代码,可以预期从命令,见5.11.2.2。任何命令可以返回一个通用的故障,请参阅5.11.2.2。 27 | 28 | 接入的Access_Class_Name定义类的操作。访问类的操作特点的影响,请参阅第5.12.1.1。 29 | 30 | 31 | 32 | 33 | [上一章](05.05.md)|[继续阅读](05.06.01.md) 34 | -------------------------------------------------------------------------------- /ebook/05.07.md: -------------------------------------------------------------------------------- 1 | # 端口类型 2 | 3 | 端口类型是一组命名抽象操作和抽象消息。一个单一的端口类型是不同的操作的集合。 4 | 5 | 所有的操作名称的规格是ONVIF分门别类。每个操作类包含一个或多个操作。每个类别只持有一种类型的作业,是分组到单个端口类型。一个单向操作和请求响应操作永远存在相同的端口类型。 6 | 7 | 8 | [上一章](05.06.02.md)|[继续阅读](05.08.md) -------------------------------------------------------------------------------- /ebook/05.08.md: -------------------------------------------------------------------------------- 1 | # 绑定 2 | 3 | 一个绑定定义具体的协议和传输数据格式规范特定端口类型。可能有任意数量的绑定为一个给定的端口类型。 4 | 5 | “端口类型”是一个以前定义的类型和“绑定”是一个字符串以大写字母开始,定义绑定的名称。 6 | 7 | 符合ONVIF标准装置绑定定义根据本规范,应按照要求在[WS-I BP2.0]。这意味着应使用的WSDL SOAP1.2绑定。 8 | 9 | SOAP绑定可以有不同的风格。符合ONVIF标准的设备应使用“文档”指定的风格在操作级别。 10 | 11 | 各自服务的WSDL规范中定义的绑定。 12 | 13 | 14 | 15 | [上一章](05.07.md)|[继续阅读](05.09.md) -------------------------------------------------------------------------------- /ebook/05.09.md: -------------------------------------------------------------------------------- 1 | # 端口 2 | 3 | 单个端点指定由一个地址绑定。每个端口应当被给予一个唯一的名称。一个端口定义包含一个名称和一个绑定属性。 4 | 5 | 本规范没有授权任何端口命名原则。 6 | 7 | 8 | [上一章](05.08.md)|[继续阅读](05.10.md) -------------------------------------------------------------------------------- /ebook/05.10.md: -------------------------------------------------------------------------------- 1 | # 服务 2 | 3 | 服务是一组相关的端口。本规范没有授权任何服务命名原则。 4 | 5 | 6 | [上一章](05.09.md)|[继续阅读](05.11.md) -------------------------------------------------------------------------------- /ebook/05.11.01.md: -------------------------------------------------------------------------------- 1 | # 协议错误 2 | 3 | 协议错误是错误的结果形成协议的消息,这可能包含非法头部值,或被接收在出乎意料或经验一个套接字超时。为了说明和解释协议错误,HTTP和RTSP协议定义了一套标准的状态码[例如,1XX,2XX,3XX,4XX,5XX]。根据这个标准,设备和客户端应使用适当的RTSP和HTTP协议定义的状态代码用于错误报告,当收到相应的处理。 4 | 5 | 6 | [上一章](05.11.md)|[继续阅读](05.11.02.md) -------------------------------------------------------------------------------- /ebook/05.11.02.md: -------------------------------------------------------------------------------- 1 | # SOAP错误 2 | 3 | 由于Web服务的操作错误或SOAP消息处理过程中产生的SOAP错误。所有这些SOAP错误应报告和处理通过SOAP fault消息。SOAP规范提供了一个定义良好的共同框架来处理错误通过SOAP故障。 4 | 5 | 一个SOAP错误消息是一个正常的SOAP消息和一个众所周知的元素在体内(故障)。了解更详细的错误,SOAP消息结构定义了SOAP故障与不同的组件在它。 6 | 7 | * 故障代码 8 | * 子代码 9 | * 原因 10 | * 节点和作用 11 | * 故障细节 12 | 13 | 子代码和故障细节元素信息项是用于携带特定于应用程序的错误信息。 14 | 15 | 这个ONVIF规范使用一个单独的命名空间为特定的故障(见5 11 2 2): 16 | 17 | ter = “http://www.onvif.org/ver10/error”. 18 | 19 | 不同的Web服务的SOAP错误消息被定义为不同的Web服务定义。服务器和客户端将使用SOAP 1.2故障信息处理作为指定在本规范和应遵循WS-I Basic Profile 2.0 20 | 故障处理建议。 21 | 22 | 下面的例子是一个错误消息(通过HTTP SOAP 1.2错误消息)。斜体数值是实际值的占位符。 23 | 24 | ``` 25 | HTTP/1.1 500 Internal Server Error 26 | CONTENT-LENGTH: bytes in body 27 | CONTENT-TYPE: application/soap+xml; charset=”utf-8” 28 | DATE: when response was generated 29 | 30 | 35 | 36 | 37 | 38 | fault code 39 | 40 | ter:fault subcode 41 | 42 | ter:fault subcode 43 | 44 | 45 | 46 | 47 | fault reason 48 | 49 | http://www.w3.org/2003/05/soap-envelope/node/ultimateReceiver 50 | http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver 51 | 52 | fault detail 53 | 54 | 55 | 56 | 57 | ``` 58 | 59 | 60 | 61 | 下表总结了一般的SOAP故障代码(故障代码中定义了SOAP版本1.2第1部分:消息传递框架)。服务器和客户端可以定义额外的故障子码供应用程序使用。 62 | 63 | 我们区分通用故障和特定的错误。任何命令可以生成一个通用的故障。具体的故障都与一个特定的命令或命令集。特定的错误,适用于一个特定的命令定义在命令定义表。 64 | 65 | 在下面的表格中,故障代码,子代码和故障原因是规范值。description列添加信息。 66 | 67 | ## 通用故障 68 | 69 | 表5列出了通用的故障码,如适用,子码​​。所有服务器和客户端实现将处理下面列出所有的缺点。任何web服务命令可以返回一个或几个通用的缺点。 70 | 71 | 所列的故障无子码无任何代码值。 72 | 73 | ## 表5:通用故障 74 | 75 | 故障代码|子代码|故障原因|描述 76 | ----|----|----|---- 77 | env:VersionMismatch||SOAP版本不匹配|设备发现无效元素信息项而不是预期的封装元素信息项。 78 | env:MustUnderstand||SOAP头代码块不理解|一个或多个必需的SOAP头代码块都不理解。 79 | env:DataEncodingUnknown||不支持SOAP的数据编码|SOAP头块或SOAP体子元素信息项是作用域与数据编码不支持的设备。 80 | env:Sender|ter:WellFormed|格式良好的错误|发生入侵格式良好的XML 81 | env:Sender|ter:TagMismatch|标签不匹配|有一个标签名称或命名空间不匹配。 82 | env:Sender|ter:Tag|没有标签|XML元素标记不见了。 83 | env:Sender|ter:Namespace|命名空间错误|发生SOAP命名空间错误。 84 | env:Sender|ter:MissingAttr|所需的属性不存在|缺失一个必要的属性。 85 | env:Sender|ter:ProhibAttr|禁止属性|存在一个被禁止的属性。 86 | env:Sender|ter:InvalidArgs|无效的参数|一个错误由于下列:
* 缺少的参数
* 参数太多
* 参数是错误的数据类型。 87 | env:Sender|ter:InvalidArgVal|参数值无效|参数值是无效的。 88 | env:Sender|ter:UnknownAction|未知的操作|一个未知的指定操作。 89 | env:Sender|ter:OperationProhibited|操作不允许|请求的操作不允许的设备。 90 | env:Sender|ter:NotAuthorized|发送方未授权|请求的操作需要授权和发送方未被授权。 91 | env:Receiver|ter:ActionNotSupported|可选操作未执行|请求的操作是可选的,而不是由设备实现。 92 | env:Receiver|ter:Action|操作失败|请求的SOAP操作失败。 93 | env:Receiver|ter:OutofMemory|内存不足|设备没有足够的内存来完成此操作。 94 | env:Receiver|ter:CriticalError|临界误差|该设备已经遇到一个错误条件,它不能恢复本身,需要重置或动力循环。 95 | 96 | ## 具体故障 97 | 98 | 具体的故障只适用于一个特定的命令或命令集。特定的错误声明为部分的服务定义。 99 | 100 | ## HTTP错误 101 | 102 | 如果服务器等待开始的入站消息,没有收到的SOAP消息,服务器不应产生一个SOAP错误,而是发送一个HTTP错误响应。 103 | 104 | ## 表6:HTTP错误 105 | 106 | HTTP错误|HTTP错误代码|HTTP原因 107 | ----|----|---- 108 | Malformed Request|400|错误请求 109 | Requires Authorization|401|非法的请求;未被授权的请求 110 | HTTP Method is neither POST or GET|405|不允许使用该方法 111 | Unsupported message encapsulation method|415|不支持的媒体 112 | 113 | 服务器应该避免报告内部错误,因为这可能暴露的安全漏洞,可以被滥用。 114 | 115 | 116 | [上一章](05.11.01.md)|[继续阅读](05.12.md) 117 | -------------------------------------------------------------------------------- /ebook/05.11.md: -------------------------------------------------------------------------------- 1 | # 错误处理 2 | 3 | 与任何其他协议,错误可以发生在通信、协议或消息处理。 4 | 5 | 规范分类错误处理分为以下几类: 6 | 7 | * 协议错误 8 | * SOAP错误 9 | * 应用程序错误 10 | 11 | 12 | [上一章](05.10.md)|[继续阅读](05.11.01.md) -------------------------------------------------------------------------------- /ebook/05.12.01.md: -------------------------------------------------------------------------------- 1 | # 基于用户的访问控制 2 | 3 | 节中描述的授权框架。5.12允许的服务请求进行身份验证。一旦服务请求进行身份验证,该设备应决定根据请求者是否被授权接收服务访问策略。 4 | 5 | 一个设备可以支持一个自定义的访问策略的定义由设备用户通过get和set访问策略,在8.4节中定义的操作。 6 | 7 | # 默认访问政策 8 | 9 | 默认情况下,该设备应执行以下默认访问政策,给一个可接受的安全级别在许多系统。 10 | 11 | 每个用户是完全相关的下列用户级别: 12 | 1.管理员 13 | 2.运营商 14 | 3.用户 15 | 4.匿名 16 | 17 | 未经授权的用户放置到匿名类和设备不得允许用户被添加到匿名用户级别类别。 18 | 19 | 服务分为访问类为基础的影响(见5.6节)。下面的访问类定义: 20 | * PRE_AUTH 21 | 服务不需要用户身份验证。 22 | 例如:GetEndpointReference 23 | * READ_SYSTEM 24 | 服务从设备读取系统配置信息。 25 | 例如:GetNetworkInterfaces 26 | * READ_SYSTEM_SENSITIVE 27 | 服务从设备读取敏感(但不是真正的机密)系统配置信息。 28 | * READ_SYSTEM_SECRET 29 | 服务读取系统配置信息的保密设备。 30 | 例如:GetSystemLog 31 | * WRITE_SYSTEM 32 | 服务原因更改系统配置的设备。 33 | 例如:SetNetworkDefaultGateway 34 | * UNRECOVERABLE 35 | 服务导致不可恢复的改变系统配置的设备。 36 | 例如:SetSystemFactoryDefault 37 | * READ_MEDIA 38 | 服务读取相关数据记录媒体。 39 | 例如:GetRecordings 40 | * ACTUATE 41 | 服务会影响系统的运行时行为。 42 | 例如:CreateRecordingJob 43 | 44 | 默认的访问策略基于关联以下列方式的服务和授予访问权限的访问类。 C级应给予用户访问到相关的服务来访问R类,当且仅当“X”是存在于单元格在的列c和r行表7。 45 | 46 | ## 表7默认访问策略定义 47 | 48 | |管理员|运营商|用户|匿名 49 | ----|----|----|----|---- 50 | PRE_AUTH|X|X|X|X 51 | READ_SYSTEM|X|X|X| 52 | READ_SYSTEM_SENSITIVE|X|X| | 53 | READ_SYSTEM_SECRET|X| | | 54 | WRITE_SYSTEM|X| | | 55 | UNRECOVERABLE|X| | | 56 | READ_MEDIA|X|X|X| 57 | ACTUATE|X|X| | 58 | 59 | 60 | [上一章](05.12.md)|[继续阅读](05.12.02.md) -------------------------------------------------------------------------------- /ebook/05.12.02.md: -------------------------------------------------------------------------------- 1 | # 用户名标记配置文件 2 | 3 | 客户端应使用场合和时间戳两个来定义[ws usernametoken]。服务器应拒绝任何用户名令牌不使用这两种场合和时间戳。 4 | 5 | 这个规范定义了一组命令来管理用户凭证,见8.4。这些命令允许关联用户不同用户级别定义在5.12.1。 6 | 7 | ## 密码派生 8 | 9 | 在一些设备上使用相同的认证引入了一定的安全隐患。要求用户提供一个独特的凭据为每个设备是不可行,而不是客户端使用用户名令牌概要文件应该和一个客户端使用摘要式身份验证可以实现以下密码派生算法。 10 | 11 | 表示任意一个用户通过UA。表示由p UA密码使用的值由用户来访问设备UA的系统。此外表示NEP终端设备服务点参考价值系统中的特定设备。最后,表示由pe ua密码等效客户用来访问一个特定的设备。客户端应该计算pe ua如下: 12 | 13 | PE_UA = base64(HMAC_SHA-1(UA+P_UA,NEP+”ONVIF password”)), 14 | 15 | 其中“+”表示连接和“ONVIF密码”是一个ASCII字符串。它应包括确切的形式,它没有给出一个长度字节或尾随空字符,即以下的十六进制值:4F 4E 56 49 46 20 70 61 73 73 77 6F 72 64. 16 | 17 | HMAC_SHA-1是在[RFC2104]中规定的算法,使用SHA-1[FIPS180-2]作为底层的算法。使用HMAC功能的关键价值是串联的用户名和密码,UA + P_UA,直接映射到等值的二进制数。相似的,价值PE_UA的应被映射到其对应的ASCII码,在传输前的移动设备。 18 | 19 | base64描述(RFC 3548),注意操作的结果是实际的base64密码等效,相当于应使用的。 20 | 21 | ## 例子 22 | 23 | 假设下面的用户名和密码将用于客户端(ASCII):“user”和“VRxuNzpqrX”,即, 24 | 25 | ``` 26 | UA = 75 73 65 72 27 | P_UA = 56 52 78 75 4E 7A 70 71 72 58 28 | ``` 29 | 30 | 接下来,假设该设备具有以下设备服务端点引用的值: 31 | 32 | Urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6. 33 | 34 | 然后,将要使用的密码相当于然后的计算,计算公式为: 35 | 36 | ``` 37 | PE_UA = base64(HMAC_SHA-1(UA+ P_UA,NEP+”ONVIF password”)) = 38 | base64(HMAC_SHA-1(75736572565278754E7A70717258, 39 | F81D4fAE7DEC11D0A76500A0C91E6BF64F4E5649462070617373776F7264)) = 40 | base64(16 E5 C5 A9 4D DE 8A 97 6D D7 2F 55 78 5F C2 D0 6B DA 53 4A)= 41 | FuXFqU3eipdt1y9VeF/C0GvaU0o= 42 | ``` 43 | 44 | 由此产生的密码等“FuXFqU3eipdt1y9VeF/C0GvaU0o=”是由客户端应使用特定的设备上配置的用户凭据,然后访问该设备的密码。 45 | 46 | 47 | 48 | [上一章](05.12.01.md)|[继续阅读](05.13.md) -------------------------------------------------------------------------------- /ebook/05.12.md: -------------------------------------------------------------------------------- 1 | # 安全 2 | 3 | 本标准中定义的服务应当保护或者使用摘要式身份验证依据(RFC 2617)或ws - security框架,根据安全策略。WS-Security规范定义了一套标准的SOAP扩展,可以用来提供Web服务消息的完整性和保密性。该框架允许使用标记的几种不同的安全模型。当前定义的以下标记: 4 | * 用户名称令牌[WS-UsernameToken] 5 | * X.509安全令牌[WS-X.509Token] 6 | * SAML令牌[WS-SAMLToken] 7 | * Kerberos令牌[WS-KerberosToken] 8 | * 权利表达式语言(REL)令牌[WS-RELToken] 9 | 10 | 如果服务器同时支持如[RFC2617]中规定的摘要式身份验证和用户名令牌指定WS-Security中的下列行为应当适应:一个Web服务请求进行身份验证通过HTTP级别的摘要式身份验证[RFC2617]或在网络上通过服务水平的WS-Security(WSS)框架。如果客户端不提供身份验证凭据,随着Web服务请求,服务器应假设该客户打算使用摘要身份验证[RFC2617],如果需要的话。因此,如果客户不提供身份验证凭证当请求一个服务需要身份验证,它将接收一个HTTP 401错误根据(RFC 2617)。请注意,这种行为对服务器端的不同之处的情况下,仅支持用户名令牌的个人主页上,这需要对于这种情况一个HTTP 400错误在HTTP水平和SOAP:Fault env:发送方ter:NotAuthorized误差对WS级别。 11 | 12 | 客户端不应该同时提供身份验证凭据的HTTP级别和WS级别。如果服务器接收到Web服务请求,HTTP级别的和WS级别的包含身份验证凭据的,应当先验证HTTP层上提供的凭据。如果验证成功,服务器将最终验证的WS层上提供身份验证凭据。 13 | 14 | 图2总结了身份验证的一个web服务请求的服务器。 15 | 16 | ![图片二](images/figure_2.png) 17 | 18 | 两个摘要式身份验证和用户名令牌只给出了最基本的安全。在一个系统,安全是很重要的,建议总是配置装置基于tls访问(见10.1)。摘要式身份验证或用户名令牌消息级安全性结合TLS,客户机和服务器身份验证,保护传输级安全性给一个可接受的安全水平在许多系统。 19 | 20 | 一个ONVIF兼容的设备应该认证一个请求的RTSP RTSP水平。如果HTTP用于隧道的RTSP请求设备不得在HTTP身份验证级别。 21 | 22 | 符合ONVIF标准的设备应进行身份验证时,RTSP和HTTP方法使用从同一组凭据,用于对WS​​部分用户/用户/凭据。对于用户自定义的用户名令牌,摘要式身份验证[RFC 2617]应当用于RTSP和HTTP。 23 | 24 | 25 | [上一章](05.11.02.md)|[继续阅读](05.12.01.md) -------------------------------------------------------------------------------- /ebook/05.13.01.md: -------------------------------------------------------------------------------- 1 | # Character Set 2 | 3 | 设备应支持utf - 8字符集和它可能支持其他字符集。如果一个客户端发送一个请求使用utf - 8,设备应当总是回复使用utf - 8字符集。 4 | 5 | [上一章](05.13.01.md)|[继续阅读](05.13.02.md) -------------------------------------------------------------------------------- /ebook/05.13.02.md: -------------------------------------------------------------------------------- 1 | # 允许字符串中的字符 2 | 3 | 一个设备不应当有任何限制字符字符串有关法律不明确表示在这个和其他ONVIF规格。 4 | 5 | [上一章](05.13.01.md)|[继续阅读](06.00.md) -------------------------------------------------------------------------------- /ebook/05.13.md: -------------------------------------------------------------------------------- 1 | # 字符串表示形式 2 | 3 | 以下分段适用于所有ONVIF标准的服务。 4 | 5 | [上一章](05.13.md)|[继续阅读](05.13.01.md) -------------------------------------------------------------------------------- /ebook/06.00.md: -------------------------------------------------------------------------------- 1 | # 6 IP配置 2 | 3 | 设备和客户端通过开放或封闭的IP网络进行通信。这一标准不对网络类型做任何限制或要求。然而,按照IP4协议所规定的框架在实体之间建立通信联系是可行的。设备IP配置包括如IP地址参数与默认网关。 4 | 5 | 符合ONVIF标准的设备应至少有一个网络接口,可连通IP网络。同样,客户端也应至少有一个网络接口,可连通IP网络并允许设备和客户端之间进行数据通信。 6 | 7 | 设备和客户端都必须支持基于IPv4的网络通信。在设备和客户端应支持基于IPv6的网络通信。 8 | 9 | 应尽可能通过网络或本地配置接口为设备配置静态IP。 10 | 11 | 符合ONVIF标准的设备应支持动态IP配置的链路本地地址根据[RFC3927]。支持IPv6的设备将支持无状态IP配置根据[RFC4862]和邻近发现根据RFC4861。 12 | 13 | 设备应支持动态IP配置跟据[RFC2131]。支持IPv6的设备应该支持状态IP配置通过DHCPv6根据[RFC3315]如果信号通过相应的功能。 14 | 15 | 该设备可以支持任何额外的IP配置机制。 16 | 17 | 一个设备的网络配置应通过ONVIF设备管理服务在8.2章节的规定来配置,还可以通过本地接口提供。后者在本说明书范围之外。 18 | 19 | 设备的默认网络配置应启用DHCP和动态链路本地(无状态)地址配置。即使设备是通过静态IP地址来配置网络,它也应该启用链路本地地址。 20 | 21 | 当一个设备连接到IPv4网络,地址分配优先级(本地链路和路由地址)应依循[RFC3927]。 22 | 23 | 进一步详细说明如何实现IP连通性是在本标准的范围之外。 24 | 25 | [上一章](05.13.02.md)|[继续阅读](07.00.md) 26 | -------------------------------------------------------------------------------- /ebook/07.00.md: -------------------------------------------------------------------------------- 1 | # 7 设备发现 2 | 3 | [上一章](06.00.md)|[继续阅读](07.01.md) 4 | -------------------------------------------------------------------------------- /ebook/07.01.md: -------------------------------------------------------------------------------- 1 | # 7.1 概述 2 | 3 | 客户端搜索可用设备是通过动态Web服务发现协议[WS-Discovery]。 4 | 5 | [WS-Discovery]所指定的设备应符合本规范实施目标服务角色。 6 | 7 | 如果有必要,应符合本规范的客户端实现客户端的角色,在[WS-Discovery]指定。 8 | 9 | 在[WS-Discovery]所描述的发现代理的角色不受设备或客户端的支持(另一种发现代理的角色在本规范有介绍,参见7.4节)。在[WS-Discovery]第三节所描述的设备实现了客户端的作用,忽视了与发现代理的互动方案。相反,这个规范定义了一种新的发现代理的角色,允许远程发现。远程发现依赖于一个发现代理和一个系统供应商的存在,要在系统中提供远程发现功能,应该实现在章节7.4中所描述的发现代理的角色。 10 | 11 | [WS-Discovery]定义了通用唯一标示符(UUID): 端点引用的URI格式,建议在2.6节,但本规范覆盖这一建议。相反,统一资源名称:通用唯一标识符(URN:UUID)格式被使用在[RFC4122](参见7.3.1节)。 12 | 13 | [上一章](07.00.md)|[继续阅读](07.02.md) 14 | -------------------------------------------------------------------------------- /ebook/07.02.md: -------------------------------------------------------------------------------- 1 | # 7.2 操作模式 2 | 3 | 设备应能在两种模式下运行: 4 | 5 | * 可发现的 6 | * 不可发现的 7 | 8 | 当设备工作在可发现模式时,发送组播Hello消息,一旦连接到网络或发送它的状态在改变根据[WS-Discovery]。同时它一直在监听Probe和Resolve消息然后立即做出回应。工作在不可见模式的设备不用监听[WS-Discovery]的消息或发送这种回应消息。 9 | 10 | 设备默认是工作在可见模式。为了防御拒绝服务的攻击,它应设为不可发现模式,可通过8.3.19中定义的操作来设置设备。 11 | 12 | [上一章](07.01.md)|[继续阅读](07.03.00.md) 13 | -------------------------------------------------------------------------------- /ebook/07.03.00.md: -------------------------------------------------------------------------------- 1 | # 7.3 发现定义 2 | 3 | [上一章](07.02.md)|[继续阅读](07.03.01.md) 4 | -------------------------------------------------------------------------------- /ebook/07.03.01.md: -------------------------------------------------------------------------------- 1 | # 7.3.1 端点引用 2 | 3 | 设备或端点作为客户端的角色时应该使用URN:UUID [RFC4122]作为其端点引用的地址属性。 4 | 5 | 设备或端点作为客户端的角色时,应使用稳定的全局唯一标识符作为其端点引用属性的一部分,该标识符是恒定的网络接口。结合一个wsadis:Address 和 wsadis:ReferenceProperties的提供一个稳定和全球唯一的标识符。 6 | 7 | [上一章](07.03.00.md)|[继续阅读](07.03.02.md) 8 | -------------------------------------------------------------------------------- /ebook/07.03.02.md: -------------------------------------------------------------------------------- 1 | # 7.3.2 Hello 2 | 3 | 1.类型 4 | 5 | 符合ONVIF标准的设备应包括设备管理服务的端口类型,即tds:Device,在中声明。 6 | 7 | 下面的示例给出了这种类型如何被编码在SOAP的Hello body中: 8 | 9 | tds:Device. 10 | 11 | Hello消息可能包括额外的类型。 12 | 13 | 2.Scopes 14 | 15 | 符合ONVIF标准的设备应该包含范围属性,在Hello消息中的设备范围。 16 | 17 | 设备范围通过[RFC 3986]的URI来设置。该规范定义了scope属性如下: 18 | 19 | The scheme attribute:onvif 20 | 21 | The authority attribute:www.onvif.org 22 | 23 | 设备可能有其他范围的URI。ONVIF标准定义的范围不仅限于这些URI。 24 | 25 | 表8中定义了一组范围参数。除了遵从这些标准化的参数,它应是可被设置为设备所有者所定义的任何范围参数。设备参数可以列出,并通过8.3节定义的命令设置。 26 | 27 | 设备可能有其他范围的URI。这些URI并不仅限于ONVIF定义的scope。 28 | 29 | ## 表8:范围参数 30 | 31 | 名词|值定义|解释| 32 | ----|----|--- 33 | Profile| 任意字符串| 表示设备所支持的配置文件的值。定义的值在本文件的范围之外,并在配置文件中规范定义。 34 | Location| 任意字符串或路径值| 定义了设备的物理位置。位置值可以是任意字符串来描述设备的物理位置。 35 | Hardware| 任意字符串或路径值| 字符串或路径值描述设备的硬件信息。设备应至少包括一个硬件设备到其范围列表中。 36 | Name| 任意字符串或路径值| 设备的可搜索的名称。设备至少应包括一个名字到其范围列表中。 37 | 38 | 设备应该包括至少一个固定的入口(由设备供应商定义的)的剖面,分别为硬件和名称类别包含在范围列表中。一个设备可以在范围列表中包含任何其他额外的范围属性。 39 | 40 | 设备可能包括在其范围内的任意数量的范围列表。这意味着,一个单位可能例如定义多个不同位置的范围。一个探针对列表中的所有范围匹配。 41 | 42 | 2.1 Example 43 | 44 | 下面的例子演示了范围值的使用。这仅仅是一个例子,并没有在所有的指示是什么类型的范围参数作为设备配置的一部分。在这个例子中,我们假设该设备配置了以下范围: 45 | 46 | onvif://www.onvif.org/Profile/Streaming 47 | onvif://www.onvif.org/hardware/D1-566 48 | onvif://www.onvif.org/location/country/china 49 | onvif://www.onvif.org/location/city/bejing 50 | onvif://www.onvif.org/location/building/headquarter 51 | onvif://www.onvif.org/location/floor/R5 52 | onvif://www.onvif.org/name/ARV-453 53 | 54 | 客户端与范围onvif://www.onvif.org将会得到一个匹配的探针。 55 | 56 | 同样,具有以下范围属性的的设备将会得到一个匹配的探针: 57 | 58 | onvif://www.onvif.org/location/country/china 59 | 60 | 具有以下属性的探针将会不匹配: 61 | 62 | onvif://www.onvif.org/hardware/D1 63 | 64 | 65 | 3.Address 66 | 67 | 在Hello消息中,设备应包含带有设备地址信息的节点。应提供一个URI为每个协议(http,https)和外部可用的IP地址。 68 | 69 | 设备的IP地址配置规则定义在5.12.2.1.1章节。 70 | 71 | 72 | [上一章](07.03.01.md)|[继续阅读](07.03.03.md) 73 | -------------------------------------------------------------------------------- /ebook/07.03.03.md: -------------------------------------------------------------------------------- 1 | # 7.3.3 探头和探头匹配 2 | 3 | 设备的探头匹配包括类型,范围和地址等定义,参见7.3.2 Hello。 4 | 5 | 符合ONVIF标准的设备至少应支持 6 | http://schemas.xmlsoap.org/ws/2005/04/discovery/rfc3986 范围的匹配规则。此范围匹配定义与[WS-Discovery]的定义略有不同,因为[RFC 7 | 2396]已被[RFC 3986]所取代。 8 | 9 | 在匹配探头的匹配消息中设备应包括带有设备服务地址信息的节点。节点在大多数情况下只包含一个地址到5.1节所定义的设备管理服务中。 10 | 11 | 12 | [上一章](07.03.02.md)|[继续阅读](07.03.04.md) 13 | -------------------------------------------------------------------------------- /ebook/07.03.04.md: -------------------------------------------------------------------------------- 1 | # 7.3.4 解析和解析匹配 2 | 3 | 本规范要求终端地址信息要被加入到Hello消息和Probe Match消息中。在大多数情况下,没有必要解析和解析匹配交换。与[WS-Discovery]规范兼容,但是,设备应 4 | 实现解析匹配响应。 5 | 6 | [上一章](07.03.03.md)|[继续阅读](07.03.05.md) 7 | -------------------------------------------------------------------------------- /ebook/07.03.05.md: -------------------------------------------------------------------------------- 1 | # 7.3.5 Bye 2 | 3 | 当一个设备准备离开网络时应该发送一个单向的Bye消息,正如在WS-Discovery所描述的那样。 4 | 5 | [上一章](07.03.04.md)|[继续阅读](07.03.06.md) 6 | -------------------------------------------------------------------------------- /ebook/07.03.06.md: -------------------------------------------------------------------------------- 1 | # 7.3.6 SOAP错误消息 2 | 3 | 如果组播包出现错误,设备和客户端应该默默的丢弃,忽略该请求。 4 | 5 | 不建议发送错误响应,因为可能出现许多设备对同一个请求均发送错误响应而导致数据包风暴。为了完整起见,单播数据包的错误处理在下面描述。 6 | 7 | [action] http://schemas.xmlsoap.org/ws/2005/04/discovery/fault 8 | 9 | [Code] s12:Sender 10 | 11 | [Subcode] d:MatchingRuleNotSupported 12 | 13 | [Reason] E.g., the matching rule specified is not supported 14 | 15 | [Detail] 16 | 17 | List of xs:anyURI 18 | 19 | 20 | 21 | [上一章](07.03.05.md)|[继续阅读](07.04.00.md) 22 | -------------------------------------------------------------------------------- /ebook/07.04.00.md: -------------------------------------------------------------------------------- 1 | # 7.4 远程发现扩展 2 | 3 | 本节介绍了可选的发现扩展需要更复杂的网络情况。支持远程服务发现的设备应支持在本节中定义的发现扩展。 4 | 5 | 本节中定义的远程发现扩展可以与普通的基于WS-Discovery计划的组播如本规范所定义的那样一起使用。例如,远程发现扩展可以与普通的“本地”发现一起并行工作。 6 | 7 | [上一章](07.03.06.md)|[继续阅读](07.04.01.md) 8 | -------------------------------------------------------------------------------- /ebook/07.04.01.md: -------------------------------------------------------------------------------- 1 | # 7.4.1 网络方案 2 | 3 | 如果客户端和设备不驻留在同一个管理域,它是没有可能为客户端找到并连接到设备使用多播的探针。例如,如果该设备或客户端驻留在防火墙或NAT(网关GW)在一个网络中,它不能连接到多播的探针。然后,其他的方法需要,本说明书使用了四种不同的情况: 4 | 5 | 1. 设备驻留在一个管理域(私人)和客户端驻留在公共网络,见图3。 6 | 2. 设备驻留在公共网络和客户端驻留在一个管理域(私人),见图4。 7 | 3. 设备驻留在一个管理域(私人)和客户端驻留在另一个管理域(私人),见图5。 8 | 4. 驻留在公用网络中的设备和客户端,请参阅图6。 9 | 10 | ![图3:在管理域(私人)的设备和在公共网络的客户端](images/7-4-1-1.png) 11 | ![图4:在公共网络的设备和在管理域(私人)的客户端](images/7-4-1-2.png) 12 | ![图5:在管理域(私人)的设备和在另一管理域(私人)的客户端](images/7-4-1-3.png) 13 | ![图6:设备和客户端均在公共网络](images/7-4-1-4.png) 14 | 15 | [WS-Discovery]规范引入了一种发现代理(DP)以解决一些方案。然而 [WS-Discovery]规范没有支持本规范中所引入的所有网络场景。本规范定义了一个DP,使得“即插即用”在我们已经在上面列举过的更复杂的网络方案中可行。这个DP不符合 [WS-Discovery] 规范。 16 | 17 | [上一章](07.04.00.md)|[继续阅读](07.04.02.md) 18 | -------------------------------------------------------------------------------- /ebook/07.04.02.md: -------------------------------------------------------------------------------- 1 | # 7.4.2 发现代理 2 | 3 | 广域网中的设备跨越多个管理域的网络配置,网络管理员需要引进一个DP端点进入系统。 DP执行以下任务: 4 | 1. 监听设备hello消息和响应这些定义在7.4.3节。 5 | 2. 响应代表的注册客户端设备上的查询的探测。 6 | 7 | DP可能像设备一样驻留在同一个管理域。客户端和设备驻留在不同的域无法通过组播相连接时,为了支持这种网络情景,将DP放在一个公开的可用的网络以便设备和客户端的端点可以访问它。为了让设备的Hello消息准确直达发送到它的home DP宣布它的存在, 应让设备能找到它的“home DP”的网络地址。在本说明书中,home DP网络地址可以通过两种方式获得: 8 | 1. 直接地址配置。 9 | 2. DP发现使用DNS服务记录(SRV)查询。 10 | 11 | 一旦设备得到网络连接或当home DP的网络地址改变时,设备就会试着使用这些方法去连接到home DP。应能操作启用或禁用设备远程发现注册功能。支持远程发现的设备应实现远程Hello的启用和禁用操作,定义详见8.3.21节。 12 | 13 | 在7.4.3节中定义了,当一个设备未配置home DP地址或设备禁用了远程Hello操作时将无法发送远程Hello消息。 14 | 15 | 1. 直接DP地址配置 16 | 该规范引入了一种通过网络接口配置home DP地址的设备管理命令,请参阅8.3.22和8.3.23节。 17 | 18 | 2. DNS服务记录查询 19 | 如果设备要启用远程发现,但是缺乏远程DP地址配置,应当试着进行DNS SRV查询该home DP。应使用以下由[RFC2782]定义的记录名称和协议: 20 | 21 | _onvifdiscover._tcp 22 | 23 | 为了避免设备的DNS SRV查询,在启用远程发现前应通过直接地址配置一个DP地址。 24 | 为了让设备通过DP查询成功的发现其他设备,管理员应该输入DP地址,端口和优先级到使用SRV的DNS配置中。需存在一个或多个注册服务器。确切的数目取决于系统的负荷,并且在本说明书的范围之外。 25 | 26 | [上一章](07.04.01.md)|[继续阅读](07.04.03.md) 27 | -------------------------------------------------------------------------------- /ebook/07.04.03.md: -------------------------------------------------------------------------------- 1 | # 7.4.3 远程Hello和探测行为 2 | 3 | 在[WS-Discovery]中定义的本地发现模式并不适用于远程发现场景。如果该设备驻留在NAT/防火墙后面,类似图3或图5所示,如果设备不返回一个公共网络地址,从DP发出的单播探测将不会自动连接到该设备。此外,如果该设备驻留在防火墙后面,与该设备匹配的单播探测包可能无法回到DP。该规范定义了一个稍微不同的通信模式的远程发现来解决这个问题。 4 | 5 | 当一个设备配置为远程Hello时,除了当设备加入一个网络或当它的元数据发生变化时需发送一个组播的Hello消息,还要发送远程Hello消息到它的home DP。此消息被当作一个Web Service的请求操作从设备发往DP,如[ONVIF DP WSDL]所定义的那样使用HTTP绑定。远程Hello应该在Hello消息中应包括范围列表。 6 | 7 | 一旦home DP接收到来自任何设备的一个Hello消息,它将通过一个Hello响应消息来响应确认设备通过Hello消息注册。 8 | 9 | 同样的,当设备准备离开网络前,它应该先发送一个Bye请求到远程DP。DP通过Bye响应消息来响应已通过Bye请求。 10 | 11 | DP Hello,Hello 响应,Bye和Bye响应作为一个DP服务来提供,请参阅[ONVIF DP WSDL]的WSDL定义部分。 12 | 13 | 使用这些扩展,发现消息可以到达所需的端点。 14 | 15 | ![图7:在a和a HomeDP之间的远程发现消息交换模型](images/7-4-3.png) 16 | 17 | [上一章](07.04.02.md)|[继续阅读](07.04.04.md) 18 | -------------------------------------------------------------------------------- /ebook/07.04.04.md: -------------------------------------------------------------------------------- 1 | # 7.4.4 客户端行为 2 | 3 | 在远程发现的情况下,客户端需要发送探测消息到home DP。然后,客户端需要进行配置,这样它就可直接连接到home DP。 4 | 5 | 当客户端配置为远程发现时,直接发送探测消息到它的home DP。使用HTTP绑定的(见[ONVIF DP WSDL]]探测消息作为一个Web Services的请求操作从客户端发送至DP。 6 | 7 | 一旦home DP接收到来自任何客户端的探测消息,它根据普通的WS-Discovery消息交换模型,通过相应的探测匹配消息来响应,参见图8的序列图。 8 | 9 | ![图8:客户端预配置home DP地址的消息序列](images/7-4-4.png) 10 | 11 | [上一章](07.04.03.md)|[继续阅读](07.04.05.md) 12 | -------------------------------------------------------------------------------- /ebook/07.04.05.md: -------------------------------------------------------------------------------- 1 | # 7.4.5 安全 2 | 3 | 1. 本地发现 4 | 5 | 安全性和可见性可以看作是相互矛盾的目标。当发现协议背后的主要思想是宣布服务的存在,是很难排除其他端点访问服务的通告。即使在同一个局域网,WS-Discovery不提供任何额外的访问服务(如果使用本规范中指定的其他安全机制);它只是宣布它们的存在。此外,本地发现只在组播可达的范围内工作。因此,WS-Discovery的主要安全影响是设备上的拒绝服务攻击的风险,或隐私方面的问题如果在网络中隐藏设备的存在很重要的话。后两个问题的风险很大程度上取决于设备的部署环境。为了减少这些威胁,本规范已经制定了两种不同的发现模式,参见7.2节。这总是为客户端在设备上关闭设备发现功能提供了可能性。在不可见模式下,设备将永远不会通过发送Hello消息或响应任何探测消息或解析请求来宣布它的存在。 6 | 7 | 2. 远程发现 8 | 9 | DP驻留在远程网络的情况下,在互联网上是很脆弱的。那么,应采取额外的安全措施,以保护DP防止攻击。远程Hello和探测和探测匹配消息,应通过HTTPS发送,定义参见7.4.3.这种传输不会阻止拒绝服务攻击,但如果使用客户端身份验证,它可以保护它免受非法设备注册。如果拒绝服务保护是一个重大的问题,需要采取其他的措施,这在当前规范讨论的范围之外。 10 | 11 | 在注册一个设备到DP的设备数据库之前,DP应该验证设备以确保它是一个“合法”的设备,以宣布它的存在,例如通过使用客户端证书。客户端证书配置在当前规范讨论的范围之外。 12 | 13 | 应通过HTTPS发送客户端的远程探测和探测匹配消息到DP。DP应该在响应探测请求之前先验证客户端有效性。这可以通过使用TLS客户端证书,或其他任何合适的客户端身份验证机制。 14 | 15 | [上一章](07.04.04.md)|[继续阅读](08.00.md) 16 | -------------------------------------------------------------------------------- /ebook/08.00.md: -------------------------------------------------------------------------------- 1 | # 设备管理 2 | 3 | 设备服务分为五个不同的类别:功能、网络、系统、I/O安全的命令。这组命令可以用来获取信息的设备性能和配置或设置设备配置。 4 | [ONVIF DM WSDL]指定符合ONVIF标准的设备应支持设备管理服务。一组基本操作所需的设备管理服务,其他的操作是推荐或可选支持。列出了详细规定下的命令描述。 5 | 6 | [上一节](07.04.05.md) | [继续阅读](08.01.md) -------------------------------------------------------------------------------- /ebook/08.01.01.md: -------------------------------------------------------------------------------- 1 | # 获取WSDL URL 2 | 3 | 有可能某个端点请求URL,可以用来检索完整的模式和WSDL定义的一个装置。命令给返回一个URL可以获取所有必要的产品特定的WSDL和模式定义的切入点。[ONVIF DM WSDL]指定符合ONVIF标准的设备应支持设备管理服务。一组基本操作所需的设备管理服务,其他的操作是推荐或可选支持。列出了详细规定下的命令描述。 4 | 5 | ## 表9:获取WSDL URL命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetWsdlUrlRequest|这是一个空的消息。 10 | GetWsdlUrlResponse|所请求的URL。
xs:anyURI WsdlUrl [1][1] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | [上一节](08.01.md) | [继续阅读](08.02.md) -------------------------------------------------------------------------------- /ebook/08.01.02.md: -------------------------------------------------------------------------------- 1 | # 交换能力 2 | 3 | 可以要求任何端点设备使用功能交换请求响应操作的能力。该设备应通过GetCapabilities命令显示其所有ONVIF兼容的功能。 4 | 5 | 功能列表包括引用的的地址(XADDR)在类中实现接口操作的服务。 6 | 7 | ## GetServices 8 | 9 | 返回一个集合的设备,服务和其现有能力。返回的功能响应消息是无类型允许未来添加服务,服务修改和服务功能。所有返回的服务功能应结构在所支持的设备由不同的命名空间。 10 | 11 | 一个设备要实现这个方法的实现GetServiceCapabilities ONVIF兼容的服务。为确保结构的GetServices响应功能,请参阅附件c .示例GetServices响应能力。 12 | 13 | ## 表10:获取服务命令 14 | 15 | 消息名称|描述 16 | ----|---- 17 | GetServicesRequest|这个消息包含一个请求的所有服务设备和可能为每个服务的功能。如果布尔IncludeCapability设置,那么响应应包括服务功能。
boolean IncludeCapability[1][1] 18 | GetServicesResponse|响应消息的功能包含所请求的信息。
tt:ServiceList [1][unbounded] 19 | 故障代码|描述 20 | |没有具体命令的故障。 21 | 22 | ## GetServiceCapabilities 23 | 24 | 该命令返回的设备服务功能。如果设备支持GetServices方法,该服务应实现此方法。 25 | 26 | ## 表11:GetServiceCapabilities命令 27 | 28 | 消息名称|描述 29 | ----|---- 30 | GetServiceCapabilitiesRequest|这是一个空的消息。 31 | GetServiceCapabilitiesResponse|响应消息的功能包含所请求的设备能力使用层次化XML功能结构。 32 | |tds:DeviceServiceCapabilities Capabilities [1][1] 33 | 故障代码|描述 34 | |没有具体命令的故障。 35 | 36 | ## 表12:在GetServiceCapabilities命令的功能 37 | 38 | 类别|功能|描述 39 | ----|----|---- 40 | Network|IPFilter|如果设备支持IP过滤控制使用的命令在第8.2.18,8.2.19节,8.2.20节和8.2.21节中的指示。 41 | |ZeroConfiguration|如果设备支持零配置,按照第8.2.16和8.2.17节中的命令指示。 42 | |IPVersion6|如果设备支持IP版本6。 43 | |DynDNS|如果设备支持动态DNS根据第8.2.9和8.2.8节的配置。 44 | |Dot11Configuration|如果设备支持IEEE802.11配置的8.2.22节指定。 45 | |HostnameFromDHCP|是否检索从DHCP主机支持的设备。 46 | |NTP|表示的最大数量的支持NTP服务器设备SetNTP命令的。 47 | |Dot1XConfigurations|表示设备所支持的最大数目的支持Dot1X配置,请参见8.4.7。 48 | |DHCPv6|表示支持IPv6的DHCP状态。 49 | System|DiscoveryResolve|如果设备解决请求的回应中所描述的第7.3.4节。 50 | |DiscoveryBye|如果设备发送再见消息,如在7.3.5节。 51 | |RemoteDiscovery|如果设备支持远程发现7.4节中指定的支持。 52 | |SystemBackup|设备是否支持系统备份和恢复中指定的第8.3.3和第8.3.5节。 53 | |FirmwareUpgrade|设备是否支持固件升级8.3.10节中指定的部分。 54 | |SystemLogging|设备是否支持系统日志检索8.3.11节中指定的部分。 55 | |HttpSystemBackup|设备是否支持使用HTTP GET和POST进行系统备份和恢复。 56 | |HttpFirmwareUpgrade|设备是否支持使用HTTP POST固件升级。 57 | |HTTPSystemLogging|设备是否支持使用HTTP GET检索系统日志,请参见8.3.2节。 58 | |HTTPSupportInformation|设备是否支持使用HTTP获取支持信息的检索,请参见8.3.2节。 59 | Security|TLS1.0|支持TLS 1.0。 60 | |TLS1.1|支持TLS 1.1。 61 | |TLS1.2|支持TLS 1.2。 62 | |OnboardKeyGeneration|如果设备支持板载密钥生成和创建自签名证书,如第8.4.8节中指定的指示。 63 | |AccessPolicyConfig|指示设备是否支持检索和装载设备的访问控制策略,根据第8.4.1和第8.4.2节。 64 | |DefaultAccessPolicy|如果设备支持的默认访问策略定义见5.12.1.1。 65 | |UsernameToken|如果设备支持ws - security UsernameToken身份验证中定义[ws UsernameToken]。 66 | |HttpDigest|如果设备支持HTTP摘要认证。 67 | |X.509Token|如果设备支持ws - security X.09令牌[WS-X.509Token]。 68 | |SAMLToken|如果设备支持ws - security SAML令牌[WS-SAMLToken]。 69 | |KerberosToken|如果设备支持ws - security Kerberos令牌[WS-KerberosToken]。 70 | |RELToken|如果设备支持ws - security REL令牌[WS-RELToken]。 71 | |Dot1X|如果设备支持IEEE802.1X基于端口的网络认证。 72 | |SupportedEAPMethod|列表的方法类型支持EAP。数字对应IANA[EAP-Registry]。 73 | |RemoteUserHandling|如果设备支持远程用户处理和相应的方法定义,根据8.4.21节和8.4.22节。 74 | 75 | ## GetCapabilities 76 | 77 | 这种方法提供了向后兼容的接口的基本功能。全套功能,请参阅GetServices的。 78 | 79 | 附件A介绍如何解释的指示能力。除了地址,这个功能只体现在本说明书中的可选功能。 80 | 81 | ## 表13:获取功能命令 82 | 83 | 消息名称|描述 84 | ----|---- 85 | GetCapabilitiesRequest|这条消息包含设备能力的要求。客户可以要求的所有功能,或只是一个特定的服务类别的能力。如果没有指定类别的设备将返回所有的功能。
tt:CapabilityCategory Category [0][unbounded] 86 | GetCapabilitiesResponse|响应消息的功能包含所请求的设备功能使用层次化XML功能结构。
tt:Capabilities Capabilities [1][1] 87 | 故障代码|描述 88 | env:Receiver
ter:ActionNotSupported
ter:NoSuchService|请求的WSDL服务类别是不支持的设备。 89 | 90 | 功能列表,请参阅附件A。 91 | 92 | [上一节](08.01.01.md) | [继续阅读](08.02.md) 93 | -------------------------------------------------------------------------------- /ebook/08.01.md: -------------------------------------------------------------------------------- 1 | # 功能 2 | 3 | [上一节](08.00.md) | [继续阅读](08.01.01.md) -------------------------------------------------------------------------------- /ebook/08.02.01.md: -------------------------------------------------------------------------------- 1 | # 获取主机名 2 | 3 | 该操作用于端点从设备获取主机名。该设备将返回它的主机名配置通过GetHostname命令。 4 | 5 | ## 表14:GetHostname的命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetHostnameRequest|这是一个空的消息。 10 | GetHostnameResponse|此消息包含以下内容:
* "FromDHCP":如果主机名是真正通过DHCP获得(true)。
* "Name":主机名。以防DHCP主机名经DHCP服务器获得。
xs:boolean FromDHCP [1][1]
xs:token Name [0][1] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | [上一节](08.02.md) | [继续阅读](08.02.02.md) -------------------------------------------------------------------------------- /ebook/08.02.02.md: -------------------------------------------------------------------------------- 1 | # 设置主机名 2 | 3 | 此操作的设备上设置主机名。应尽可能将设备设置为主机名配置通过SetHostname命令。注意:调用SetDNS的可能会导致在覆盖先前设置的主机名。 4 | 5 | 设备应当根据RFC1123第2.1节或者RFC952接受字符串格式化,其他字符串将被视为无效的字符串。 6 | 7 | 设备应尽量通过DHCP设置的HostnameFromDHCP能力,并提供一个空名称字符串名称检索。 8 | 9 | ## 表15:SetHostname命令 10 | 11 | 消息名称|描述 12 | ----|---- 13 | SetHostnameRequest |此消息包含以下内容:
* “Name”:主机名。如果名字是一个空字符串主机名应该从DHCP获取,否则应使用指定名称。
xs:token Name [1][1] 14 | SetHostnameResponse |这是一个空的消息。 15 | 故障代码|描述 16 | env:Receiver
ter:ActionNotSupported
ter:NoSuchService|主机设备不能接受请求。 17 | 18 | [上一节](08.02.01.md) | [继续阅读](08.02.03.md) -------------------------------------------------------------------------------- /ebook/08.02.03.md: -------------------------------------------------------------------------------- 1 | # 从DHCP设置主机名 2 | 3 | 此操作控制主机名称是否应当从DHCP获取。 4 | 5 | 设备应支持此命令,如果支持是通过HostnameFromDHCP功能。根据在设备上实现的变化可能只成在设备重启后生效。 6 | 7 | ## 表16:SetHostnameFromDHCP命令 8 | 9 | 消息名称|描述 10 | ----|---- 11 | SetHostnameFromDHCPRequest |此消息包含以下内容:
* “FromDHCP”: 真正的主机名应当通过DHCP取得(true)。
xs:boolean FromDHCP[1][1] 12 | SetHostnameFromDHCPResponse |更改主机名设置需要重新启动
xs:boolean RebootNeeded [1][1] 13 | 故障代码|描述 14 | |没有具体命令的故障。 15 | 16 | [上一节](08.02.02.md) | [继续阅读](08.02.04.md) -------------------------------------------------------------------------------- /ebook/08.02.04.md: -------------------------------------------------------------------------------- 1 | # 获取DNS设置 2 | 3 | 此操作从设备得到的DNS设置。该设备将通过GetDNS命令返回其DNS配置。 4 | 5 | ## 表17:GetDNS命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetDNSRequest |这是一个空的消息。 10 | GetDNSResponse |此消息包含以下内容:
* “FromDHCP”:如果通过DHCP获得的DNS服务器(true)。
* “SearchDomain”:如果域(s)来搜索不是完全限定的主机名。
* “DNSFromDHCP”: 通过DHCP获得的情况下FromDHCP的DNS服务器列表等于true。这意味着该解决的地址在来自该领域DNSFromDHCP的DHCP的详细配置状态。
* “DNSManual”: 手动指定的DNS服务器列表。
xs:boolean FromDHCP [1][1]
xs:token SearchDomain [0][unbounded]
tt:IPAddress DNSFromDHCP [0][unbounded]
tt:IPAddress DNSManual [0][unbounded] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | [上一节](08.02.03.md) | [继续阅读](08.02.05.md) 15 | -------------------------------------------------------------------------------- /ebook/08.02.05.md: -------------------------------------------------------------------------------- 1 | # 设置DNS设置 2 | 3 | 此操作设置设备上的DNS设置。应尽可能通过SetDNS命令将设备设置DNS配置。 4 | 5 | ## 表18:设置DNS命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | SetDNSRequest |此消息包含以下内容:
* “FromDHCP”:如果DNS服务器是通过DHCP获得(true)。
* “SearchDomain”: 域(s)来搜索如果不是完全限定的主机名。
* “DNSManual”:手动指定的DNS服务器列表。
xs:boolean FromDHCP [1][1]
xs:token SearchDomain [0][unbounded]
tt:IPAddress DNSManual [0][unbounded] 10 | SetDNSResponse |这是一个空的消息。 11 | 故障代码|描述 12 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv6Address|所建议的IPv6地址是无效的。 13 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv4Address|所建议的IPv4地址是无效的。 14 | 15 | [上一节](08.02.04.md) | [继续阅读](08.02.06.md) 16 | -------------------------------------------------------------------------------- /ebook/08.02.06.md: -------------------------------------------------------------------------------- 1 | # 获取NTP设置 2 | 3 | 此操作从设备得到的NTP设置。如果设备支持NTP,它应是可能得到的NTP服务器设置通过GetNTP命令。 4 | 5 | ## 表19:GetNTP命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetNTPRequest |这是一个空的消息。 10 | GetNTPResponse |此消息包含以下内容:
* “FromDHCP”: 如果NTP服务器通过DHCP获得(true)。
* “NTPFromDHCP”: 通过DHCP获得的情况下FromDHCP的NTP服务器列表等于true。这意味着,NTP服务器地址字段NTPFromDHCP来自DHCP和描述了当前的配置状态。
* “NTPManual”:手动给出NTP服务器列表。
xs:boolean FromDHCP [1][1]
tt:NetworkHost NTPFromDHCP [0][unbounded]
tt:NetworkHost NTPManual [0][unbounded] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | [上一节](08.02.05.md) | [继续阅读](08.02.07.md) 15 | 16 | -------------------------------------------------------------------------------- /ebook/08.02.07.md: -------------------------------------------------------------------------------- 1 | # 设置NTP设置 2 | 3 | 此操作设置的NTP设置在设备上。如果通过NTP功能支持NTP信号,应能通过SetNTP命令设置NTP服务器设置。 4 | 5 | 设备应接受字符串格式根据RFC 1123 第2.1节,其他的字符串将被视为无效的字符串。 6 | 7 | NTP服务器列表的变更不影响时钟模式DateTimeType。使用SetSystemDateAndTime激活NTP操作。 8 | 9 | ## 表19:SetNTP命令 10 | 11 | 消息名称|描述 12 | ----|---- 13 | SetNTPRequest |此消息包含以下内容:
* “FromDHCP”:如果NTP服务器是通过DHCP获得(true)。
* “NTPManual”:手动给出定的NTP服务器列表时,他们没有通过DHCP获得。
xs:boolean FromDHCP [1][1]
tt:NetworkHost NTPManual [0][unbounded] 14 | SetNTPResponse |这是一个空的消息。 15 | 故障代码|描述 16 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv6Address|所建议的IPv6地址是无效的。 17 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv4Address|所建议的IPv4地址是无效的。 18 | env:Sender
ter:InvalidArgVal
ter:InvalidDnsName|所建议的NTP服务器名称是无效的。 19 | env:Sender
ter:InvalidArgVal
ter:TimeSyncedToNtp|NTP服务器当前需要的DateTimeType。 20 | 21 | [上一节](08.02.06.md) | [继续阅读](08.02.08.md) 22 | -------------------------------------------------------------------------------- /ebook/08.02.08.md: -------------------------------------------------------------------------------- 1 | # 获取动态DNS设置 2 | 3 | 此操作从设备获取的动态DNS设置。如果设备支持动态DNS指定的[RFC2136]和[RFC4702],应能通过GetDynamicDNS命令获得类型、名称和TTL。 4 | 5 | ## 表21:GetDynamicDNS命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetDynamicDNSRequest |这是一个空的消息。 10 | GetDynamicDNSResponse |此消息包含以下内容: 11 | | * “Type”:更新的类型。有三种可能的类型:设备没有更新的欲望(NOUPDATE),该设备想要DHCP服务器更新(ServerUpdates)和设备本身是否更新(ClientUpdates)。
* “Name”: 在设备的情况下做的DNS名称更新。
* “TTL”:存活时间。
tt:DynamicDNSType Type [1][1]
tt:DNSName Name [0][1]
xs:duration TTL [0][1] 12 | 故障代码|描述 13 | |没有具体命令的故障。 14 | 15 | [上一节](08.02.07.md) | [继续阅读](08.02.09.md) 16 | 17 | -------------------------------------------------------------------------------- /ebook/08.02.09.md: -------------------------------------------------------------------------------- 1 | # 设置动态DNS设置 2 | 3 | 在操作的设备上设置动态DNS设置。如果设备支持动态DNS指定的[RFC2136]和[RFC4702],它应是可以通过SetDynamicDNS命令设置类型,名称和TTL的。 4 | 5 | ## 表22:SetDynamicDNS命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | SetDynamicDNSRequest |此消息包含以下内容:
* “Type”:更新的类型。有三种可能的类型:设备没有更新的欲望(NOUPDATE),该设备想要DHCP服务器更新(ServerUpdates)和设备本身是否更新(ClientUpdates)。
* “Name”: 在设备的情况下做的DNS名称更新。
* “TTL”:存活时间。
tt:DynamicDNSType Type [1][1]
tt:DNSName Name [0][1]
xs:duration TTL [0][1] 10 | SetDynamicDNSResponse |这是一个空的消息。 11 | 12 | [上一节](08.02.08.md) | [继续阅读](08.02.10.md) -------------------------------------------------------------------------------- /ebook/08.02.10.md: -------------------------------------------------------------------------------- 1 | # 获取网络接口配置 2 | 3 | 从此操作的设备得到一个网络接口配置。该设备应当通过GetNetworkInterfaces NetworkInterface命令返回支持网络接口配置设置所定义的类型。 4 | 5 | ## 表23:GetNetworkInterfaces命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetNetworkInterfacesRequest |这是一个空的消息。 10 | GetNetworkInterfacesResponse |这个消息包含设备网络接口的数组。
tt:NetworkInterface NetworkInterfaces [0][unbounded] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | [上一节](08.02.09.md) | [继续阅读](08.02.11.md) -------------------------------------------------------------------------------- /ebook/08.02.11.md: -------------------------------------------------------------------------------- 1 | # 设置网络接口配置 2 | 3 | 操作设备上的网络接口配置设置。设备应通过SetNetworkInterfaces命令支持网络支持的网络接口的配置。 4 | 5 | 如果一个设备响应的RebootNeeded设置为false,该设备可以通过新的IP地址达到不进行进一步操作。客户端应该知道,设备可能很短的一段时间不响应,直到信号可用性在新地址通过发现hello消息,见7.3.2。 6 | 7 | 如果设备响应与RebootNeeded设置为true,将进一步根据其以前的IP地址。通过SystemReboot命令重新启动,该设置才会被激活。 8 | 9 | ## 表24:SetNetworkInterfaces命令 10 | 11 | 消息名称|描述 12 | ----|---- 13 | SetNetworkInterfacesRequest |此消息包含以下内容:
* “InterfaceToken”:令牌网络接口的操作。
“NetworkInterface”:网络接口配置。
tt:ReferenceToken InterfaceToken [1][1]
tt:NetworkInterfaceSetConfiguration NetworkInterface [1][1] 14 | SetNetworkInterfacesResponse |此消息包含以下内容:
* “RebootNeeded":表明如果改变网络设置问题,需要重启。
xs:boolean RebootNeeded [1][1] 15 | 故障代码|描述 16 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv6Address|所建议的IPv6地址是无效的。 17 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv4Address|所建议的IPv4地址是无效的。 18 | env:Sender
ter:InvalidArgVal
ter:InvalidNetworkInterface|提供的网络接口令牌不存在。 19 | env:Sender
ter:InvalidArgVal
ter:InvalidMtuValue|MTU值是无效的。 20 | env:Sender
ter:InvalidArgVal
ter:InvalidInterfaceSpeed|不支持建议的速度。 21 | env:Sender
ter:InvalidArgVal
ter:InvalidInterfaceType|不支持建议的网络接口类型。 22 | env:Receiver
ter:ActionNotSupported
ter:InvalidDot11|不支持IEEE802.11配置。 23 | env:Sender
ter:InvalidArgVal
ter:InvalidSecurityMode|不支持选定的安全模式。 24 | env:Sender
ter:InvalidArgVal
ter:InvalidStationMode|不支持选定的电台模式。 25 | env:Sender
ter:InvalidArgVal
ter:MissingDot11|安全配置中缺少IEEE 802.11的值。 26 | env:Sender
ter:InvalidArgVal
ter:MissingPSK|安全配置中缺少PSK值。 27 | env:Sender
ter:InvalidArgVal
ter:MissingDot1X|安全配置中缺失或没有IEEE802.1X的值。 28 | env:Sender
ter:InvalidArgVal
ter:IncompatibleDot1X|安全配置中IEEE802.1X值的不兼容的网络接口。 29 | env:Receiver
ter:ActionNotSupported
ter:InvalidDHCPv6|不支持请求的状态的DHCPv6模式。 30 | 31 | 32 | [上一节](08.02.10.md) | [继续阅读](08.02.12.md) -------------------------------------------------------------------------------- /ebook/08.02.12.md: -------------------------------------------------------------------------------- 1 | # 获取网络协议 2 | 3 | 此操作从设备获取所定义的网络协议。该设备应支持GetNetworkProtocols命令返回配置网络协议。 4 | 5 | ## 表25:GetNetworkProtocols命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetNetworkProtocolsRequest |这是一个空的消息。 10 | GetNetworkProtocolsResponse|这消息返回的数组定义协议支持的设备。有三个协议定义、HTTP、HTTPS和RTSP。以下参数可以检索每个协议:
* 端口
* 启用/禁用
tt:NetworkProtocol NetworkProtocols [0][unbounded] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | 15 | [上一节](08.02.11.md) | [继续阅读](08.02.13.md) 16 | 17 | -------------------------------------------------------------------------------- /ebook/08.02.13.md: -------------------------------------------------------------------------------- 1 | # 设置网络协议 2 | 3 | 从操作配置的设备上定义网络协议。设备应支持通过SetNetworkProtocols命令所定义的网络协议的配置。 4 | 5 | ## 表26:SetNetworkProtocols命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | SetNetworkProtocolsRequest |此消息配置一个或多个定义网络设备所支持的协议。目前有三种定义的协议,HTTP,HTTPS和RTSP。以下参数可以被设置为每个协议:
* 端口
* 启用/禁用
tt:NetworkProtocol NetworkProtocols [1][unbounded] 10 | SetNetworkProtocolsResponse |这是一个空的消息。 11 | 故障代码|描述 12 | env:Sender
ter:InvalidArgVal
ter:ServiceNotSupported |所提供的网络服务是不支持的。 13 | env:Sender
ter:InvalidArgVal
ter:PortAlreadyInUse |选定的端口已经被使用。 14 | env:Receiver
ter:ActionNotSupported
ter:EnablingTlsFailed |该设备不支持TLS或TLS没有适当的配置。 15 | 16 | [上一节](08.02.12.md) | [继续阅读](08.02.14.md) -------------------------------------------------------------------------------- /ebook/08.02.14.md: -------------------------------------------------------------------------------- 1 | # 获取默认网关 2 | 3 | 这个操作会从设备默认网关设置。该设备应支持GetNetworkDefaultGateway命令返回配置默认网关地址。 4 | 5 | ## 表27:GetNetworkDefaultGateway命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetNetworkDefaultGatewayRequest |这是一个空的消息。 10 | GetNetworkDefaultGatewayResponse |此消息包含以下内容:
* IPv4Address”:默认IPv4网关地址
* IPv6Address”:默认IPv6网关地址
tt:IPv4Address IPv4Address [0][unbounded]
tt:IPv6Address IPv6Address [0][unbounded] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | 15 | [上一节](08.02.13.md) | [继续阅读](08.02.15.md) -------------------------------------------------------------------------------- /ebook/08.02.15.md: -------------------------------------------------------------------------------- 1 | # 设置默认网关 2 | 3 | 这个操作在设备上设置默认网关设置。该设备应当通过SetNetworkDefaultGateway命令支持配置默认网关。 4 | 5 | ## 表28:SetNetworkDefaultGateway命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | SetNetworkDefaultGatewayRequest |此消息包含以下内容:
* IPv4Address”:默认IPv4网关地址
* IPv6Address”:默认IPv6网关地址
tt:IPv4Address IPv4Address [0][unbounded]
tt:IPv6Address IPv6Address [0][unbounded] 10 | SetNetworkDefaultGatewayResponse |这是一个空的消息。 11 | 故障代码|描述 12 | env:Sender
ter:InvalidArgVal
ter:InvalidGatewayAddress |所提供的网关地址是无效的。 13 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv4Address |所建议的IPv4地址是无效的。 14 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv6Address |所建议的IPv6地址是无效的。 15 | 16 | 17 | [上一节](08.02.14.md) | [继续阅读](08.02.16.md) -------------------------------------------------------------------------------- /ebook/08.02.16.md: -------------------------------------------------------------------------------- 1 | # 获取零配置 2 | 3 | 此操作从设备获取的零配置。如果设备支持动态IP配置根据[RFC3927],它应通过GetZeroConfiguration命令支持IPv4的零配置的地址和状态回报 4 | 5 | ## 表29:GetZeroConfiguration命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetZeroConfigurationRequest |这是一个空的消息。 10 | GetZeroConfigurationResponse |此消息包含以下内容:
* “InterfaceToken”: 令牌网络接口
* “Enabled”: 零配置是否已启用
* “Addresses”: 零配置的IPv4地址
tt:ReferenceToken InterfaceToken [1][1]
xs:boolean Enabled [1][1]
tt:IPv4Addresses Address [0][unbounded] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | 15 | [上一节](08.02.15.md) | [继续阅读](08.02.17.md) 16 | -------------------------------------------------------------------------------- /ebook/08.02.17.md: -------------------------------------------------------------------------------- 1 | # 设置零配置 2 | 3 | 此操作设置在设备上的零配置。如果设备支持动态IP配置时,应根据[RFC3927]通过SetZeroConfiguration命令支持配置IPv4的零配置地址和状态。 4 | 5 | ## 表30:SetZeroConfiguration命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | SetZeroConfigurationRequest |此消息包含以下内容:
* “InterfaceToken”: 网络接口的令牌上操作。
* “Enabled”: 零配置是否已启用。
tt:ReferenceToken InterfaceToken [1][1]
xs:boolean Enabled [1][1] 10 | SetZeroConfigurationResponse |这是一个空的消息。 11 | 故障代码|描述 12 | env:Sender
ter:InvalidArgVal
ter:InvalidNetworkInterface |提供的网络接口令牌不存在 13 | 14 | 15 | [上一节](08.02.16.md) | [继续阅读](08.02.18.md) -------------------------------------------------------------------------------- /ebook/08.02.18.md: -------------------------------------------------------------------------------- 1 | # 获得IP地址过滤器 2 | 3 | 此操作从设备获取的IP地址的过滤器设置。如果设备支持基于IP过滤规则(拒绝或接受的范围内的IP地址)的设备访问控制,设备应支持命令GetIPAddressFilter。 4 | 5 | ## 表31:GetIPAddressFilter命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetIPAddressFilterRequest |这是一个空的消息。 10 | GetIPAddressFilterResponse |此消息包含以下内容:
* “Type”: 过滤器的集应拒绝或允许访问。
* “IPv4Address”:过滤的IPv4地址
* “IPv6Address”:过滤的IPv6地址
tt:IPAddressFilterType Type [1][1]
tt:PrefixedIPv4Address IPv4Address [0][unbounded]
tt:PrefixedIPv6Address IPv4Address [0][unbounded] 11 | 故障代码|描述 12 | |没有具体命令的故障。 13 | 14 | [上一节](08.02.17.md) | [继续阅读](08.02.19.md) 15 | -------------------------------------------------------------------------------- /ebook/08.02.19.md: -------------------------------------------------------------------------------- 1 | # 设置IP地址过滤器 2 | 3 | 此操作在设备上设置的IP地址的过滤器设置。如果设备支持基于IP过滤规则(拒绝或接受的范围内的IP地址)的设备访问控制,设备应支持配置IP过滤规则通过SetIPAddressFilter命令的。 4 | 5 | ## 表32:SetIPAddressFilter命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | SetIPAddressFilterRequest |此消息包含以下内容:
* “Type”: 过滤器的集应拒绝或允许访问。
* “IPv4Address”:过滤的IPv4地址
* “IPv6Address”:过滤的IPv6地址
tt:IPAddressFilterType Type [1][1]
tt:PrefixedIPv4Address IPv4Address [0][unbounded]
tt:PrefixedIPv6Address IPv6Address [0][unbounded] 10 | SetIPAddressFilterResponse |这是一个空的消息。 11 | 故障代码|描述 12 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv6Address|所建议的IPv6地址是无效的。 13 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv4Address|所建议的IPv4地址是无效的。 14 | 15 | [上一节](08.02.18.md) | [继续阅读](08.02.20.md) -------------------------------------------------------------------------------- /ebook/08.02.20.md: -------------------------------------------------------------------------------- 1 | # 添加IP地址过滤 2 | 3 | 此操作添加一个IP地址过滤到设备。如果设备支持基于IP过滤规则(拒绝或接受的范围内的IP地址)的设备访问控制,设备应支持IP地址过滤通过AddIPAddressFilter命令添加。 4 | 5 | 设备的类型字段的值将被忽略。使用SetIPAddressFilter设置类型。 6 | 7 | ## 表33:AddIPAddressFilter命令 8 | 9 | 消息名称|描述 10 | ----|---- 11 | AddIPAddressFilterRequest |此消息包含以下内容:
* “Type”: 过滤器的集应拒绝或允许访问。
* “IPv4Address”:过滤的IPv4地址
* “IPv6Address”:过滤的IPv6地址
tt:IPAddressFilterType Type [1][1]
tt:PrefixedIPv4Address IPv4Address [0][unbounded]
tt:PrefixedIPv6Address IPv6Address [0][unbounded] 12 | AddIPAddressFilterResponse |这是一个空的消息。 13 | 故障代码|描述 14 | env:Sender
ter:InvalidArgVal
ter:IPFilterListIsFull |它不可能添加更多的IP过滤因为IP过滤列表是满的。 15 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv6Address |所建议的IPv6地址是无效的。 16 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv4Address |所建议的IPv4地址是无效的。 17 | 18 | [上一节](08.02.19.md) | [继续阅读](08.02.21.md) -------------------------------------------------------------------------------- /ebook/08.02.21.md: -------------------------------------------------------------------------------- 1 | # 删除IP地址过滤 2 | 3 | 此操作将从设备删除IP地址过滤。如果设备支持基于IP过滤规则(拒绝或接受的范围内的IP地址)的设备访问控制,设备应支持IP地址过滤通过RemoveIPAddressFilter命令删除。 4 | 5 | 设备的类型字段的值将被忽略。 6 | 7 | ## 表34:RemoveIPAddressFilter命令 8 | 9 | 消息名称|描述 10 | ----|---- 11 | RemoveIPAddressFilterRequest |此消息包含以下内容:
* “Type”: 在这个命令这个字段的值被忽略。
* “IPv4Address”:过滤的IPv4地址
* “IPv6Address”:过滤的IPv6地址
tt:IPAddressFilterType Type [1][1]
tt:PrefixedIPv4Address IPv4Address [0][unbounded]
tt:PrefixedIPv6Address IPv6Address [0][unbounded] 12 | RemoveIPAddressFilterResponse |这是一个空的消息。 13 | 故障代码|描述 14 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv6Address |所建议的IPv6地址是无效的。 15 | env:Sender
ter:InvalidArgVal
ter:InvalidIPv4Address |所建议的IPv4地址是无效的。 16 | env:Sender
ter:InvalidArgVal
ter:NoIPv4Address |要删除的IPv4地址不存在。 17 | env:Sender
ter:InvalidArgVal
ter:NoIPv6Address |要删除的IPv6地址不存在。 18 | 19 | [上一节](08.02.20.md) | [继续阅读](08.02.22.md) -------------------------------------------------------------------------------- /ebook/08.02.22.md: -------------------------------------------------------------------------------- 1 | # IEEE 802.11配置 2 | 3 | 在本节和小节的要求仅适用于IEEE 802.11支持通过其网络Dot11Configuration功能的设备的信号。在本节和小节的术语“设备”被用于指示支持IEEE802.11的设备。 4 | 5 | 设备应支持IEEE802.11的配置,并须作为响应向GetNetworkInterfaces的方法返回ieee80211(71)为802.11接口(S)的IANA-IfTypes。 6 | 7 | 设备不得返回任何链接元素在GetNetworkInterfaces回复和应当忽略任何链接元素在SetNetworkInterfaces请求。 8 | 9 | 该设备应该支持,每个IEEE 802.11网络接口可以有多个替代IEEE 802.11配置连接到它。 10 | 11 | IEEE 802.11支持通过配置可选的IEEE802.11配置元素中获取和设置网络配置元素。下面的信息处理: 12 | 13 | * SSID 14 | * 站模式 15 | * 多个无线网络配置 16 | * 安全配置 17 | 18 | 以下操作是用来帮助管理无线配置: 19 | 20 | * IEEE802.11功能 21 | * IEEE802.11状态 22 | * 扫描IEEE802.11网络 23 | 24 | ## SSID 25 | 26 | 该设备应支持的SSID的配置。 27 | 28 | ## 站模式 29 | 30 | 该设备应支持的基础设施站模式。 31 | 32 | 该设备可能支持ad-hoc网络站模式。所需的ad-hoc网络站模式,包括手动配置的通道数量,超出了本规范的范围,但允许设备,支持自组网站模式,规范允许选择(和报告)这种模式。 33 | 34 | ## 多个无线网络配置 35 | 36 | 每个IEEE802.11配置应确定一个别名(标识符)。别名应是唯一的一个网络接口配置。客户应在SetNetworkInterfaces请求提供别名。如果客户端要更新现有的无线配置,应使用相同的别名。无线配置,包括别名,应只存在而这是一个网络接口配置一部分。 37 | 38 | 对于可以使用设备多个替代IEEE802.11配置以能够可选优先级值的优先级之间的,较高的值表示较高的优先级。如果有多个无线配置具有相同的优先级这些配置之间的顺序是不确定的。 39 | 40 | 由设备实际使用的算法使IEEE 802.11网络的优先级列表的IEEE 802.11配置是本规范的范围之外。 41 | 42 | ## 安全配置 43 | 44 | 安全配置包含选定的安全模式,该模式下所需配置。支持以下安全模式: 45 | 46 | * None 47 | * PSK (Pre Shared Key) (WPA- and WPA2-Personal) 48 | * IEEE 802.1X-2004 (WPA- and WPA2-Enterpise) 49 | 50 | 配置WEP安全模式不在本文的讨论范围内,但允许设备形态支持WEP安全模式这个规范允许选择(和报告)这种模式。 51 | 52 | 对于数据的保密性和完整性的设备,应当按照与[2007IEEE802.11-]规范,支持CCMP算法,该设备可能支持TKIP算法。 53 | 54 | 该算法既可以手动(CCMP,TKIP)或自动(任何)选择。在手动模式选择相同的算法应用于成对和分组密码。能够支持其他算法的“扩展”的值是可用的。 55 | 56 | 该设备应同时支持手动和自动模式选择。 57 | 58 | ## None模式 59 | 60 | 该设备应支持“None”安全模式。 61 | 62 | ## PSK模式 63 | 64 | 设备应支持PSK安全模式。 65 | 66 | 为了尽量减少风险损害PSK装置不能传输任何PSK到客户端,并且不返回到调用操作的响应getnetworkinterfaces PSK。 67 | 68 | 增加无线配置与PSK安全模式下列规则适用: 69 | 70 | * 客户端应包括PSK值在SetNetworkInterfaces请求 71 | * 该设备应提供了PSK值检查,如果没有这种装置应该返回一个错误。 72 | 73 | 用于更新无线配置与PSK安全模式下列规则适用: 74 | 75 | * 如果客户想保留的PSK值不应包括在setnetworkinterfaces PSK值请求 76 | * 设备接收一个SetNetworkInterfaces请求没有PSK值应保留其PSK值 77 | 78 | [IEEE 802.11-2007]标准的PSK应分配给STA一些波段的方法。ONVIF标准的安全策略应确保PSK充分保护。 79 | 80 | ## IEEE 802.1 x - 2004模式 81 | 82 | 设备应支持的IEEE 802.1X安全模式。对于更详细的规定关于IEEE 802.1X-2004的安全模式请[IEEE 802.1X配置] 83 | 84 | ## 获取Dot11的功能 85 | 86 | 此操作返回的IEEE802.11的功能,见表36。该设备应支持此操作。 87 | 88 | ## 表35:GetDot11Capabilities 89 | 90 | 消息名称|描述 91 | ----|---- 92 | GetDot11CapabilitiesRequest |这是一个空的消息。 93 | GetDot11CapabilitesResponse |tt:Dot11Capabilities Capabilities [1][1] 94 | 故障代码|描述 95 | env:Receiver
ter:ActionNotSupported
ter:InvalidDot11 |IEEE 802.11配置不支持。 96 | 97 | ## 表36:获取IEEE802.11的功能 98 | 99 | 功能|描述 100 | ----|---- 101 | TKIP |指示如果设备支持TKIP算法。 102 | ScanAvailableNetworks |指示设备支持的ScanAvailableIEEE802.11Networks操作。 103 | MultipleConfiguration |指示设备是否支持多个可选的IEEE802.11的配置。 104 | AdHocStationMode |指示如果设备支持临时站模式。 105 | WEP |指示设备是否支持WEP安全模式。 106 | 107 | ## 获取IEEE802.11状态 108 | 109 | 该操作返回一个无线网络接口的状态。这种设备应该支持这个命令。可以返回以下情况: 110 | 111 | * SSID (必须) 112 | * BSSID (应该) 113 | * Pair cipher (应该) 114 | * Group cipher (应该) 115 | * Signal strength (应该) 116 | * Alias of active wireless configuration (必须) 117 | 118 | ## 表37:GetDot11Status 119 | 120 | 消息名称|描述 121 | ----|---- 122 | GetDot11StatusRequest |tt:ReferenceToken InterfaceToken [1][1] 123 | GetDot11StatusResponse |tt:Dot11Status Status [1][1] 124 | 故障代码|描述 125 | env:Receiver
ter:ActionNotSupported
ter:InvalidDot11 |IEEE 802.11配置不支持。 126 | env:Sender
ter:InvalidArgVal
ter:NotDot11 |该接口不是一个IEEE 802.11接口。 127 | env:Sender
ter:InvalidArgVal
ter:InvalidNetworkInterface |提供的网络接口令牌不存在。 128 | env:Receiver
ter:Action
ter:NotConnectedDot11 |IEEE802.11网络没有连接。 129 | 130 | ## 扫描可用的IEEE802.11网络 131 | 132 | 此操作返回在范围内的设备的无线网络列表。设备应该支持此操作。每个网络可以返回以下状态: 133 | 134 | * SSID (必须) 135 | * BSSID (应该) 136 | * Authentication and key management suite(s) (应该) 137 | * Pair cipher(s) (应该) 138 | * Group cipher(s) (应该) 139 | * Signal strength(s) (应该) 140 | 141 | ## 表38:ScanAvailableDot11Networks 142 | 143 | 消息名称|描述 144 | ----|---- 145 | ScanAvailableDot11NetworksRequest |tt:ReferenceToken InterfaceToken [1][1] 146 | ScanAvailableDot11NetworksResponse |tt:Dot11AvailableNetworks Networks [0][unbounded] 147 | 故障代码|描述 148 | env:Receiver
ter:ActionNotSupported
ter:InvalidDot11 |IEEE 802.11配置不支持。 149 | env:Sender
ter:InvalidArgVal
ter:NotDot11 |该接口不是一个IEEE 802.11接口。 150 | env:Sender
ter:InvalidArgVal
ter:InvalidNetworkInterface |提供的网络接口令牌不存在。 151 | env:Receiver
ter:ActionNotSupported
ter:NotScanAvailable |ScanAvailableDot11Networks不支持。 152 | 153 | [上一节](08.02.21.md) | [继续阅读](08.03.md) 154 | 155 | -------------------------------------------------------------------------------- /ebook/08.02.md: -------------------------------------------------------------------------------- 1 | # 网络 2 | 3 | [上一节](08.01.02.md) | [继续阅读](08.02.01.md) -------------------------------------------------------------------------------- /ebook/08.03.01.md: -------------------------------------------------------------------------------- 1 | ##系统 2 | 3 | ###设备信息 4 | 5 | 此操作用于获取设备的信息,比如设备的制造商,型号和固件版本。该设备应该支持通过GetDeviceInformation命令返回设备信息。 6 | 7 | ####表39:GetDeviceInformation命令 8 | 消息名|描述 9 | ----|---- 10 | GetDeviceInformationRequest|这是一个空消息 11 | GetDeviceInformationResponse|响应获取设备信息的消息,返回如下设备信息:
xs:string **Manufacturer** [1][1]
xs:string **Model** [1][1]
xs:string **FirmwareVersion** [1][1]
xs:string **SerialNumber** [1][1]
xs:string **HardwareId** [1][1] 12 | 错误代码|描述 13 | |想不到相关的命令! 14 | 15 | [上一章](08.02.22.md)|[继续阅读](08.03.02.md) 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ebook/08.03.02.md: -------------------------------------------------------------------------------- 1 | ###获取系统UIR 2 | 3 | 次操作用来检索URI是通过HTTP方式从哪个系统下载下来的。URIs可能会返回以下系统信息: 4 | 5 | 系统日志。多系统的日志可能通过不同的类型返回。日志的精确格式不在此规范中说明。 6 | 7 | 支持信息。包括从设备取得的任何诊断信息。诊断信息的精确格式不在此规范中说明。 8 | 9 | 系统备份。接收的文件是一个备份文件,文件以后可以被用来恢复当前的设备配置。配置备份文件的格式不在此规范讲解。 10 | 11 | 如果该设备允许检索系统日志,支持信息或系统备份数据,它们应该可通过HTTP GET方式来获取。如果想这样做的话,该设备应当支持GetSystemUris命令。 12 | 13 | ###表40:GetSystemUris命令 14 | 消息名|描述 15 | ----|---- 16 | GetSystemUrisRequest|这是一个空消息 17 | GetSystemUrisResponse|此消息中包含可下载的各种系统信息组件的URI。
tt:SystemLogUriList **SystemLogUris [0][1]**
xs:anyURI **SupportInfoUri [0][1]**
xs:anyURI **SystemBackupUri [0][1]** 18 | 错误代码|描述 19 | |没有找到相关命令 20 | 21 | [上一章](08.03.01.md)|[继续阅读](08.03.03.md) 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ebook/08.03.03.md: -------------------------------------------------------------------------------- 1 | ###备份 2 | 3 | 此操作用来检索设备的系统配置文件。设备必须支持通过GetSystemBackup命令返回备份配置文件。The backup is returned with reference to a name and mime-type together with binary data。系统备份的精确格式在此规范那中没有说明。 4 | 5 | 备份的配置文件通过MTOM来传输。 6 | 7 | ###表41:GetSystemBackup命令 8 | 消息名|描述 9 | ----|---- 10 | GetSystemUrisRequest|这是一个空消息 11 | GetSystemBackupResponse|响应获取系统备份的消息将返回包含系统备份的配置文件:
tt:BackupFile **BackupFiles** [1][unbounded] 12 | 错误代码|描述 13 | |没有找到相关命令 14 | 15 | 16 | [上一章](08.03.03.md)|[继续阅读](08.03.04.md) 17 | -------------------------------------------------------------------------------- /ebook/08.03.04.md: -------------------------------------------------------------------------------- 1 | ###恢复 2 | 3 | 此操作恢复先前从设备检索到的系统备份的配置文件。该设备必须支持恢复备份配置文件的RestoreSystem的命令。备份配置文件的精确格式没有在此规范里说明。如果设备支持该命令,那么它将接受通过GetSystemBackup命令返回的备份文件。 4 | 5 | 备份的配置文件通过MTOM方式传输。 6 | 7 | ###表42:RestoreSystem命令 8 | 消息名|描述 9 | ----|---- 10 | RestoreSystemRequest|这个消息包含系统备份文件
tt:BackupFile **BackupFiles** [1][unbounded] 11 | RestoreSystemResponse|这是一个空消息 12 | 错误代码|描述 13 | env:Sender
ter:InvalidArgVal
ter:InvalidBackupFile|无效的备份文件 14 | 15 | 16 | [上一章](08.03.03.md)|[继续阅读](08.03.05.md) 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ebook/08.03.05.md: -------------------------------------------------------------------------------- 1 | ###启动系统恢复 2 | 3 | 此操作使用HTTP POST机制启动还原系统备份的配置数据。命令的响应包含一个上传的备份文件的HTTP URL路径。实际的恢复工作很快就被已经完成的HTTP POST操作所代替。设备应该支持通过StartSystemRestore命令来恢复数据。备份配置的精确格式不会在此规范中说明。 4 | 5 | HTTP下的系统还原会经过下面的步骤: 6 | 1. 客户端调用StartSystemRestore命令。 7 | 8 | 2. 设备服务响应上传的URI。 9 | 10 | 3. 客户端使用HTTP POST方式发送配置数据的上传URI文件。 11 | 12 | 4. 服务器应用上传的配置数据。如果有必要的话,重启设备。 13 | 14 | 如果因为上传文件无效而恢复失败,那么HTTP POST会响应“415 Unsupported Media Type”。如果由于设备错误而导致恢复失败,HTTP POST会回应“500 Internal Server Error”。 15 | 16 | HTTP POST请求的Content-Type头信息值应该为“application/octet-stream”。 17 | 18 | ###表43:StartSystemRestore命令 19 | 消息名|描述 20 | ----|---- 21 | StartSystemRestoreRequest|这是一个空消息 22 | StartSystemRestoreResponse|这个消息包含 * 会被上传的系统配置文件路径 * 可选的持续时间,表示在文件上传多久之内,设备无法使用。
xs:anyURI **UploadUri [1][1]**
xs:duration **ExpectedDownTime [0][1]** 23 | 错误代码|描述 24 | |没有找到相关命令 25 | 26 | 27 | [上一章](08.03.04.md)|[继续阅读](08.03.06.md) 28 | 29 | -------------------------------------------------------------------------------- /ebook/08.03.06.md: -------------------------------------------------------------------------------- 1 | ###获取系统日期和时间 2 | 3 | 该操作用来获取设备系统的日期和时间。设备应该支持通过GetSystemDateAndTime命令返回夏时令设置、手动设置的日期和时间(如果适用的话)或者通过NTP获取的时间(如果适用的话)。 4 | 5 | 为了保证向后兼容性,设备应该提供UTCDate时间信息,尽管它是可选的。 6 | 7 | 8 | ###表44:GetSystemDateAndTime命令 9 | 消息名|描述 10 | ----|---- 11 | GetSystemDateAndTime-Request|这是一个空消息 12 | GetSystemDateAndTime-Response|消息包含设备的系统时间和日期
“DateTimeType”: 如果系统时间和日期通过手动或者NTP设置的。
“DaylightSavings”: 夏时令开启或关闭
"TimeZone":在第8.3节POSIX 1003.1中定义的时区
“UTCDateTime”: UTC时间和日期
“LocalDateTime”: 设备的本地时间和日期
tt:SetDateTimeType **DateTimeType** [1][1]
xs:boolean **DayLightSavings** [1][1]
tt:TimeZone **TimeZone** [0][1]
tt:DateTime **UTCDateTime** [0][1]
tt:DateTime **LocalDateTime** [0][1] 13 | 错误代码|描述 14 | |没有找到相关命令 15 | 16 | 17 | [上一章](08.03.05.md)|[继续阅读](08.03.07.md) 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ebook/08.03.07.md: -------------------------------------------------------------------------------- 1 | ###设置系统日期和时间 2 | 3 | 这项操作用来设置设备系统的日期和时间。该设备必须支持通过SetSystemDateAndTime命令来配置夏时令设置、手动设置时间(如果适用的话)或者指定NTP设置时间(如果适用的话)。A device shall consider a Timezone which is not formed according to the rules of [IEEE 1003.1] section 8.3 as invalid. 4 | 5 | 如果系统时间和日期是手动设置的,那么客户端请求应包含UTCDateTime或者LocalDateTime信息。 6 | 7 | 夏时令的标识应该设置为true来激活任何DST设置时区的字符串。 8 | 9 | 10 | ###表45:SetSystemDateAndTime命令 11 | 消息名|描述 12 | ----|---- 13 | SetSystemDateAndTime-Request|消息包含设备的时间和日期信息
“DateTimeType”: 如果系统时间是手动设置的或者NTP设置的
“DaylightSavings”: 如果在时区里面已经定义,将自动调整夏时令
"TimeZone":在第8.3节POSIX 1003.1中定义的时区
“UTCDateTime”: UTC时间和日期。如果DateTimeType是NTP,UTCDateTime就没有作用。
tt:SetDateTimeType **DateTimeType** [1][1]
xs:boolean **DayLightSavings** [1][1]
tt:TimeZone **TimeZone** [0][1]
tt:DateTime **UTCDateTime** [0][1] 14 | SetSystemDateAndTime-Response|这是一个空消息 15 | 错误代码|描述 16 | env:Sender
ter:InvalidArgVal
ter:InvalidTimeZone|指定了无效的时区 17 | env:Sender
ter:InvalidArgVal
ter:InvalidDateTime|指定了无效的日期和时间 18 | env:Sender
ter:InvalidArgVal
ter:NtpServerUndefined|无法把DateTimeType切换到NTP,因为NTP服务器是无效的 19 | 20 | 21 | 22 | [上一章](08.03.06.md)|[继续阅读](08.03.08.md) 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /ebook/08.03.08.md: -------------------------------------------------------------------------------- 1 | ###出厂默认 2 | 3 | 此操作重载设备的参数到出厂默认值。该设备应该支持通过SetSystemFactoryDefault命令把软件和硬件恢复到默认设置。The meaning of soft factory default is device product-specific and vendor-specific. The effect of a soft factory default operation is not fully defined. However, it shall be guaranteed that after a soft reset the device is reachable on the same IP address as used before the reset. 4 | 这意味着基本的网络设置,如IP地址,子网网关或DHCP设置无法通过软件来重置。 5 | 6 | ###表46:SetSystemFactoryDefault命令 7 | 消息名|描述 8 | ----|---- 9 | SetSystemFactoryDefault-Request|此消息包含出厂默认执行的类型。
"Hard": 所有参数都设置为出厂默认值。
设备供应商的具体参数以外的所有参数都设置为出厂默认值
tt:FactoryDefaultType **FactoryDefault** [1][1] 10 | SetSystemFactoryDefault-Response|这是一个空消息 11 | 错误代码|描述 12 | |没有找到相关命令 13 | 14 | 15 | [上一章](08.03.07.md)|[继续阅读](08.03.09.md) 16 | 17 | 18 | -------------------------------------------------------------------------------- /ebook/08.03.09.md: -------------------------------------------------------------------------------- 1 | ###固件升级 2 | 3 | 次操作是用来升级设备的固件版本。在成功发送了升级响应后,设备会重启。设备应该支持通过UpgradeSystemFirmware命令来升级固件。固件数据的精确格式在此规范中没有说明。 4 | 5 | 固件通过MTOM[MTOM]来传输 6 | 7 | ###表47:UpgradeSystemFirmware命令 8 | 消息名|描述 9 | ----|---- 10 | UpgradeSystemFirmware-Request|此消息包含用来升级的固件。固件升级选择“soft”意味着所有参数保持它们的当前值。tt:AttachmentData **Firmware** [1][1] 11 | UpgradeSystemFirmware-Response|此消息包含一个“消息”字符串。让设备返回一个消息给客户端,例如:“升级成功,设备会在X秒后重启”
Xs:string **Message** [1][1] 12 | 错误代码|描述 13 | env:Sender
ter:InvalidArgs
ter:InvalidFirmware|固件是无效的,即不支持此设备 14 | env:Receiver
ter:Action
ter:FirmwareUpgrade-Failed|固件升级失败 15 | 16 | 17 | 18 | 19 | [上一章](08.03.08.md)|[继续阅读](08.03.10.md) 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ebook/08.03.10.md: -------------------------------------------------------------------------------- 1 | ###启动固件升级 2 | 此操作用来启动固件升级,使用HTTTP POST机制。命令的响应包含一个上传的升级文件的HTTP URL路径。实际的升级工作很快就被已经完成的HTTP POST操作所代替。设备应该支持通过StartFirmwareUpgrade命令来升级固件。固件数据的精确格式在此规范中没有说明。 3 | 4 | HTTP下的固件升级会经过下面的步骤: 5 | 6 | 1. 客户端调用startfirmwareupgrade命令 7 | 8 | 2. 设备服务响应上传的URI和可选的延迟值 9 | 10 | 3. 客户端等待服务端指定的延迟 11 | 12 | 4. 客户端使用HTTP POST方式发送固件镜像到上传服务端。 13 | 14 | 5. 服务器使用固件升级,然后重启 15 | 16 | 如果因为上传的文件无效而升级失败,那么HTTP POST会响应“415 Unsupported Media Type”。如果由于设备错误而导致升级失败,HTTP POST会回应“500 Internal Server Error”。 17 | 18 | HTTP POST请求的Content-Type头信息值应该为“application/octet-stream”。 19 | 20 | 21 | ###表48:StartFirmwareUpgrade命令 22 | 消息名|描述 23 | ----|---- 24 | StartFirmwareUpgrade-Request|这是一个空消息 25 | StartFirmwareUpgrade-Response|消息包含:
被上传固件文件的URL路径
可选的延迟时间;客户端须等待这个时间后再启动固件上传
一个持续时间,表示在文件上传固件后这个时间之内,设备无法使用。
xs:anyURI **UploadUri** [1][1]
xs:duration **UploadDelay** [0][1]
xs:duration **ExpectedDownTime** [0][1] 26 | 错误代码|描述 27 | |没有找到相关命令 28 | 29 | 30 | 31 | [上一章](08.03.09.md)|[继续阅读](08.03.11.md) 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /ebook/08.03.11.md: -------------------------------------------------------------------------------- 1 | ###获取系统日志 2 | 此操作用于获取单个设备的系统日志。设备应支持通过GetSystemLog命令检索系统日志信息。系统日志的精确格式没有在此规范中说明。 3 | 4 | 通过MTOM[MTOM]或字符串传输系统的日志信息。 5 | 6 | ###表49 GetSystemLog命令 7 | 消息名|描述 8 | ----|---- 9 | GetSystemLogRequest|此消息包含检索到的系统日志的类型。它定义了两种被支持的日志信息类型。
“System”: 系统日志
"Access":客户端访问日志
tt:SystemLogType **LogType** [1][1] 10 | GetSystemLogResponse|此消息包含请求的系统日志信息。设备可选择在附件中以二进制数据来返回系统日志,也可以以普通字符串。
tt:AttachmentData **Binary** [0][1]
xs:string **String** [0][1] 11 | 错误代码|描述 12 | env:Sender
ter:InvalidArgs
ter:AccesslogUnavailable|没有可用的访问日志 13 | env:Sender
ter:InvalidArgs
ter:SystemlogUnavailable|没有可用的系统日志 14 | 15 | 16 | 17 | 18 | [上一章](08.03.10.md)|[继续阅读](08.03.12.md) 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ebook/08.03.12.md: -------------------------------------------------------------------------------- 1 | ###获取支持信息 2 | 3 | 此操作用来从设备获取任意的诊断信息。该设备应该支持通过GetSystemSupportInformation命令检索诊断信息。诊断信息的精确格式不在规范中进行说明。 4 | 5 | 诊断信息作为一个附件或字符串通过MTOM[MTOM]方式来传输。 6 | 7 | ###表50:GetSystemSupportInformation命令 8 | 消息名|描述 9 | ----|---- 10 | GetSystemSupport-InformationRequest|这是一个空消息 11 | GetSystemSupport-Information Response|消息包含支持信息。设备可以选择二进制数据返回数据方式返回还是普通字符串返回信息。
tt:AttachmentData **BinaryFormat** [0][1]
xs:string **StringFormat** [0][1] 12 | 错误代码|描述 13 | env:Sender
ter:InvalidArgs
ter:SupportInformation-Unavailable|没有相关的支持信息 14 | 15 | 16 | 17 | 18 | [上一章](08.03.11.md)|[继续阅读](08.03.13.md) 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ebook/08.03.13.md: -------------------------------------------------------------------------------- 1 | ###重启 2 | 3 | 此操作是用来重启设备。设备接受到消息后马上重启。设备必须支持通过SystemReboot命令重启。 4 | 5 | ###表51:SystemReboot命令 6 | 消息名|描述 7 | ----|---- 8 | SystemReboot|这是一个空消息 9 | SystemRebootResponse|此消息包含一个消息字符串,设备响应一个消息给客户端,比如:“在x秒之后将重启”。
Xs:string **Message** [1][1] 10 | 错误代码|描述 11 | |没有相关的命令 12 | 13 | 14 | 15 | 16 | [上一章](08.03.12.md)|[继续阅读](08.03.14.md) 17 | 18 | 19 | -------------------------------------------------------------------------------- /ebook/08.03.14.md: -------------------------------------------------------------------------------- 1 | ###获取范围参数 2 | 3 | 此操作用来获取设备的范围参数。有两种类型的范围参数: 4 | 5 | * 固定的 6 | 7 | * 可配置的 8 | 9 | 10 | 固定范围参数不能改变通过设备管理界面来修改,它是设备固件配置的部分永久设备特征。在响应获取范围参数操作返回结果的范围列表内,已经指出范围的类型。可配置的范围参数可以被设置和添加操作,请参阅第8.3.14和8.3.15节。 该设备应支持通过GetScopes命令检索搜索范围参数, 由于一些范围参数是强制性的,客户端总是期望响应一个范围列表。 11 | 12 | 13 | ###表52:GetScopes命令 14 | 消息名|描述 15 | ----|---- 16 | GetScopesRequest|这是一个空消息 17 | GetScopesResponse|范围响应消息中包含一个列表定义设备范围的URI列表。另请参阅第7章的ONVIF范围定义。
tt:Scope: **Scopes** [1][unbounded] 18 | 错误代码|描述 19 | env:Receiver
ter:Action
ter:EmptyScope|范围列表是空的 20 | 21 | 22 | 23 | 24 | [上一章](08.03.13.md)|[继续阅读](08.03.15.md) 25 | -------------------------------------------------------------------------------- /ebook/08.03.15.md: -------------------------------------------------------------------------------- 1 | ###设置范围参数 2 | 3 | 此操作设置设备参数范围。范围参数用于设备发现匹配探针的信息,请参见第7章。 4 | 5 | 此操作将替换所有现有配置的范围参数(不固定参数)。如果想避免替换,应该使用范围add命令来代替。设备应该支持通过SetScopes命令来设置发现范围参数的配置。 6 | 7 | ###表53:SetScopes命令 8 | 消息名|描述 9 | ----|---- 10 | SetScopesRequest|设置的范围包含了一系列的URI定义的设备范围。请参考第七章。
Xs:anyURI: **Scopes** [1][unbounded] 11 | SetScopesResponse|这是一个空消息 12 | 错误代码|描述 13 | env:Sender
ter:OperationProhibited
ter:ScopeOverwrite|范围参数覆盖固定的设备范围设置,命令被拒绝。 14 | env:Receiver
ter:Action
ter:TooManyScopes|要求的范围超出范围的支持数量 15 | 16 | 17 | 18 | 19 | [上一章](08.03.14.md)|[继续阅读](08.03.16.md) 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ebook/08.03.16.md: -------------------------------------------------------------------------------- 1 | ###添加范围参数 2 | 3 | 此操作用来向设备添加新的范围参数配置。范围参数用于设备发现匹配探针的信息,请参见第7章。该设备应支持通过AddScopes命令来添加发现范围参数。 4 | 5 | 6 | ###表54:AddScopes命令 7 | 消息名|描述 8 | ----|---- 9 | AddScopesRequest|添加范围包含一个被添加到现有配置的范围列表的URI列表。请参见第7章。
xs:anyURI:**ScopeItem** [1][unbounded] 10 | AddScopesResponse|这是一个空消息 11 | 错误代码|描述 12 | env:Receiver
ter:Action
ter:TooManyScopes|请求的范围超出范围的支持列表。 13 | 14 | 15 | 16 | 17 | 18 | [上一章](08.03.15.md)|[继续阅读](08.03.17.md) 19 | 20 | 21 | -------------------------------------------------------------------------------- /ebook/08.03.17.md: -------------------------------------------------------------------------------- 1 | ### 移除范围参数 2 | 3 | 此操作将从设备中删除范围配置的范围参数。范围参数用于设备发现匹配探针的信息,请参见第7章。设备应该支持通过RemoveScopes命令来删除发现范围参数。 4 | 5 | 需要注意的是响应消息总是将匹配请求或者返回错误消息。响应的使用出于这个原因已弃用。 6 | 7 | ### 表55:RemoveScopes命令 8 | 消息名|描述 9 | ----|---- 10 | RemoveScopesRequest|删除范围包含从设备范围应删除的URI列表。
xs:anyURI: **ScopeItem** [1][unbounded] 11 | RemoveScopesResponse|范围响应消息包含从设备范围中已删除的URI列表。
xs:anyURI: ScopeItem [0][unbounded] 12 | 错误代码|描述 13 | env:Sender
ter:OperationProhibited
ter:FixedScope|试图删除固定范围参数,命令被拒绝。 14 | env:Sender
ter:InvalidArgVal
ter:NoScope|尝试删除不存在的范围。 15 | 16 | 17 | 18 | 19 | 20 | [上一章](08.03.16.md)|[继续阅读](08.03.18.md) 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ebook/08.03.18.md: -------------------------------------------------------------------------------- 1 | ###获取发现模式 2 | 3 | 此操作用于获取设备的发现模式。请参考7.2节的不同的设备发现模式的定义。该设备应支持通过GetDiscoveryMode命令检索发现模式设置。 4 | 5 | ###表56:GetDiscoveryMode命令 6 | 消息名|描述 7 | ----|---- 8 | GetDiscoveryModeRequest|这是一个空消息 9 | GetDiscoveryModeResponse|此消息包含当前发现模式设置,即可发现的或者不可发现的
tt:DiscoveryMode: **DiscoveryMode** [1][1] 10 | 错误代码|描述 11 | |没有相关的命令 12 | 13 | 14 | 15 | 16 | [上一章](08.03.17.md)|[继续阅读](08.03.19.md) 17 | 18 | -------------------------------------------------------------------------------- /ebook/08.03.19.md: -------------------------------------------------------------------------------- 1 | ###设置发现模式 2 | 3 | 此操作用来设置设备的发现模式。请参考7.2节的不同的设备发现模式的定义。该设备应支持通过GetDiscoveryMode命令配置发现模式设置。 4 | 5 | ###表57:SetDiscoveryMode命令 6 | 消息名|描述 7 | ----|---- 8 | SetDiscoveryModeRequest|此消息包含当前请求的发现模式设置,即可发现的或者不可发现的
tt:DiscoveryMode: **DiscoveryMode** [1][1] 9 | SetDiscoveryModeResponse|这是一个空消息 10 | 错误代码|描述 11 | |没有相关的命令 12 | 13 | 14 | 15 | 16 | [上一章](08.03.18.md)|[继续阅读](08.03.20.md) 17 | 18 | -------------------------------------------------------------------------------- /ebook/08.03.20.md: -------------------------------------------------------------------------------- 1 | ###获取远程发现模式 2 | 3 | 此操作得到一个设备的远程发现模式。请参考7.4节的远程发现扩展的定义。支持远程发现的设备应该支持通过GetRemoteDiscoveryMode命令检索远程发现模式。 4 | 5 | ###表58:GetRemoteDiscoveryMode命令 6 | 消息名|描述 7 | ----|---- 8 | GetRemoteDiscoveryMode-Request|这是一个空消息 9 | GetRemoteDiscoveryMode-Response|此消息包含当前远程发现模式设置。即可发现的或者不可发现的。
tt:DiscoveryMode: **RemoteDiscoveryMode** [1][1] 10 | 错误代码|描述 11 | |没有相关的命令 12 | 13 | 14 | 15 | [上一章](08.03.19.md)|[继续阅读](08.03.21.md) 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ebook/08.03.21.md: -------------------------------------------------------------------------------- 1 | ###设置远程发现模式 2 | 3 | 此操作用来设置设备的远程发现模式。请参考7.4节的远程发现扩展的定义。支持远程发现的设备应该支持通过GetRemoteDiscoveryMode命令设置远程发现模式。 4 | 5 | ###表59:SetRemoteDiscoveryMode命令 6 | 消息名|描述 7 | ----|---- 8 | SetRemoteDiscoveryMode-Request|此消息包含请求的远程发现模式设置,即可发现的或者不可发现的。
tt:DiscoveryMode: **RemoteDiscoveryMode** [1][1] 9 | SetRemoteDiscoveryMode-Response|这是一个空消息 10 | 错误代码|描述 11 | |没有相关命令 12 | 13 | 14 | 15 | 16 | [上一章](08.03.20.md)|[继续阅读](08.03.22.md) 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ebook/08.03.22.md: -------------------------------------------------------------------------------- 1 | ###获取远程DP地址 2 | 3 | 此操作用来获取设备的远程DP地址或者地址。如果设备支持远程发现,如在第7.4节规定的,设备应该支持通过GetDPAddresses命令索引远程DP地址。 4 | 5 | ###表60:GetDPAddresses命令 6 | 消息名|描述 7 | ----|---- 8 | GetDPAddressesRequest|这是一个空消息 9 | GetDPAddressesResponse|此消息包含设备配置的远程DP地址或地址。如果没有远程DP地址配置,则返回一个空列表。
tt:NetworkHost: **DPAddress** [0][unbounded] 10 | 错误代码|描述 11 | |没有相关的命令 12 | 13 | 14 | 15 | 16 | [上一章](08.03.21.md)|[继续阅读](08.03.23.md) 17 | 18 | 19 | -------------------------------------------------------------------------------- /ebook/08.03.23.md: -------------------------------------------------------------------------------- 1 | ###设置远程DP地址 2 | 3 | 此操作用来设置设备的远程DP地址或者地址。如果设备支持远程发现,如在第7.4节规定的,设备应该支持通过GetDPAddresses命令配置远程DP地址。 4 | 5 | ###表61:SetDPAddresses命令 6 | 消息名|描述 7 | ----|---- 8 | SetDPAddressesRequest|此消息包含设备配置的远程DP地址或地址。 9 | SetDPAddressesResponse|这是一个空消息 10 | 错误代码|描述 11 | |没有相关的命令 12 | 13 | 14 | [上一章](08.03.22.md)|[继续阅读](08.04.00.md) 15 | -------------------------------------------------------------------------------- /ebook/08.04.00.md: -------------------------------------------------------------------------------- 1 | ###安全 2 | 3 | 本节包含一组安全管理操作。这种操作对网络攻击十分敏感,为了不危及设备安全,应使用适当的授权级别。 4 | 5 | 6 | 7 | 8 | [上一章](08.03.23.md)|[继续阅读](08.04.01.md) 9 | 10 | -------------------------------------------------------------------------------- /ebook/08.04.01.md: -------------------------------------------------------------------------------- 1 | ###获取访问策略 2 | 3 | 访问不同的服务子集,应该受到相应的权限限制。第5.12节给出了终点认证的先决条件。授权决定了接下来能使用的安全访问策略。这个标准并没有指定任何特定的策略描述格式或者安全策略,这是由设备制造商或系统供应商选择策略和选择的策略描述格式。然而,访问策略(任意格式的)可以使用这个命令请求。如果设备支持访问策略设置,那么它应该支持这个命令。 4 | 5 | ###表62:GetAccessPolicy命令 6 | 消息名|描述 7 | ----|---- 8 | GetAccessPolicyRequest|这是一个空消息 9 | GetAccessPolicyResponse|此消息包含请求的策略文件。
tt:BinaryData **PolicyFile** [1][1] 10 | 错误代码|描述 11 | env:Receiver
ter:Action
ter:EmptyPolicy|设备策略文件不存在或者文件为空 12 | 13 | 14 | 15 | 16 | [上一章](08.04.00.md)|[继续阅读](08.04.02.md) 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ebook/08.04.02.md: -------------------------------------------------------------------------------- 1 | ###设置安全策略 2 | 3 | 此命令设置设备的访问安全策略(访问安全策略的更多细节请参阅第8.4.1节的Get命令)。如果设备支持基于WS-安全认证的访问策略设置,那么它必须支持这个命令。 4 | 5 | ###表63:SetAccessPolicy命令 6 | 消息名|描述 7 | ----|---- 8 | SetAccessPolicyRequest|此消息中包含用来设置的政策文件。
tt:BinaryData **PolicyFile** [1][1] 9 | SetAccessPolicyResponse|这是一个空消息 10 | 错误代码|描述 11 | env:Sender
ter:InvalidArgs
ter:PolicyFormat|由于未知的策略格式,无法设置策略 12 | 13 | 14 | 15 | [上一章](08.04.01.md)|[继续阅读](08.04.03.md) 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ebook/08.04.03.md: -------------------------------------------------------------------------------- 1 | ###获取用户 2 | 3 | 此操作列出注册用户以及用户级别。设备应该支持检索已注册的设备用户,以及他们通过GetUsers命令进行身份验证。 4 | 5 | ###表64:GetUsers命令 6 | 消息名|描述 7 | ----|---- 8 | GetUsersRequest|这是一个空消息 9 | GetUsersResponse|此消息中包含用户列表和相应的凭证。每条记录包括:
用户名
用户等级
也就是说用户密码不包括此响应中。
tt:User: **User** [0][unbounded] 10 | 错误代码|描述 11 | |没有找到相关的命令 12 | 13 | 14 | 15 | 16 | 17 | [上一章](08.04.02.md)|[继续阅读](08.04.04.md) 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ebook/08.04.04.md: -------------------------------------------------------------------------------- 1 | ###创建用户 2 | 3 | 此操作用来创建新的设备用户和相应的设备上进行身份验证的凭据,请参见第5.12了解详情。设备应该支持通过CreateUsers命令创建设备用户和他们进行身份验证的凭证。要么所有的用户都创建成功,要么返回无法创建用户的错误消息。 4 | 5 | 符合ONVIF标准的设备密码长度应至少为28个字节,因为客户端可以遵循密码导出机制得到该长度为28字节的密码,如5.12.2.1节所描述的 6 | 7 | ###表65:CreateUsers命令 8 | 消息名|描述 9 | ----|---- 10 | CreateUsersRequest|这个消息包含创建新用户需要的参数。
每条用户记录包含:
用户名
密码
用户等级
tt:User: **User** [1][unbounded] 11 | CreateUsersResponse|这是一个空消息 12 | 错误代码|描述 13 | env:Sender
ter:OperationProhibited
ter:UsernameClash|用户名已存在 14 | env:Sender
ter:OperationProhibited
ter:PasswordTooLong|密码长度过长 15 | env:Sender
ter:OperationProhibited
ter:UsernameTooLong|用户名过长 16 | env:Sender
ter:OperationProhibited
ter:Password|密码太过简单 17 | env:Receiver
ter:Action
ter:TooManyUsers|超过了最大支持的用户数 18 | env:Sender
ter:OperationProhibited
ter:AnonymousNotAllowed|不被允许的匿名用户级别 19 | env:Sender
ter:OperationProhibited
ter:UsernameTooShort|用户名过短 20 | 21 | 22 | 23 | 24 | 25 | [上一章](08.04.03.md)|[继续阅读](08.04.05.md) 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /ebook/08.04.05.md: -------------------------------------------------------------------------------- 1 | ###删除用户 2 | 3 | 此操作用来删除设备上的用户。设备应该支持通过DeleteUsers命令删除设备用户和他们进行身份验证的凭证。一个设备可以具有一个或多个固定的用户不能被删除,以确保本机的访问。要么所有的用户都删除成功,要么返回无法删除用户的错误消息。 4 | 5 | ###表66:DeleteUsers命令 6 | 消息名|描述 7 | ----|---- 8 | DeleteUsersRequest|此消息包含要删除的一个或多个用户的名称。 9 | DeleteUsersResponse|这是一个空消息 10 | 错误代码|描述 11 | env:Sender
ter:InvalidArgVal
ter:UsernameMissing|用户名无法识别 12 | env:Sender
ter:InvalidArgVal
ter:FixedUser|用户不能被删除 13 | 14 | 15 | 16 | 17 | 18 | [上一章](08.04.04.md)|[继续阅读](08.04.06.md) 19 | 20 | 21 | -------------------------------------------------------------------------------- /ebook/08.04.06.md: -------------------------------------------------------------------------------- 1 | ###设置用户配置 2 | 3 | 此操作更新设备上一个或多个用户的认证设置,查看第5.12节详细。设备应支持通过setuser命令更新设备用户和他们的凭据。要么所有的变更请求被成功处理,要么返回无法处理请求的失败消息。 4 | 5 | 在密码值被设置为可选的情况下,设备将考虑清楚密码。如果设备不接受密码长度为零,将返回"ter:PasswordTooWeak"的错误消息。 6 | 7 | ###表67:SetUser命令 8 | 消息名|描述 9 | ----|---- 10 | SetUserRequest|此消息中包含进行更新的用户列表和相应的参数。
用户名
密码
用户等级
tt:User: User [1][unbounded] 11 | 错误代码|描述 12 | env:Sender
ter:InvalidArgVal
ter:UsernameMissing|用户名无法识别 13 | env:Sender
ter:OperationProhibited
ter:PasswordTooLong|密码长度过长 14 | env:Sender
ter:OperationProhibited
ter:PasswordTooWeak|密码太简单 15 | env:Sender
ter:OperationProhibited
ter:AnonymousNotAllowed|不允许的匿名用户级别 16 | env:Sender
ter:InvalidArgVal
ter:FixedUser|密码或用户级别无法修改 17 | 18 | 19 | 20 | 21 | [上一章](08.04.05.md)|[继续阅读](08.04.07.md) 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ebook/08.04.07.md: -------------------------------------------------------------------------------- 1 | ###IEEE802.1X配置 2 | 3 | 本说明书中定义了以下参数作为一组IEEE 802.1X的配置参数。 4 | 5 | * 配置令牌 6 | 此参数表示一个参考IEEE802.1X配置参数的令牌,并且在[ONVIF架构]中定义为'Dot1XConfigurationToken'。这种命名为'dot1x'的约定,这实际上代表的IEEE 802.1x是用于更好的可读性在生成的源代码的架构元素。 7 | 8 | 9 | * EAP身份 10 | 11 | 该参数表示客户端连接到IEEE 802.1x网络管理用户名称。 12 | 13 | * EAP 方法 14 | 15 | 此参数表示的身份验证方法。在[ONVIF模式]中这被定义为'EAP方法'。 16 | 17 | * CA证书ID 18 | 19 | 此参数表示用于验证服务器验证的CA证书ID。在[ONVIF模式]中这被定义为CA证书ID。 20 | 21 | * 个自选定的EAP方法的配置参数 22 | 23 | 根据选定的EAP方法,需要一些如下特定的参数: 24 | [EAP-MD5], [EAP-PEAP/MSCHAP-V2], [EAP-TTLS types]:身份密码可以验证使用指定密码的用户(设备)。[EAP-MD5]方法不适合以802.11 (WPA-Enterprise)为目地的使用。 25 | 26 | [EAP-TLS] : 客户端证书ID是未了RADIUS服务器能使用指定的证书来验证用户(设备) 27 | 28 | 29 | 这些IEEE 802.1X参数将会被安全配置作为一个特定的网络接口配置的一部分所引用。详情请参阅8.2.11。 30 | 31 | 规范假设设备上的IEEE 802.1X配置将在IEEE 802.1X网络管理范围外来执行。在重新配置IEEE802.1X设置的情况,它也假定是802.1X网络管理范围外执行的。 32 | 33 | 请注意,在ONVIF2.0中对IEEE 802.1X的支持被限制在IEEE802.11接口。 34 | 35 | 36 | ###创建IEEE 802.1x配置 37 | 38 | 此操作将新创建设备的IEEE 802.1X配置参数。如果支持IEEE 802.1X意味着具备通过安全Dot1X标准的能力,那么设备应该支持该命。如果设备接收到这个请求已经存在配置令牌(Dot1XConfigurationToken)规范中,设备应响应‘ReferenceToken'错误,表示有一些配置冲突。 39 | 40 | ###表68:CreateDot1XConfiguration命令 41 | 消息名|描述 42 | ----|---- 43 | CreateDot1XConfigurationRequest|此消息包含:
tt:Dot1XConfiguration **Dot1XConfiguration**[1][1] 44 | CreateDot1XConfigurationResponse|这是一个空消息 45 | 错误代码|描述 46 | env:Receiver
ter:ActionNotSupported
ter:EAPMethodNotSupported|建议的EAP方法不被支持 47 | env:Receiver
ter:Action
ter:MaxDot1X|IEEE802.1X配置达到最大数量 48 | env:Sender
ter:OperationProhibited
ter:CertificateID|无效的证书编号错误 49 | env:Sender
ter:InvalidArgVal
ter:ReferenceToken|Dot1X配置已经存在 50 | env:Sender
ter:InvalidArgVal
ter:InvalidDot1X|无效的IEEE 802.1X配置 51 | 52 | 53 | 54 | ###设置IEEE 802.1X配置 55 | 56 | 与CreateDot1XConfiguration命令试图创建一个新的配置参数集不同的是,这个操作修改现有的IEEE802.1X的设备的配置参数集。如果支持IEEE 802.1X意味着具备通过安全Dot1X标准的能力,那么设备应该支持该命 57 | 58 | 59 | ###表69:SetDot1XConfigurationRequest命令 60 | 消息名|描述 61 | ----|---- 62 | SetDot1XConfigurationRequest|此消息包含
tt:Dot1XConfiguration **Dot1XConfiguration**[1][1] 63 | SetDot1XConfigurationResponse|这是一个空消息 64 | 错误代码|描述 65 | env:Receiver
ter:ActionNotSupported
ter:EAPMethodNotSupported|建议的EAP方法不被支持 66 | env:Sender
ter:OperationProhibited
ter:CertificateID|无效的证书ID错误 67 | env:Sender
ter:OperationProhibited
ter:ReferenceToken|无效的Dot1X配置令牌错误 68 | env:Sender
ter:InvalidArgVal
ter:InvalidDot1X|无效的IEEE 802.1X配置 69 | 70 | 71 | ###获取IEEE 802.1X配置 72 | 73 | 此操作是通过指定的配置令牌(Dot1X配置令牌)从设备取得一个IEEE802.1X配置参数。 74 | 75 | 如果支持IEEE 802.1X意味着具备通过安全Dot1X标准的能力,那么设备应该支持该命。 76 | 77 | 无论在检索的配置中的802.1X方法有没有密码,设备响应消息都不应该包含密码元素。 78 | 79 | 80 | ###表70:GetDot1XConfiguration命令 81 | 消息名|描述 82 | ----|---- 83 | GetDot1XConfigurationRequest|消息内容包含:tt:ReferenceToken **Dot1XConfigurationToken**[1][1] 84 | GetDot1XConfigurationResponse|消息包含:tt:Dot1XConfiguration **Dot1XConfiguration**[1][1] 85 | 错误代码|描述 86 | env:Sender
ter:OperationProhibited
ter:ReferenceToken|无效的Dot1X配置令牌错误 87 | 88 | 89 | ###获取IEEE 802.1X配置 90 | 91 | 此操作从设备获取所有的现有的IEEE802.1X配置参数集。该设备应响应所有的IEEE 802.1X配置,这样客户端就可以知道有多少个IEEE 802.1X配置,以及它们是如何配置的。 92 | 93 | 如果支持IEEE 802.1X意味着具备通过安全Dot1X标准的能力,那么设备应该支持该命。 94 | 95 | 无论在检索的配置中的802.1X方法有没有密码,设备响应消息都不应该包含密码元素。 96 | 97 | ###表71:GetDot1XConfigurations命令 98 | 消息名|描述 99 | ----|---- 100 | GetDot1XConfigurationsRequest|这是一个空消息 101 | GetDot1XConfigurationsResponse|消息内容包含tt: Dot1XConfiguration **Dot1XConfiguration**[0][unbounded] 102 | 错误代码|描述 103 | |没有相关的命令 104 | 105 | 106 | ###删除IEEE 802.1X配置 107 | 108 | 此操作是从设备中删除一个IEEE 802.1X配置参数。请求中的'Dot1X配置令牌'决定哪个配置应被删除。如果支持IEEE 802.1X意味着具备通过安全Dot1X标准的能力,那么设备应该支持该命 109 | 110 | 111 | ###表72:DeleteDot1XConfigurations命令 112 | 消息名|描述 113 | DeleteDot1XConfigurationRequest|消息内容包含:tt:ReferenceToken **Dot1XConfigurationToken**[1][1] 114 | DeleteDot1XConfigurationResponse|这是一个空消息 115 | 错误代码|描述 116 | env:Sender
ter:OperationProhibited
ter:ReferenceToken|无效的Dot1X配置令牌错误 117 | env:Receiver
ter:OperationProhibited
ter:ReferenceToken|不能删除指定的IEEE 802.1X配置 118 | 119 | 120 | 121 | 122 | 123 | [上一章](08.04.06.md)|[继续阅读](08.04.08.md) 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /ebook/08.04.08.md: -------------------------------------------------------------------------------- 1 | ###创建自签名证书 2 | 3 | 该操作生成公/私密钥对,也可以创建一个自签名设备证书作为密钥对生成的结果。创建证书使用合适的板载密钥对生成机制。 4 | 5 | 如果设备支持板载密钥对生成,支持TLS的设备应支持该证书创建命令。还有,如果设备支持板载密钥对生成,支持IEEE 802.1X意味着具备通过the Security Dot1X标准的能力,那么设备应该支持生成密钥对的命令。证书和密钥对使用证书ID识别。这些ID是所选择的证书生成请求者或由设备(没有给定的ID值的情况下)。 6 | 7 | 8 | ###表73:CreateCertificate命令 9 | 消息名|描述 10 | ----|---- 11 | CreateCertificateRequest|此消息包含(如适用)请求的证书ID和其他额外的请求参数:subject,valid not before和valid not after。
xs:token **CertificateID** [0][1]
xs:string **Subject** [0][1]
xs:dateTime **ValidNotBefore** [0][1]
xs:dateTime **ValidNotAfter** [0][1] 12 | CreateCertificateResponse|此消息包含生成的自签名证书
tt:Certificate **NvtCertificate** [1][1] 13 | 错误代码|描述 14 | env:Receiver
ter:Action
ter:KeyGeneration|公/私密钥生成失败 15 | 16 | 17 | 18 | 19 | 20 | [上一章](08.04.07.md)|[继续阅读](08.04.09.md) 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ebook/08.04.09.md: -------------------------------------------------------------------------------- 1 | ###获取证书 2 | 3 | 此操作旨在获取用于TLS验证的所有服务端证书(包括自签名证书),以及用于IEEE 802.1X验证的客户端证书。这个命令只列出该设备的TLS服务器证书和IEEE 802.1x客户端证书(即不受信任的CA证书也不受信任的根证书)。返回的证书为二进制数据。支持TLS的设备应支持此命令;证书须用ASN.1编码[X.681],[X.682],[X.683]DER[X.690]编码规则。 4 | 5 | ###GetCertificates命令 6 | 消息名|描述 7 | ----|---- 8 | GetCertificatesRequest|这是一个空消息 9 | GetCertificatesResponse|此消息包含一个设备证书的列表
tt:Certificate **NvtCertificate** [0][unbounded] 10 | 错误代码|描述 11 | |没有找到相关的命令 12 | 13 | 14 | 15 | 16 | 17 | [上一章](08.04.08.md)|[继续阅读](08.04.10.md) 18 | -------------------------------------------------------------------------------- /ebook/08.04.10.md: -------------------------------------------------------------------------------- 1 | ###获取CA证书 2 | 3 | CA证书被加载到设备中,用于以下两种情况。一种是用于TLS服务功能中的TLS客户端认证;另一种是用于IEEE 802.1X功能中的服务端身份认证。这项操作用来获取所有设备中的CA证书。支持TLS客户端认证或者IEEE 802.1X认证的设备应该支持这个命令。返回的证书应该使用ASN.1 [X.681], [X.682], [X.683] DER [X.690]编码规则进行编码。 4 | 5 | ###表75:GetCACertificates命令 6 | 消息名|描述 7 | ----|---- 8 | GetCACertificatesRequest|这是一个空消息 9 | GetCACertificatesResponse|此消息包含一个CA证书的列表。
tt:Certificate **CACertificate** [0][unbounded] 10 | 错误代码|描述 11 | |没有找到相关的命令 12 | 13 | 14 | 15 | 16 | 17 | [上一章](08.04.09.md)|[继续阅读](08.04.11.md) 18 | -------------------------------------------------------------------------------- /ebook/08.04.11.md: -------------------------------------------------------------------------------- 1 | ###获取证书状态 2 | 3 | 此操作是针对TLS功能。此操作旨在获取设备中TLS服务器证书的状态(启用或禁用)。支持TLS的设备应支持该命令。 4 | 5 | 6 | ###表76:GetCertificatesStatus命令 7 | 消息名|描述 8 | ----|---- 9 | GetCertificatesStatusRequest|这是一个空消息 10 | GetCertificatesStatus-Response|此消息包含一个引用ID和状态的设备服务端证书。状态是一个布尔值(true为开启,false为禁用)。
tt:CertificateStatus **CertificateStatus** [0][unbounded] 11 | 错误代码|描述 12 | |没有相关的命令 13 | 14 | 15 | 16 | 17 | [上一章](08.04.09.md)|[继续阅读](08.04.12.md) 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ebook/08.04.12.md: -------------------------------------------------------------------------------- 1 | ###设置证书状态 2 | 3 | 此操作是针对TLS功能。此操作设置设备TLS服务器证书的状态(启用或禁用)。支持TLS的设备应该支持该命令。通常在同一时间只允许启动一个设备服务端证书。 4 | 5 | ###表77:SetCertificatesStatus命令 6 | 消息名|描述 7 | ----|---- 8 | SetCertificatesStatusRequest|此消息包含ID和证书状态(启用或禁用)所引用的服务端证书列表。
tt:CertificateStatus **CertificateStatus** [0][unbounded] 9 | SetCertificatesStatus-Response|这是一个空消息 10 | 错误代码|描述 11 | env:Sender
ter:InvalidArgVal
ter:CertificateID|未知的证书引用 12 | 13 | 14 | 15 | 16 | 17 | [上一章](08.04.11.md)|[继续阅读](08.04.13.md) 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ebook/08.04.13.md: -------------------------------------------------------------------------------- 1 | ###获取证书请求 2 | 3 | 此操作是从设备请求一个PKCS#10证书签名。返回的信息字段格式应该和指定的[PKCS#10]或PEM编码的[PKCS#10]格式一致。为了让这个命令正常工作,该设备必须已经有一个公钥/私钥对。它的密钥对,应该由certificateid引用作为输入参数中指定的参考描述。这CertificateID是指使用第8.4.8节中定义的CreateCertificate命令生成的密钥对。 4 | 5 | 支持板载密钥对生成,支持TLS或IEEE 802.1x使用客户端证书的设备应该支持这个命令。 6 | 7 | ###表78:GetPkcs10Request命令 8 | 消息名|描述 9 | ----|---- 10 | GetPkcs10RequestRequest|此消息包含证书参考(密钥对)和证书证书请求可选参数。这些属性需要编码为DER ASN.1对象。
xs:token **CertificateID** [1][1]
xs:string **Subject** [0][1]
xs:BinaryData **Attributes** [0][1] 11 | GetPkcs10RequestResponse|此消息包含PKCS#10请求数据结构。
tt:BinaryData **Pkcs10Request** [1][1] 12 | 错误代码|描述 13 | env:Sender
ter:InvalidArgVal
ter:CertificateID|无效的CertificateID值 14 | env:Receiver
ter:Action
ter:Signature|PKCS#10签名创建失败 15 | 16 | 17 | 18 | 19 | [上一章](08.04.12.md)|[继续阅读](08.04.14.md) 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /ebook/08.04.14.md: -------------------------------------------------------------------------------- 1 | ###获取客户端证书状态 2 | 3 | 此操作是针对TLS功能。此操作获取TLS客户端身份验证的设备的状态(启用/禁用)。支持TLS的设备应支持该命令。 4 | 5 | ###表79:GetClientCertificateMode命令 6 | 7 | 消息名|描述 8 | ----|---- 9 | GetClientCertificateMode-Request|这是一个空消息 10 | GetClientCertificateMode-Response|此消息包含该设备客户端认证状态,即开启或者关闭。 11 | 错误代码|描述 12 | |没有相关的命令 13 | 14 | 15 | 16 | 17 | [上一章](08.04.13.md)|[继续阅读](08.04.15.md) 18 | 19 | 20 | -------------------------------------------------------------------------------- /ebook/08.04.15.md: -------------------------------------------------------------------------------- 1 | ###设置客户端证书状态 2 | 3 | 此操作是针对TLS功能。此操作设置设备TLS客户端身份验证的状态(启用或禁用)。支持TLS的设备应支持该命令。 4 | 5 | ###表80:SetClientCertificateMode命令 6 | 消息名|描述 7 | ----|---- 8 | SetClientCertificateMode-Request|此消息包含请求的设备客户端的认证状态,即启用或禁用。
xs:boolean **Enabled** [1][1] 9 | SetClientCertificateMode-Response|这是一个空消息 10 | 错误代码|描述 11 | env:Receiver
ter:InvalidArgVal
ter:ClientAuth|尝试启用客户端身份验证,但不支持或没有配置客户端身份验证。 12 | 13 | 14 | 15 | 16 | 17 | [上一章](08.04.14.md)|[继续阅读](08.04.16.md) 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ebook/08.04.16.md: -------------------------------------------------------------------------------- 1 | ###加载设备证书 2 | 3 | TLS服务器证书或IEEE802.1X客户端证书通过PKCS#10证书请求命令来创建,这两种证书可以通过该命令(见第8.4.13节)加载到设备上。在请求中证书ID是必须的。该设备可以基于公共密钥证书和证书的主题信息对已接收的证书进行排序。 4 | 5 | 在请求中的证书ID应该是客户端期望的ID值。该设备应该首先扫描目前设备上的生成的密钥对,以确定哪个是载入证书的通信密钥对,然后建立证书与密钥之间的联系。 6 | 7 | 支持板载密钥对生成以及支持TLS或IEEE 802.1X的设备应该支持此命令。 8 | 9 | 证书须用ASN.1编码X.681,X.682,X.683 DER[X.690]编码规则。 10 | 11 | 该命令适用于任何类型的设备,虽然由于历史原因,参数名字被叫做NVTCertificate。 12 | 13 | 14 | ###表81:LoadCertificates命令 15 | 消息名|描述 16 | ----|---- 17 | LoadCertificatesRequest|此消息包含上传的设备证书列表。
tt:Certificate **NVTCertificate** [1][unbounded] 18 | LoadCertificatesResponse|这是一个空消息 19 | 错误代码|描述 20 | env:Sender
ter:InvalidArgVal
ter:CertificateFormat|证书格式错误或设备不支持的格式 21 | env:Sender
ter:InvalidArgVal
ter:CertificateID|证书ID已经存在 22 | env:Sender
ter:InvalidArgVal
ter:InvalidCertificate|无效的证书 23 | 24 | 25 | 26 | 27 | 28 | [上一章](08.04.15.md)|[继续阅读](08.04.17.md) 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /ebook/08.04.17.md: -------------------------------------------------------------------------------- 1 | ###加载设备私有key相关的证书 2 | 3 | 可能有一些情况下,认证机构或其他同等的机构会创建一个没有通过PKCS#10认证签名的证书请求。 在这种情况下,证书将和自己的私钥捆绑在一起。 这个命令将被用于这样的用例场景。 是否给某个请求中的证书ID项设置一个客户端期望的ID值是可选的。如果请求中没有指定证书ID,设备可以选择相应的ID。 4 | 5 | 此操作用来向设备导入公/私密钥对。 6 | 7 | 证书须用ASN.1编码X.681,X.682,X.683 DER[X.690]编码规则。 8 | 9 | 不支持板载密钥对生成和支持TLS或IEEE 802.1X使用客户端证书的设备应该支持该命令。支持板载密钥对生成的设备可能持此命令。支持此操作的设备的安全策略应该确保私钥得到充分的保护。 10 | 11 | ###表82:LoadCertificateWithPrivateKey命令 12 | 消息名|描述 13 | ----|---- 14 | LoadCertificateWithPrivateKeyRequest|此消息包含一个导入的公钥/私钥对。
tt:CertificateWithPrivateKey
**CertificateWithPrivateKey**[1][unbounded] 15 | LoadCertificateWithPrivateKeyResponse|这是一个空消息 16 | 错误代码|描述 17 | env: Sender
ter:InvalidArgVal
ter:CertificateFormat|证书格式错误或者设备不支持的设备 18 | env:Sender
ter:InvalidArgVal
ter:CertificateID|证书ID不存在 19 | env: Sender
ter:InvalidArgVal
ter: KeysNotMatching|公钥和私钥不匹配 20 | 21 | 22 | 23 | 24 | [上一章](08.04.16.md)|[继续阅读](08.04.18.md) 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /ebook/08.04.18.md: -------------------------------------------------------------------------------- 1 | ###获取证书信息请求 2 | 3 | 此操作根据证书ID请求指定的证书信息。设备应回应“主题DN”,“密钥用法”,“扩展密钥用法”,“密钥长度”,“版本”,“序号”,“签名算法”和“合法性”相关证书信息,只要设备能从指定的证书检索到这些的话。IssuerDN和SubjectDN应使用[RFC4514]的编码规则。 4 | 5 | 支持TLS或IEEE 802.1X的设备应支持该命令。 6 | 7 | ###表83:GetCertificateInformation命令 8 | 9 | 消息名|描述 10 | ----|---- 11 | GetCertificateInformationRequest|此消息包含:
CertificateID:证书标识
xs: token CertificateID [1][1] 12 | GetCertificateInformationResponse|此消息包含:
tt:CertificateInformation **CertificateInformation**[1][1] 13 | 错误代码|描述 14 | env:Sender
ter:InvalidArgVal
ter:CertificateID|无效的证书ID 15 | 16 | 17 | 18 | 19 | 20 | [上一章](08.04.17.md)|[继续阅读](08.04.19.md) 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ebook/08.04.19.md: -------------------------------------------------------------------------------- 1 | ###加载CA证书 2 | 3 | 此命令用于在必要时加载可信证书或者验证受信任的根证书的副本。即TLS功能中的客户端证书验证或者IEEE 802.1X功能中的服务端证书验证。 4 | 5 | 支持TLS或IEEE 802.1X的设备应支持此命令。设备应支持DER格式;还可能支持其他格式。该设备可基于公共密钥证书(如果有的话)和主题信息对接收到的证书(如果有的话)进行排序。要么全部成功加载CA证书,要么返回无法加载证书的错误消息。 6 | 7 | ###表84 LoadCACertificates命令 8 | 9 | 消息名|描述 10 | ----|---- 11 | LoadCACertificatesRequest|消息包含被上传的设备CA证书列表
tt:Certificate **CACertificate** [1][unbounded] 12 | LoadCACertificatesResponse|这是一个空消息 13 | 错误代码|描述 14 | env:Sender
ter:InvalidArgVal
ter:CertificateFormat|证书格式错误或设备不支持该格式 15 | env:Sender
ter:InvalidArgVal
ter:CACertificateID|CA证书ID已经存在 16 | env:Receiver
ter:OperationProhibited
ter:MaxCertificates|加载证书的数量超过了限制 17 | 18 | 19 | 20 | 21 | 22 | [上一章](08.04.18.md)|[继续阅读](08.04.20.md) 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /ebook/08.04.20.md: -------------------------------------------------------------------------------- 1 | ###删除证书 2 | 3 | 此操作将删除一个证书或多个证书。设备也可以随着删除的证书一起删除公/私密钥对。支持TLS或者IEEE 802.1X的设备应该支持该命令来删除一个或多个证书。要么所有的证书被成功删除,要么返回删除错误的消息。 4 | 5 | ###表85:DeleteCertificates命令 6 | 消息名|描述 7 | ----|---- 8 | DeleteCertificatesRequest|此消息通过CertificateID参数来确定删除证书。xs:token **CertificateID**[1][unbounded] 9 | DeleteCertificatesResponse|这是一个空消息 10 | 错误代码|描述 11 | env:Sender
ter:InvalidArgVal
ter:CertificateID|未知的证书参考 12 | env:Receiver
ter:OperationProhibited
ter:CertificateID|无法删除指定的证书 13 | 14 | 15 | 16 | 17 | [上一章](08.04.19.md)|[继续阅读](08.04.21.md) 18 | 19 | -------------------------------------------------------------------------------- /ebook/08.04.21.md: -------------------------------------------------------------------------------- 1 | ###获取远程用户 2 | 3 | 此操作返回配置的远程用户(如果有的话)。标记为支持远程用户控制的设备,是通过了性能安全的用户远程操纵认证的,该设备支持这种操作。用户是唯一有效的WS-UserToken 个人资料,或作为一个HTTP / RTSP用户。 4 | 5 | 6 | 导出密码的算法在第5.12.2.1中说明 7 | 8 | ###表86:GetRemoteUser命令 9 | 消息名|描述 10 | ----|---- 11 | GetRemoteUserRequest|这是一个空消息 12 | GetRemoteUserResponse|此消息包含配置的远程用户(如果有的话)。返回的值是:
xs:string **Username** [1][1]
xs:boolean **UseDerivedPassword** [1][1]
注:设备永远不会返回密码字段在在remoteuser。
tt:RemoteUser: **RemoteUser** [0][1] 13 | 错误代码|描述 14 | env:Receiver
ter:ActionNotSupported
ter:NotRemoteUser|不支持远程用户处理 15 | 16 | 17 | 18 | 19 | [上一章](08.04.20.md)|[继续阅读](08.04.22.md) 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ebook/08.04.22.md: -------------------------------------------------------------------------------- 1 | ###设置远程用户 2 | 3 | 此操作用来设置远程用户。标记为支持远程用户控制的设备,是通过了性能安全的用户远程操纵认证的,该设备支持这种操作。用户是唯一有效的WS-UserToken 个人资料,或作为一个HTTP / RTSP用户。 4 | 5 | 设定的密码始终是原来的(不是派生)的密码。 6 | 7 | 8 | 当连接一个远程设备时,UseDerivedPassword已经被设备设置为派生密码。派生密码的算法已经在第5.12.2.1中说明。 9 | 10 | 为了删除远程用户,调用SetRemoteUser命令不应该有RemoteUser参数 11 | 12 | ###表87:SetRemoteUser命令 13 | 消息名|描述 14 | ----|---- 15 | SetRemoteUserRequest|此消息包含远程用户。可以设置的值:
xs:string **Username** [1][1]
xs:string **Password** [0][1]
xs:boolean **UseDerivedPassword** [1][1]
tt:RemoteUser: **RemoteUser** [0][1] 16 | SetRemoteUserResponse|这是一个空消息 17 | 错误代码|描述 18 | env:Receiver
ter:ActionNotSupported
ter:NotRemoteUser|不支持远程用户处理 19 | 20 | 21 | 22 | 23 | 24 | [上一章](08.04.21.md)|[继续阅读](08.04.23.md) 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ebook/08.04.23.md: -------------------------------------------------------------------------------- 1 | ###获取端点引用 2 | 3 | 客户端可以要求设备服务端点引用地址属性,可以得出口令相当于远程用户操作使用。该设备应支持GetEndpointReference命令返回设备服务端点引用的地址属性。 4 | 5 | ###表88:GetEndpointReference命令 6 | 消息名|描述 7 | ----|---- 8 | GetEndpointReferenceRequest|这是一个空消息 9 | GetEndpointReferenceResponse|请求的URL
xs:string **GUID** [1][1] 10 | 错误代码|描述 11 | |没有相关的命令 12 | 13 | 14 | 15 | 16 | [上一章](08.04.22.md)|[继续阅读](08.05.00.md) 17 | -------------------------------------------------------------------------------- /ebook/08.05.00.md: -------------------------------------------------------------------------------- 1 | # 8.5 输入/输出(I/O) 2 | 3 | 本节中的命令保持向后兼容的目的。对于更广泛的IO接口,请参阅ONVIF设备IO规格。 4 | 输入/输出(I / O)命令是用来控制状态或观察I / O端口的状态。如果设备有I / O端口,那么它应支持的I / O命令。 5 | 6 | [上一章](08.04.07.md)|[继续阅读](08.05.01.md) 7 | -------------------------------------------------------------------------------- /ebook/08.05.01.md: -------------------------------------------------------------------------------- 1 | # 8.5.1 继电器输出 2 | 3 | 此操作获取所有可用的继电器输出及其设置的列表。 4 | 5 | ## 表89:GetRelayOutputs 命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetRelayOutputsRequest | 这是一个空消息。 10 | GetRelayOutputsResponse | 该消息包含一个数组的继电器输出。tt:RelayOutput RelayOutputs [0][unbounded] 11 | 错误码|描述 12 | | 没有具体的错误码 13 | 14 | [上一章](08.05.00.md)|[继续阅读](08.05.02.md) 15 | -------------------------------------------------------------------------------- /ebook/08.05.02.md: -------------------------------------------------------------------------------- 1 | # 8.5.2 设置继电器输出配置 2 | 3 | 该操作为设置继电器输出的配置参数。 4 | 5 | 继电器可工作在两种继电器模式: 6 | •双稳态 - 设置状态后,继电器仍保持在此状态。 7 | •单稳态 - 设置状态后,继电器返回到空闲状态后指定的时间。 8 | 9 | 继电器输出的物理空闲状态可通过设置IdleState为“open”或“closed”状态来设置。 10 | 11 | 空闲状态为“open”状态表示继电器打开时,继电器状态通过触发命令设置为‘inactive’状态(参见8.5.3节),和通过同样的命令设置为‘active’来关闭。 12 | 13 | 空闲状态为“closed”状态表示继电器闭合时,继电器状态通过触发命令设置为‘inactive’状态(参见8.5.3节),和通过同样的命令设置为‘active’来打开。 14 | 15 | “DelayTime”的属性字段Duration参数描述了继电器返回到空闲状态之后的时间,如果它工作在单稳态模式。如果继电器在双稳态模式,该参数的值应该忽略。 16 | 17 | ## 表90:SetRelayOutputSettings 命令 18 | 19 | 消息名称|描述 20 | ----|---- 21 | SetRelayOutputSettingsRequest | 该消息包含:
• “RelayToken”: Token reference to the requested relay output.
• “RelayOutputSettings”: 继电器设置参数
.
tt:ReferenceToken RelayOutputToken [1][1]
tt:RelayOutputSettings RelayOutputSettings [1][1] 22 | SetRelayOutputSettingsResponse | 这是一个空消息 23 | 错误码|描述 24 | env:Sender
ter:InvalidArgVal
ter:RelayToken | Unknown relay token reference. 25 | env:Sender
ter:InvalidArgVal
ter:ModeError | 单稳态延时无效 26 | 27 | [上一章](08.05.01.md)|[继续阅读](08.05.03.md) 28 | -------------------------------------------------------------------------------- /ebook/08.05.03.md: -------------------------------------------------------------------------------- 1 | # 8.5.3 触发继电器输出 2 | 3 | ## 表91:SetRelayOutputState 命令 4 | 5 | 消息名称|描述 6 | ----|---- 7 | SetRelayOutputStateRequest | 该消息包含:
• “RelayToken”: Token reference to the requested relay output.
• “LogicalState”: Trigger request, i.e., active or inactive.
tt:ReferenceToken RelayOutputToken [1][1]
tt:RelayLogicalState LogicalState [1][1] 8 | SetRelayOutputStateResponse | 这是一个空消息 9 | 错误码|描述 10 | env:Sender
ter:InvalidArgVal
ter:RelayToken | Unknown relay token reference. 11 | 12 | [上一章](05.13.02.md)|[继续阅读](07.00.md) 13 | -------------------------------------------------------------------------------- /ebook/08.06.md: -------------------------------------------------------------------------------- 1 | # 8.6 辅助操作 2 | 3 | 本节描述的操作是用来管理辅助设备所支持的命令,控制如红外(IR)灯,加热器或雨刮器或连接到该设备的温度计。 4 | 5 | 支持的命令可以通过AuxiliaryData参数来检索,该参数来源于GetCapabilities命令的响应。使用此命令发送的命令应符合在AuxiliaryData响应所支持的命令之一。如果命令响应只列出irlampon命令,那么SendAuxiliaryCommand的参数也应是irlampon,这可能表明是打开连接的红外灯。 6 | 7 | 虽然这些辅助命令的名称可以自由定义,命令以tt:前缀开头,被保留来定义常用的命令,并且这些保留命令应该共享“tt:命令|参数”语法。 8 | 9 | • tt:Wiper|On – 请求打开雨刮器. 10 | 11 | • tt:Wiper|Off – 请求停止雨刮器. 12 | 13 | • tt:Washer|On – 请求打开洗涤. 14 | 15 | • tt:Washer|Off – 请求停止洗涤. 16 | 17 | • tt:WashingProcedue|On – 请求打开洗涤程序. 18 | 19 | • tt: WashingProcedue |Off – 请求停止洗涤程序. 20 | 21 | 标示了辅助服务能力的设备,将支持这些命令。 22 | 23 | ## 表92:发送辅助命令 24 | 25 | SendAuxiliaryCommand | Access Class: ACTUATE 26 | 消息名称|描述 27 | ----|---- 28 | SendAuxiliaryCommandRequest | 该消息包含辅助命令。tt:AuxiliaryData AuxiliaryCommand[1][1] 29 | SendAuxiliaryCommandResponse | 该响应包含辅助命令响应。tt:AuxiliaryData AuxiliaryCommandResponse[0][1] 30 | 错误码|描述 31 | ----|---- 32 | env:Sender
ter:InvalidArgVal
ter:AuxiliaryDataNotSupported | 不支持AuxiliaryCommand请求 33 | 34 | [上一章](08.05.03.md)|[继续阅读](09.00.md) 35 | -------------------------------------------------------------------------------- /ebook/09.00.md: -------------------------------------------------------------------------------- 1 | # 9 事件处理 2 | 3 | 客户端可以订阅设备的事件动作或检测到的事件信息。 4 | 事件通过事件服务进行处理,符合ONVIF标准的设备应提供基于[ONVIF Event WSDL]规范的事件服务。 5 | 设备和客户端都支持[WS-Addressing]规范的事件服务。 6 | 7 | 本标准中的事件处理的基于[WS-BaseNotification]和[WS-Topics]规范。 8 | 如果功能MaxNotificationProducers不为零或不存在,该标准要求实施[9.1](09.01.md)节所述的基本通知接口。 9 | 此外,设备应实施实时的拉点(Pull-Point)通知接口和流通知接口,详细信息将在[9.2](09.02.md)节和[9.3](09.03.md)节中介绍。 10 | 11 | 该标准引入通知消息的扩展,客户端可以通过事件来跟踪对象的属性(如视频分析对象的属性)。 12 | 属性将在[9.4](09.04.md)节进行描述。 13 | 14 | 第[9.5](09.05.md)节描述事件的有效负荷和讨论订阅范围过虑。 15 | 第[9.6](09.06.md)节介绍如何同步点可以要求客户使用三个通知接口之一。 16 | 第[9.7](09.07.md)节描述了主题一体化。 17 | 第[9.9](09.09.md)节讨论故障处理。 18 | 19 | 最后一节中详细演示了实时拉点(Pull-Point)的通知接口,包括消息过虑和主题设置的用法。 20 | 基本通知接口的例子中可以找到相应的[WS-BaseNotification]规范。 21 | 22 | [上一章](08.00.md)|[继续阅读](09.01.md) -------------------------------------------------------------------------------- /ebook/09.01.01.md: -------------------------------------------------------------------------------- 1 | # 9.1.1 引言 2 | 3 | 下列逻辑实体参与通知模式: 4 | 客户端(Client):实现NotificationConsumer接口。 5 | 事件服务(Event Service):实现NotificationProducer接口。 6 | 订阅管理器(Subscription Manager):实现BaseSubscriptionManager接口。 7 | 事件服务和订阅管理器在设备上应该被实例化。 8 | 9 | 图9中所示的是典型的实体之间交换消息的序列图 10 | 首先,客户端建立一个连接到事件服务。然后,客户端可以通过发送SubscriptionRequest订阅一些通知。 11 | 如果事件服务接受订阅,它会动态实例化一个SubscriptionManager来表示订阅。 12 | The Event Service shall return the WS-Endpoint-Address of the SubscriptionManager in the SubscriptionResponse. 13 | 【事件服务应该返回在SubscriptionResponse中SubscriptionManager的WS端点地址(WS-Endpoint-Address)。】 14 | 15 | 为了传送与订阅相匹配的通知,另建立一个从事件服务到客户端的连接。 16 | 通过此连接,事件服务发送一个单向通知消息到客户端的NotificationConsumer接口。 17 | 通过事件服务到客户端可以在任何时间发送相应的通知,而订阅是活跃的。 18 | To control the Subscription, the client directly addresses the SubscriptionManager returned in the SubscriptionResponse. 19 | 【若要控制订阅事项,则客户端在SubscriptionResponse中直接返回SubscriptionManager的地址。】 20 | 在SubscriptionRequest中,客户端可以指定一个终止时间。当达到终止时间时,自动销毁SubscriptionManager。 21 | 客户端可以启动RenewRequests来推迟终止时间。客户端也可以发送一个退订请求(UnsubscribeRequest)来明确终止SubscriptionManager。 22 | 退订成功后,SubscriptionManager不再存在。 23 | 在[WS-BaseNotification]规范和实现设备中事件服务与SubscriptionManager之间的交互没有进一步指定。 24 | 25 | ![图9](images/figure_9.png) 26 | 27 | [上一章](09.01.md)|[继续阅读](09.01.02.md) -------------------------------------------------------------------------------- /ebook/09.01.02.md: -------------------------------------------------------------------------------- 1 | # 9.1.2 需求 2 | 3 | 本节详细介绍设备应提供[WS-BaseNotification]规范的那些接口。 4 | 5 | 一个符合ONVIF标准的设备应支持[WS-BaseNotification]规范的NotificationProducer接口。 6 | 作为一个结果,NotificationProducer资源属性都是可选的(请参阅第[9.5](09.05.md)节)。 7 | 第[9.7.3](09.07.03.md)节中的专业用语描述了设备应支持TopicExpression过虑。 8 | 通过GetEventProperties方法支持MessageContent过滤。 9 | 如果设备不接受订阅初始终止时间,应当提供有效的初始终止时间内的故障信息。 10 | 设备应能够使用[WS-BaseNotification]规范的通知包装器(Notify wrapper)来提供通知。 11 | 设备的订阅政策(SubscriptionPolicy)wsnt:UseRaw 是可选的。[WS-BaseNotification]规范虽然有当前时间(CurrentTime)和终止时间(TerminationTime)作为SubscribeResponse和RenewResponse中的可选元素,符合ONVIF标准的设备应列出SubscribeResponses和RenewResponse两个。 12 | 设备可以响应任何GetCurrentMessage请求与故障信息表明在所需的主题上目前没有可用的消息。 13 | 14 | 实施[WS-BaseNotification]规范中的拉点(Pull-Point)接口在设备上是可选的。 15 | 16 | 符合ONVIF规范的设备应实现[WS-BaseNotification]规范包含的续订和退订操作的基本订阅管理接口。 17 | 可暂停订阅管理接口是可选的,实施WS资源订阅(WS-Resources)是可选的。 18 | 19 | 符合ONVIF标准的设备应支持UTC与“Z”指标中给出的时间值的请求参数和响应包括“Z”指标为UTC的所有时间值。 20 | 21 | [上一章](09.01.01.md)|[继续阅读](09.02.md) -------------------------------------------------------------------------------- /ebook/09.01.md: -------------------------------------------------------------------------------- 1 | # 9.1 基本通知接口 2 | 3 | 第[9.1.1](09.01.01.md)节简要介绍了基本通知接口[WS-BaseNotification]规范。 4 | 第[9.1.2](09.01.02.md)节总结了[WS-BaseNotification]规范的强制性和可选的接口。 5 | 6 | [上一章](09.00.md)|[继续阅读](09.01.01.md) -------------------------------------------------------------------------------- /ebook/09.02.01.md: -------------------------------------------------------------------------------- 1 | # 9.2.1 创建拉点订阅 2 | 3 | 该设备应提供以下创建拉点订阅(CreatePullPointSubscription)命令。 4 | 如果没有过虑元素指定拉点,应通知客户端所有正在发生的事件。 5 | 6 | 设备应支持UTC中指定的绝对时间值以及初始终止时间参数的相对时间值。设备应将当前时间和终止时间这两个参数作为UTC都使用“Z”指示器作为回应。 7 | 8 | ## 表94 创建拉点订阅(CreatePullPointSubscription)命令 9 | 10 | 消息名称|描述 11 | ----|---- 12 | CreatePullPointSubscriptionRequest|此消息包含基于[WS-BaseNotification]规范的相同的SubscriptionRequest元素,无需ConsumerReference:
13 | wsnt:FilterType Filter[0][1]
14 | wsnt:AbsoluteOrRelativeTimeType InitialTerminationTime[0][1]
15 | xs:any SubscriptionPolicy[0][1] 16 | CreatePullPointSubscriptionResponse|此响应包含基于[WS-BaseNotification]规范的相同的SubscriptionResponse元素:
17 | wsa:EndpointReferenceType SubscriptionReference[1][1]
18 | xs:dateTime CurrentTime[1][1]
19 | xs:dateTime TerminationTime[1][1] 20 | 21 | 故障代码|描述 22 | |[WS-BaseNotification]规范使用相同的故障订阅请求(SubscriptionRequest) 23 | 24 | [上一章](09.02.md)|[继续阅读](09.02.02.md) -------------------------------------------------------------------------------- /ebook/09.02.02.md: -------------------------------------------------------------------------------- 1 | # 9.2.2 拉取消息(Pull Messages) 2 | 3 | 设备应提供以下所有由CreatePullPointSubscription命令返回的SubscriptionManager端点的PullMessages命令。 4 | 5 | 该命令应至少支持超时一分钟。如果设备支持检索比要求较少的消息,它应该返回这些而不产生故障 6 | 7 | 设备应将当前时间和终止时间这两个参数作为UTC都使用“Z”指示器作为回应。 8 | 9 | ## 表95: PullMessages命令 10 | 11 | 消息名称|描述 12 | ----|---- 13 | PullMessagesRequest|此消息应向SubscriptionManager拉取通知
14 | xs:duration Timeout[1][1]
15 | xs:int MessageLimit[1][1] 16 | PullMessagesResponse|响应包含了一系列的通知,连同更新SubscriptionManager的TerminationTime
17 | xs:dateTime CurrentTime[1][1]
18 | xs:dateTime TerminationTime[1][1]
19 | wsnt:NotificationMessageHolderType NotificationMessage[0][unbounded] 20 | PullMessagesFaultResponse|超出设备所支持的超时上限值时,故障信息应包含两个参数的上限值。
21 | xs:duration MaxTimeout[1][1]
22 | xs:int MaxMessageLimit[1][1]
23 | 24 | 故障代码|描述 25 | |没有具体的故障代码。 26 | 27 | [上一章](09.02.01.md)|[继续阅读](09.02.03.md) -------------------------------------------------------------------------------- /ebook/09.02.03.md: -------------------------------------------------------------------------------- 1 | # 9.2.3 寻求(Seek) 2 | 3 | 设备支持永久通知存储,请参阅9.9节。设备应当提供以下所有由CreatePullPointSubscription命令返回的SubscriptionManager端点的Seek命令。 4 | 5 | 设备不应提供信息的初始生成属性状态作为响应来调用Seek方法。 6 | 7 | ## 表96: Seek命令 8 | 9 | 消息名称|描述 10 | ----|---- 11 | SeekRequest|此消息应给PullPoint重新调整拉取位置:
12 | xs:datetime UtcTime[1][1] 13 | xs:boolReverse[0][1] 14 | SeekResponse|此消息是空的。 15 | 16 | 故障代码|描述 17 | |没有具体的故障代码。 18 | 19 | [上一章](09.02.02.md)|[继续阅读](09.03.md) -------------------------------------------------------------------------------- /ebook/09.02.md: -------------------------------------------------------------------------------- 1 | # 9.2 实时拉点(Pull-Point)通知接口 2 | 3 | 本节介绍实时拉点通知接口。这个接口提供了友好的防火墙通知接口使实时轮询并初始所有客户端的通信。 4 | 5 | 该接口用于以下列方式: 6 | 7 | 1、客户端要求为拉点订阅(PullPointSubscription)设备创建拉点订阅请求(CreatePullPointSubscriptionRequest)消息。对比订阅的基本通知接口,ConsumerReference应省略(请参阅第[9.1](09.01)节)。 8 | 9 | 2、当订阅被接受或一个故障代码时设备评估订阅和返回一个创建拉点订阅响应(CreatePullPointSubscriptionResponse)。 10 | 11 | 3、如果接受订阅,响应中包含一个WS端点引用(WS-EndpointReference)的SubscriptionManager。WS端点(WS-Endpoint)应提供拉取(PullMessages)消息的操作,这是用来通知客户端检索和[WS-BaseNotification]规范中描述的基本订阅管理接口。基本订阅管理接口由拉取消息(PullMessages)、续订(Renew)和退订(Unsubscribe)操作组成。图10所示的是交互的序列图,提取消息请求(PullMessagesRequest)包含超时和消息限制(MessageLimit)参数。 12 | 13 | ![图10](images/figure_10.png) 14 | 15 | 4、设备应立即响应已经汇总在代表客户端的通知。如果没有汇总的通知,设备会等待响应直到客户端产生通知或超过指定的超时时间。在任何情况下,响应将包含最多由消息限制参数指定的通知数。当每个拉取消息响应(PullMessagesResponse)后开始一个新的拉取消息请求(PullMessagesRequest )时客户端可以轮询实时通知。 16 | 17 | 5、在创建拉点订阅请求(CreatePullPointSubscriptionRequest)中如果既没有终止时间也没有一个相对终止时间的设置,那么相对拉点订阅(PullPointSubscription)每个拉取消息请求(PullMessagesRequest)应解释为保持活动。终止时间是根据相对终止时间是否可用或设备内部默认值来重新计算的。要通知客户端更新后的终止时间,拉取消息响应(PullMessagesReponse)应包含当前时间(currentTime)和终止时间(TerminationTime)元素。当把拉取消息请求(PullMessagesRequest)作为保持活动的相应拉点订阅(PullPointSubscription),该续订请求由[WS-BaseNotification]定义,不需要由客户端。尽管如此,该设备应支持拉点订阅(PullPointSubscription)。 18 | 19 | 6、如果设备支持持久通知存储,请查看第[9.9](09.09.md)节,WS端点(WS-Endpoint)应提供一个寻求(Seek)操作。此操作允许拉取指针(pull pointer)重新定位到过去。在拉取指针定位超出了一开始的缓冲区的情况下,第一次调用拉取消息(PullMessages)将启动第[9.12.9](09.12.9.md)节定义的开始缓冲事件(BeginOfBuffer)。寻求请求(SeekRequest)包含一个UTC时间参数。UTC时间参数应针对通知消息(NotificationMessage)上的UTC时间属性相匹配。当寻求(Seek)用于拉取指针时应定位于UTC时间属性小于或等于寻求参数(Seek argument)的缓冲区中所包含的通知消息(NotificationMessages)。寻求请求(SeekRequest)还包含一个可选的反向参数可用来反向提取拉取消息请求(PullMessageRequest)。为了允许精确的事件产生和(或)多个客户端,设备应支持多个拉点。如果一台设备一次只支持一个订阅,客户端很可能需要没有范围限制的订阅,因为改变订阅事件是不可能的。这就需要设备服务于所有可用的事件,其中设备将激活所有的子系统产生的事件。这可能会导致不必要的负载,例如激活多个移动侦测器和类似的不需要的事件。此外,所有这些事件所产生的流量可能会导致大量的网络负载。通常情况下,网络设备并行服务于多个客户端。通常每个客户端必须订阅他们感兴趣的一些事件。 20 | 21 | [上一章](09.01.02.md)|[继续阅读](09.02.01.md) -------------------------------------------------------------------------------- /ebook/09.03.md: -------------------------------------------------------------------------------- 1 | # 9.3 通知流接口 2 | 3 | ONVIF标准的媒体服务规范“元数据配置”章节介绍如何创建、删除和修改元数据配置。某些元数据的配置可以包含多个结构相同的通知订阅。当包含订阅的元数据配置已分配给一个文件,客户端使用该配置文件得到一个包括元数据配置通知的RTP流。通过RTP流的通知应当由支持ONVIF媒体服务的符合ONVIF标准的设备来实现。 4 | 5 | 对于Topic和ProducerReference,[WS-BaseNotification]规范定义了wsnt:NotificationMessage元素来打包消息的有效负载。对于直接通知请求,此消息的结构是相同的(第[9.5](09.05.md)节中描述的格式)。wsnt:NotificationMessage元素的多个实例内可以放置一个引入实时可视部分的元数据文档。 6 | 7 | 那没有明确SubscriptionReference的流通知,因此,wsnt:NotificationMessage不应包含SubscriptionReference元素。 8 | 9 | [上一章](09.02.03.md)|[继续阅读](09.04.md) -------------------------------------------------------------------------------- /ebook/09.04.01.md: -------------------------------------------------------------------------------- 1 | # 9.4.1 属性示例(Property Example) 2 | 3 | 以下视频分析例子演示了属性的动态行为:视频分析检测器的规则引擎接口可以定义域。这样的检测域由图像平面中的一个多边形(polygon)来描述。对于每个场景中的对象,规则引擎确定了哪些对象在多边形(polygon)内。客户端通过订阅相应的ObjectsInside属性检测域可以访问这些信息。每次对象在场景中出现,一个新的ObjectsInside属性会被创建。如果对象出现在多边形(polygon)的内部或外部,那么由对应的“属性创建”通知告知客户端。每次对象进入或离开多边形(polygon),“属性更改”通知产生指示ObjectsInside属性的对象已经改变了。当对象离开场景,相应的ObjectsInside属性被删除,并通过“属性删除”通知来告知客户端。 4 | 5 | [上一章](09.04.md)|[继续阅读](09.05.md) -------------------------------------------------------------------------------- /ebook/09.04.md: -------------------------------------------------------------------------------- 1 | # 9.4 属性(Properties) 2 | 3 | 属性是表示唯一和可寻址(addressable)的名称和值配对的数据集合。它们都是具有唯一的Topic、Source和Key values的组合,就像普通的打包事件。属性还包含一个额外的标志,用来说明它是新创建的、已改变的或者已删除的。当客户端订阅一个topic表示一个特定的属性时,设备应提供通知告诉客户端的所有对象和请求的属性,哪些订阅还存在。任何时候通过一个同步点客户端也可以请求已订阅的所有目前存在的属性的值(请参阅[9.6](09.06.md)节)。 4 | 5 | 本标准中定义的属性接口是为了对所有属性有关的事件进行分组,并给客户端呈现统一的接口。建议在适用的情况下使用该属性接口。第[9.5](09.05.md)节解释了事件和属性的详细结构。 6 | 7 | [上一章](09.03.md)|[继续阅读](09.04.01.md) -------------------------------------------------------------------------------- /ebook/09.05.01.md: -------------------------------------------------------------------------------- 1 | # 9.5.1 通知信息(Notification information) 2 | 3 | 一个通知至少回答以下问题: 4 | 它是什么时候发生的? 5 | 谁产生了事件? 6 | 发生了什么事? 7 | 8 | 第一个问题是通过添加一个NotificationMessage消息元素的时间属性来回答的。符合ONVIF标准的设备应包括消息元素的时间属性。 9 | 10 | 第二个问题被分成两部分。一部分是WS端点(WS-Endpoint)用来标识设备或设备内的服务已产生通知。因此,WS端点(WS-Endpoint)应指定ProducerReference元素内的NotificationMessage。第二部分是识别在WS端点(WS-Endpoint)的组件,并负责产生通知。根据组件的参数,可能需要识别唯一的组件.这些参数是放置在源元素消息容器内的项。 11 | 12 | 第三个问题分两步回答。首先,NotificationMessage的Topic元素是用来对事件分类的,其次,为了描述事件的详细信息,项被添加到消息容器的数据元素中。当Topic指向属性(请参阅[9.4](09.04.md)节),客户端使用NotificationProducer、Topic、Source Items和可选的Key Items以确定这些属性。这些值将导致一个唯一标识符。 13 | 14 | 15 | 16 | # 9.5.1.1 事件示例(Event Example) 17 | 18 | 后续的示例中演示了该通知的不同部分: 19 | 20 | ``` 21 | 22 | ... 23 | 24 | tns1:PTZController /PTZPreset/Reached 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | ``` 39 | 40 | “PTZConfigurationToken”是用来识别唯一标识的组件,它是负责事件的检测。在这个例子中,该组件是一个云台(PTZ)节点,由云台的配置“PTZConfig1”引用。事件tns1:PTZController/PTZPreset/Reached表示PTZ单元已达到预设。数据块包含的信息是预设的。因此,预设是由一个PresetToken “Preset5”这一名为“PresetName”来识别的。 41 | 42 | [上一章](09.05.md)|[继续阅读](09.05.02.md) -------------------------------------------------------------------------------- /ebook/09.05.02.md: -------------------------------------------------------------------------------- 1 | # 9.5.2 消息格式(Message Format) 2 | 3 | [ONVIF概要]中定义了NotificationMessage消息元素,定义呈列如下(请注意,这里包含的结构描述仅供参考。[ONVIF Schema]包含标准结构描述定义。): 4 | 5 | ``` 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | ... 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | ``` 48 | 49 | Message元素内的项分为三类:Source、Key和Data。不相关的属性通知不得使用key分组。各组内可以放置多个简单元素项。每个项都有一个名称和值。在ElementItem的情况下,该值表示一个XML元素内ElementItem元素。在SimpleItem的情况下,该值应指定属性的值。在此消息的任何一组内包含的所有项的名称应该是唯一的。 50 | 51 | Vendor特定扩展应为qname表达SimpleItem和ElementItem名称属性。这就避免了潜在的Vendor特定扩展和未来ONVIF的扩展名称之间的冲突。 52 | 53 | 它推荐无论何时都使用SimpleItems替代ElementItems,因为SimpleItems易于Messages集成到一个通用的客户端。 54 | 55 | 从TopicSet中可以提取Simple和ElementItems的确切类型信息(请参阅[9.7](09.07.md)节),其中每个Topic可以增强消息有效负载的描述。 56 | 57 | 当通知涉及到属性时,PropertyOperation应该存在。“Initialized”操作模式应当用来通知客户端创建一个属性。当一个同步点已请求时,“Initialized”操作模式应当被使用。 58 | 59 | [上一章](09.05.01.md)|[继续阅读](09.05.03.md) -------------------------------------------------------------------------------- /ebook/09.05.03.md: -------------------------------------------------------------------------------- 1 | # 9.5.3 属性示例、持续(Property example, continued) 2 | 3 | 第[9.4.1](09.04.01.md)节中的例子需要一个可选的Key项。本节中的例子示范Key项的应用。规则引擎可以包含检测域(FieldDetector)规则。这些规则定义场景中每个对象的ObjectsInside属性。当一个新的对象出现在这样一个域之外时,将产生以下通知: 4 | 5 | ``` 6 | 7 | ... 8 | 9 | tns1:RuleEngine/FieldDetector/ObjectsInside 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ``` 28 | 29 | Source项描述产生通知的规则。当多个对象在场景中时,每个对象都有其自己的ObjectsInside属性。因此,为了使属性唯一,对象ID用来作为一个额外的Key项。IsInside项是一个布尔值,指示该对象是在域内或者域外。当对象进入域时,该规则产生一个“属性更改”的消息和类似于以下的内容: 30 | 31 | ``` 32 | 33 | ... 34 | 35 | tns1:RuleEngine/FieldDetector/ObjectsInside 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | ``` 54 | 55 | 最后,当对象离开场景时,产生“属性删除”消息: 56 | 57 | ``` 58 | 59 | ... 60 | 61 | tns1:RuleEngine/FieldDetector/ObjectsInside 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | ``` 77 | 78 | 在这种情况下,Data项可以省略,因为对象和它相应的属性已不存在。 79 | 80 | [上一章](09.05.02.md)|[继续阅读](09.05.04.md) -------------------------------------------------------------------------------- /ebook/09.05.04.md: -------------------------------------------------------------------------------- 1 | # 9.5.4 消息描述语言(Message Description Language) 2 | 3 | 上一节中介绍了消息有效载荷的结构。该结构包含三组:Source、Key和Data。每个组包含一套Simple和ElementItems。对于每个topic,设备可以描述哪些项将使用消息描述语言产生这个topic的部分通知。下面的描述语言描述了消息项的强制性(请注意,这里包含的结构描述仅供参考。[ONVIF Schema]包含标准结构描述定义): 4 | 5 | ``` 6 | 7 | 8 | 9 | 10 | 11 | ... 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | ``` 33 | 34 | 一个项(Item)的名称属性应该独立于它的所属组(Source,Key,Data),在所有的项(Items)中是唯一的。当所描述的消息涉及到属性时,IsProperty属性应当设置为true。然而,如果该消息没有涉及到属性,那么Key组应不存在。一个SimpleItemDescriptor的Type属性应当使用XML结构描述(内置简单类型)、ONVIF标准结构描述或者vendor结构描述中定义的简单类型。同样,一个ElementItemDescriptor的Type属性应匹配一个XML结构描述声明的全局元素。 35 | 36 | 消息描述语言兵不强制每个Source、Key和Data在项中的顺序。另外,被一个可选的ONVIF事件定义记录的项不需要出现在消息中。这也适用于相关MessageDescription中所描述的可选项。 37 | 38 | 所有结构描述文件用来描述消息负载的位置都中列在了9.8节的GetEventPropertiesResponse消息中。 39 | 40 | 41 | # 9.5.4.1 消息描述示例(Message Description Example) 42 | 43 | 下面的代码是一个对应9.5.3节中属性示例的消息描述示例: 44 | 45 | ``` 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | ``` 60 | 61 | [上一章](09.05.03.md)|[继续阅读](09.05.05.md) -------------------------------------------------------------------------------- /ebook/09.05.05.md: -------------------------------------------------------------------------------- 1 | # 9.5.5 消息内容过虑器(Message Content Filter) 2 | 3 | 在订阅请求中,客户端可以通过TopicExpression(请参阅[9.7.3](09.07.03)节)和MessageContent来过虑通知。对于后者,[WS-BaseNotification]规范提出了XPath 1.0规范分支(dialect)。由于本规范要求特定的消息结构,规范要求XPath 1.0语法的一个子集。相应的分支(dialect)可以参照以下URI: 4 | 5 | Dialect=http://www.onvif.org/ver10/tev/messageContentFilter/ItemFilter 6 | 7 | 优先级和关联: 8 | “and”操作比“or”操作具有更高的优先级。这两个“and”和“or”操作是左关联。 9 | 优先级和关联“and”和“or”操作在下面的语法定义操作是与XPath 1.0规范完全相同的。 10 | 11 | 表达式结构如下: 12 | [1] Expression ::= BoolExpr | Expression 'and' Expression | Expression 'or' Expression | '(' Expression ')' | 'not' '(' Expression ')' 13 | [2] BoolExpr ::= 'boolean' '(' PathExpr ')' 14 | [3] PathExpr ::= ['//'Prefix?'SimpleItem' | '//'Prefix?'ElementItem'] NodeTest 15 | [4] Prefix::= NamespacePrefix':' | '' 16 | [5] NodeTest ::= '[' AttrExpr ']' 17 | [6] AttrExpr ::= AttrComp | AttrExpr 'and' AttrExpr | AttrExpr 'or' AttrExpr | '(' AttrExpr ')' | 'not' '(' AttrExpr ')' 18 | [7] AttrComp ::= Attribute '=' '"' String '"' 19 | [8] Attribute ::= '@Name' | '@Value' 20 | 21 | 这个语法允许测试Simple或ElementItems独立于它们所属的组(Source、Key、Data)的存在。此外,SimpleItems的值可以进行检查,SimpleItem和ElementItem命名空间的前缀应符合http://www.onvif.org/ver10/schema 22 | 23 | 最后,这些测试的任意布尔组合是可能的,可以制定以下表达式: 24 | 25 | 只返回包含名称为“VideoSourceConfiguration”且值为“1”的通知 26 | boolean(//tt:SimpleItem[@Name="VideoSourceConfigurationToken" and @Value="1“]) 27 | 28 | 只返回不包含名称为“VideoAnalyticsConfiguration”的通知 29 | not(boolean(//tt:SimpleItem[@Name="VideoAnalyticsConfigurationToken"])) 30 | 31 | 只返回涉及名称为”VideoAnalyticsConfiguration“且值为“2”和名称为”VideoSourceConfiguration “且值为”2“的通知 32 | boolean(//tt:SimpleItem[@Name="VideoAnalyticsConfigurationToken" and @Value="2"]) and boolean(//tt:SimpleItem[@Name="VideoSourceConfigurationToken" and @Value="1"]) 33 | 34 | 只返回涉及名称为”VideoSourceConfiguration“且值为“1”和名称不为“VideoAnalyticsConfigurations”的通知 35 | boolean(//tt:SimpleItem[@Name="VideoSourceConfigurationToken" and @Value="1"]) and not(boolean(//tt:SimpleItem[@Name="VideoAnalyticsConfigurationToken"])) 36 | 37 | 只返回当对象进入或出现在“myImportantField”时的通知 38 | boolean(//tt:SimpleItem[@Name="IsInside" and @Value="true"]) and boolean(//tt:SimpleItem[@Name="Rule" and @Value="myImportantField"]) 39 | 40 | [上一章](09.05.04.md)|[继续阅读](09.06.md) -------------------------------------------------------------------------------- /ebook/09.05.md: -------------------------------------------------------------------------------- 1 | # 9.5 通知结构(Notification Structure) 2 | 3 | 以下代码是wsnt:NotificationMessage并符合[WS-BaseNotification]规范的概要: 4 | 5 | ``` 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | ``` 23 | 24 | 这对应于下面的XML结构: 25 | 26 | ``` 27 | 28 | 29 | wsa:EndpointReferenceType 30 | 31 | 32 | … 33 | ? 34 | 35 | wsa:EndpointReferenceType 36 | 37 | 38 | … 39 | 40 | 41 | ``` 42 | 43 | 其中的wsnt:Message元素包含实际通知的有效载荷。该消息元素的XML类型可以在一个指定的TopicTree中定义(请参阅[9.7](09.07.md)节)。 44 | 45 | 第[9.5.1](09.05.01.md)节概述了通过客户端检索通知得到信息。第[9.5.2](09.05.02.md)节出了消息有效负载的详细格式,第[9.5.4](09.05.04.md)节主要介绍消息有效负载的描述语言。第9.5.5定义了使用订阅过虑通知消息内容的语法。 46 | 47 | [上一章](09.04.01.md)|[继续阅读](09.05.01.md) -------------------------------------------------------------------------------- /ebook/09.06.md: -------------------------------------------------------------------------------- 1 | # 9.6 同步点(Synchronization Point) 2 | 3 | 属性,在9.4节中介绍,关于属性的创建、修改、删除以统一的方式通知客户端,当客户端需要同步其与设备的属性,它可以请求一个同步点,重复客户端已订阅的所有属性的当前状态。所有产生的PropertyOperation通知设置为“Initialized”(参阅[9.5](09.05.md)节)。无论是在SubscriptionResponse或CreatePullPointSubscriptionResponse,同步点请求直接从SubscriptionManager返回。属性的更新是通过通知接口来传输通知的。下面的操作应提供所有订阅管理器的端点。 4 | 5 | ## 表97 设置同步点(SetSynchronizationPoint)命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | SetSynchronizationPointRequest|此消息是空的。 10 | SetSynchronizationPointResponse|此消息是空的。 11 | 12 | 故障代码|描述 13 | |没有命令的具体故障! 14 | 15 | 当客户端使用通知流接口时,客户端应使用ONVIF媒体服务规范中定义的SetSynchronizationPoint操作。 16 | 17 | [上一章](09.05.05.md)|[继续阅读](09.07.md) -------------------------------------------------------------------------------- /ebook/09.07.01.md: -------------------------------------------------------------------------------- 1 | # 9.7.1 ONVIF Topic命名空间(ONVIF Topic Namespace) 2 | 3 | [WS-Topics]规范区分了Topic Tree的定义属于某个Topic命名空间和Topic Set由某个Web服务支持。这种区分允许供应商引用一个共同的Topic命名空间,而只使用部分定义的Topic。 4 | 5 | 如果现有的Topic命名空间的Topic Tree只覆盖设备可用的Topic的一个子集,Topic Tree可以通过定义一个新的Topic命名空间来增长。一个新的Topic命名空间是通过[WS-Topic]规范中所描述的追加一个新的Topic到现有的Topic命名空间来定义的。 6 | 7 | 下面的根Topic在ONVIF命名空间中定义。所有通知所指的这些Topic应当使用9.5.2节中描述的消息格式。 8 | 9 | ``` 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ``` 31 | 32 | [上一章](09.07.md)|[继续阅读](09.07.02.md) -------------------------------------------------------------------------------- /ebook/09.07.02.md: -------------------------------------------------------------------------------- 1 | # 9.7.2 Topic类型信息(Topic Type Information) 2 | 3 | 设备应添加9.5.4节中定义的MessageDescription的类型MessageDescriptionType元素,下面的所有元素代表设备所支持的Topic集。此外,设备应当按照通知规范,找出所有元素代表包括wstop的Topic:Topic属性值为“true”。 4 | 5 | 下面的例子演示了如何增强消息描述中TopicSet的Topic集: 6 | 7 | ``` 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | ``` 44 | 45 | 注意,xmlns=""被包含在这个例子中,以确保任何后代TopicSet元素没有默认命名空间,请参阅[WS-Topic]规范更多信息 46 | 47 | [上一章](09.07.01.md)|[继续阅读](09.07.03.md) -------------------------------------------------------------------------------- /ebook/09.07.03.md: -------------------------------------------------------------------------------- 1 | # 9.7.3 Topic过滤器(Topic Filter) 2 | 3 | 符合ONVIF标准的设备应支持在[WS-Topic]规范中定义的具体Topic表达式。该规范定义了在Topic树内识别一个特定的Topic。当一个具体的Topic表达式被用作订阅过滤器TopicExpression时,下面的分支(Dialect)应当指定: 4 | 5 | http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete 6 | 7 | 设备应支持以下Topic表达式语法。 8 | 9 | 该语法扩展了具体Topic表达式的“or”操作和Topic子树匹配字符串。该扩展语法允许徐选用一个单一订阅内的任意TopicSet。该语法以[WS-Topic 1.3]规范中同样的方式描述了Topic表达式: 10 | 11 | [3] TopicExpression ::= TopicPath ('|' TopicPath)* 12 | [4] TopicPath ::= RootTopic ChildTopicExpression*('//.')? 13 | [5] RootTopic ::= QName 14 | 15 | 如果一个命名空间前缀包括在RootTopic中,它应符合一个有效的Topic命名空间的定义和局部名称应符合该命名空间中定义的一个根Topic的名称。 16 | 17 | [6] ChildTopicExpression ::= '/' ChildTopicName 18 | [7] ChildTopicName ::= QName | NCName 19 | 20 | NCName或局部QName应符合在RootTopic后代内的Topic名称,在路径里每个正斜杠表示另一个层次的子Topic元素。 21 | 22 | 为了引用这个TopicExpression分支(Dialect),应使用以下URI: 23 | Dialect=http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet 24 | 25 | 如果TopicExpression以字符"//."结束,则表示该TopicExpression匹配一个Topic子树,例如: 26 | "tns1:RuleEngine/FieldDetector//." 27 | 28 | 这标识tns1:RuleEngine/FieldDetector构成的子树和它的所有后代。 29 | 30 | 下面的例子掩饰了ConcreteSet topicExpression的用法: 31 | 32 | 寻找有VideoAnalytics Topic作为父Topic的通知: 33 | ``` 34 | 35 | tns1:VideoAnalytics//. 36 | 37 | ``` 38 | 39 | 寻找有VideoAnalytics Topic或RuleEngine作为父Topic的通知: 40 | ``` 41 | 42 | tns1:VideoAnalytics//.|tns1:RuleEngine//. 43 | 44 | ``` 45 | 46 | 寻找由一个LineDetector或FieldDetector产生的通知: 47 | ``` 48 | 49 | tns1:RuleEngine/FieldDetector//.|tns1:RuleEngine/LineDetector//. 50 | 51 | ``` 52 | 53 | [上一章](09.07.02.md)|[继续阅读](09.08.md) -------------------------------------------------------------------------------- /ebook/09.07.md: -------------------------------------------------------------------------------- 1 | # 9.7 Topic结构(Topic Structure) 2 | 3 | 此标准是对[WS-Topics]规范定义的Topic框架的扩展。第[9.7.1](09.07.01.md)节描述了ONVIF Topic命名空间。第[9.7.2](09.07.02.md)节定义了Topic属性接口。该接口应以符合ONVIF标准的设备实现。第[9.7.3](09.07.03.md)节采用第[9.5.4](09.05.04.md)节的TopicSet结构中定义的消息描述语言。所有来自ONVIF Topic命名空间的Topic根据第[9.7.3](09.07.03.md)节所定义来描述一个Topic的类型。本节还定义了设备支持的Topic表达式分支(Dialects)。 4 | 5 | 具体的事件定义在服务规范中所指定的事件(Event)部分。 6 | 7 | [上一章](09.06.md)|[继续阅读](09.07.01.md) -------------------------------------------------------------------------------- /ebook/09.08.md: -------------------------------------------------------------------------------- 1 | # 9.8 获取事件属性(Get event properties) 2 | 3 | [WS-BaseNotification]规范定义了一组可选的WS-ResouceProperties。次规范不要求实现WS-ResourceProperty接口。取而代之的是,为了提供关于FilterDialects、Schema文件和设备所支持的Topic集,随后的直接接口应符合ONVIF标准。 4 | 5 | ## 表97 获取事件属性(GetEventProperties)命令 6 | 7 | 消息名称|描述 8 | ----|---- 9 | GetEventPropertiesRequest|此消息是空的。 10 | GetEventPropertiesResponse|xs:anyURI TopicNamespaceLocation[1][unbounded] 11 | xs:boolean FixedTopicSet[1][1] 12 | wstop:TopicSetType TopicSet[1][1] 13 | xs:anyURI TopicExpressionDialect[1][unbounded] 14 | xs:anyURI MessageContentFilterDialect[1][unbounded] 15 | xs:anyURI ProducerPropertiesFilterDialect[0][unbounded] 16 | xs:anyURI MessageContentSchemaLocation[1][unbounded] 17 | 18 | 故障代码|描述 19 | |没有命令的具体故障! 20 | 21 | 无论TopicSet是固定的或者不固定, 符合ONVIF标准的设备应响应和申报哪个Topic提供和哪个分支(Dialects)支持。 22 | 23 | 以下符合ONVIF标准设备的TopicExpressionDialects是强制性的(请参阅[9.7.3](09.07.03.md)节): 24 | http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete 25 | http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet 26 | 27 | 不支持任何MessageContentFilterDialect的设备应返回单个空url。 28 | 29 | 此规范不要求设备支持任何ProducerPropertiesDialect。 30 | 31 | 第[9.5.4](09.05.04.md)节中介绍的消息内容描述语言允许供应商特定类型的引用。为了缓解这种类型集成到客户端应用程序,GetEventPropertiesResponse应列出所有位置的URI用于描述结构描述文件与MessageContentSchemaLocation元素的通知。该列表应至少包含ONVIF结构描述文件的URI。 32 | 33 | [上一章](09.07.03.md)|[继续阅读](09.09.md) -------------------------------------------------------------------------------- /ebook/09.09.md: -------------------------------------------------------------------------------- 1 | # 9.9 持久通知存储(Persistent notification storage) 2 | 3 | 要确保客户端没有通知丢失,设备可以存储其通知。客户端可以在任何时候对存储通知进行检索。如果设备支持持久通知存储,那么设备应指明PersistentNotificationStorage的功能,请参阅[9.10](09.10.md)节。 4 | 5 | 通知应以正确的顺序、逻辑存储在一个直缓冲区。通知如何及在 何处,这些存储的细节实际上是本规范范围之外的。清除存储通知的策略到获取新的空间也超出了范围。 6 | 7 | [上一章](09.08.md)|[继续阅读](09.10.md) -------------------------------------------------------------------------------- /ebook/09.10.md: -------------------------------------------------------------------------------- 1 | # 9.10 功能(Capabilities) 2 | 3 | 功能反映可选的函数和服务的函数性。信息是静态的,在设备的运行过程中不会改变。以下功能是可用的: 4 | 5 | WSSubscriptionPolicySupport:如果设备支持WS订阅策略,那么根据第9.1.2节进行指示。 6 | WSPullPointSupport:如果设备支持WS拉点(Pull Point),那么根据第9.1.2节进行指示。 7 | WSPausableSubscriptionManagerInterfaceSupport:如果设备支持WS可暂停订阅管理接口,那么根据第9.1.2节进行指示。 8 | MaxNotificationProducers:[WS-BaseNotification]规范中定义的最大支持的通知生产者。 9 | MaxPullPoints:支持的最大数量的通知拉点。 10 | PersistenNotificationStorage:如果设备支持永久通知存储,那么根据第9.9节进行指示。 11 | 12 | ## 表97 获取服务功能(GetServiceCapabilities)命令 13 | 14 | 消息名称|描述 15 | ----|---- 16 | GetServiceCapabilitiesRequest|此消息是空的。 17 | GetServiceCapabilitiesResponse|响应消息功能包含所请求的服务功能,使用层次化XML功能结构。
18 | tev:Capabilities Capabilities[1][1] 19 | 20 | 故障代码|描述 21 | |没有命令的具体故障! 22 | 23 | [上一章](09.09.md)|[继续阅读](09.11.md) -------------------------------------------------------------------------------- /ebook/09.11.md: -------------------------------------------------------------------------------- 1 | # 9.11 SOAP故障消息(SOAP Fault Messages) 2 | 3 | 如果设备出现故障而从客户端或订阅管理器处理[WS-BaseNotification]消息,那么设备应产生一个SOAP 1.2故障消息。 4 | 5 | 6 | 除了一个例外,所有的SOAP 1.2故障消息应根据[WS-BaseNotification]和[WS-Topic]规范产生。所有的故障应使用以下URI的WS-Addressing[动作]的消息寻址属性: 7 | http://www.w3.org/2005/08/addressing/soap/fault 8 | 9 | 此外,错误应该发送一个SOAP接收故障(env:Receiver),HTTP错误代码应为500。 10 | 11 | [上一章](09.10.md)|[继续阅读](09.12.md) -------------------------------------------------------------------------------- /ebook/09.12.01.md: -------------------------------------------------------------------------------- 1 | # 9.12.1 GetEventPropertiesRequest 2 | 3 | ``` 4 | 5 | 8 | 9 | 10 | http://www.onvif.org/ver10/events/wsdl/EventPortType/GetEventPropertiesRequest 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ``` 19 | 20 | [上一章](09.12.md)|[继续阅读](09.12.02.md) -------------------------------------------------------------------------------- /ebook/09.12.02.md: -------------------------------------------------------------------------------- 1 | # 9.12.2 GetEventPropertiesResponse 2 | 3 | 在这个例子中,该设备响应使用ONVIF Topic命名空间(描述可以从http://www.onvif.org/onvif/ver10/topics/topicns.xml下载)。Topic集不随时间和单一的Topic tns1:RuleEngine/LineDetector/Crossed而改变。与此Topic相关的消息包含有VideoSourceConfigurationToken、VideoAnalyticsConfigurationToken和已有交叉线的对象。设备支持两种TopicExpressionDialects。 4 | 5 | ``` 6 | 7 | 14 | 15 | 16 | http://www.onvif.org/ver10/events/wsdl/EventPortType/GetEventPropertiesResponse 17 | 18 | 19 | 20 | 21 | 22 | http://www.onvif.org/onvif/ver10/topics/topicns.xml 23 | 24 | 25 | true 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet 46 | 47 | 48 | http://docs.oasis-open.org/wsnt/t-1/TopicExpression/ConcreteSet 49 | 50 | 51 | http://www.onvif.org/ver10/tev/messageContentFilter/ItemFilter 52 | 53 | 54 | http://www.onvif.org/onvif/ver10/schema/onvif.xsd 55 | 56 | 57 | 58 | 59 | ``` 60 | 61 | [上一章](09.12.01.md)|[继续阅读](09.12.03.md) -------------------------------------------------------------------------------- /ebook/09.12.03.md: -------------------------------------------------------------------------------- 1 | # 9.12.3 CreatePullPointSubscription 2 | 3 | 客户端可以从TopicProperties订阅指定的通知信息。下面的XML示例显示了设备规则引擎订阅所产生的通知。客户端只对引用名为VideoAnalyticsConfiguration、值为"2"和名为VideoSourceConfiguration、值为"1"的通知起反应。此订阅有一分钟超时。如果订阅没有明确续订或者不定期拉取消息,那么它将在此时间后自动终止。 4 | 5 | ``` 6 | 7 | 12 | 13 | 14 | http://www.onvif.org/ver10/events/wsdl/EventPortType/CreatePullPointSubscriptionRequest 15 | 16 | 17 | 18 | 19 | 20 | 21 | tns1:RuleEngine//. 22 | 23 | 24 | boolean(//tt:SimpleItem[@Name="VideoAnalyticsConfigurationToken" and @Value="2"]) and boolean(//tt:SimpleItem[@Name="VideoSourceConfigurationToken" and @Value="1"]) 25 | 26 | 27 | 28 | PT1M 29 | 30 | 31 | 32 | 33 | ``` 34 | 35 | [上一章](09.12.02.md)|[继续阅读](09.12.04.md) -------------------------------------------------------------------------------- /ebook/09.12.04.md: -------------------------------------------------------------------------------- 1 | # 9.12.4 CreatePullPointSubscriptionResponse 2 | 3 | 当设备接受订阅时,它返回http://160.10.64.10/Subscription?Idx=0 URI代表该订阅的端点。此外,客户端被告知有关设备的CurrentTime和创建订阅的TerminationTime。 4 | 5 | ``` 6 | 7 | 11 | 12 | 13 | http://www.onvif.org/ver10/events/wsdl/EventPortType/CreatePullPointSubscriptionResponse 14 | 15 | 16 | 17 | 18 | 19 | 20 | http://160.10.64.10/Subscription?Idx=0 21 | 22 | 23 | 24 | 2008-10-09T13:52:59 25 | 26 | 27 | 2008-10-09T13:53:59 28 | 29 | 30 | 31 | 32 | ``` 33 | 34 | [上一章](09.12.03.md)|[继续阅读](09.12.05.md) -------------------------------------------------------------------------------- /ebook/09.12.05.md: -------------------------------------------------------------------------------- 1 | # 9.12.5 PullMessagesRequest 2 | 3 | 客户端发送一个PullMessagesRequest到CreatePullPointSubscriptionResponse得到对应于一定的订阅通知的端点。下面的示例请求包含一个5秒的超时和限制响应消息总数为2。 4 | 5 | ``` 6 | 7 | 10 | 11 | 12 | http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesRequest 13 | 14 | 15 | http://160.10.64.10/Subscription?Idx=0 16 | 17 | 18 | 19 | 20 | 21 | PT5S 22 | 23 | 24 | 2 25 | 26 | 27 | 28 | 29 | ``` 30 | 31 | [上一章](09.12.04.md)|[继续阅读](09.12.06.md) -------------------------------------------------------------------------------- /ebook/09.12.06.md: -------------------------------------------------------------------------------- 1 | # 9.12.6 PullMessagesResponse 2 | 3 | 以下PullMessageResponse包含两个匹配订阅的通知。这个响应(Response)告知客户端,两个对象交叉线对应的规则“MyImportantFence1”和“MyImportantFence2”。 4 | 5 | ``` 6 | 7 | 14 | 15 | 16 | http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesResponse 17 | 18 | 19 | 20 | 21 | 22 | 2008-10-10T12:24:58 23 | 24 | 25 | 2008-10-10T12:25:58 26 | 27 | 28 | 29 | tns1:RuleEngine/LineDetector/Crossed 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | tns1:RuleEngine/LineDetector/Crossed 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | ``` 65 | 66 | [上一章](09.12.05.md)|[继续阅读](09.12.07.md) -------------------------------------------------------------------------------- /ebook/09.12.07.md: -------------------------------------------------------------------------------- 1 | # 9.12.7 UnsubscribeRequest 2 | 3 | 客户端可以显示的使用UnsubscribeRequest来终止订阅,那么设备可以立即释放资源。该请求被定向到在CreatePullPointSubscriptionResponse中返回的订阅端点。 4 | 5 | ``` 6 | 7 | 10 | 11 | 12 | http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest 13 | 14 | 15 | http://160.10.64.10/Subscription?Idx=0 16 | 17 | 18 | 19 | 20 | 21 | 22 | ``` 23 | 24 | [上一章](09.12.06.md)|[继续阅读](09.12.08.md) -------------------------------------------------------------------------------- /ebook/09.12.08.md: -------------------------------------------------------------------------------- 1 | # 9.12.8 UnsubscribeResponse 2 | 3 | 一旦设备响应一个UnsubscribeResponse,那么订阅端点将不可用。 4 | 5 | ``` 6 | 7 | 10 | 11 | 12 | http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeResponse 13 | 14 | 15 | 16 | 17 | 18 | 19 | ``` 20 | 21 | [上一章](09.12.07.md)|[继续阅读](09.12.09.md) -------------------------------------------------------------------------------- /ebook/09.12.09.md: -------------------------------------------------------------------------------- 1 | # 9.12.9 BeginOfBuffer 2 | 3 | 每当PullMessages命令尝试读取开始超出缓冲区的消息时上报。 4 | 5 | ``` 6 | Topic: tns1:EventBuffer/Begin 7 | 8 | ``` 9 | 10 | [上一章](09.12.08.md)|[继续阅读](09.13.md) -------------------------------------------------------------------------------- /ebook/09.12.md: -------------------------------------------------------------------------------- 1 | # 9.12 通知示例(Notification example) 2 | 3 | 下面的例子是一个完整的通信模式的通知。它采用了实时的拉点(Pull-Point)通知接口接收通知。 4 | 5 | [上一章](09.11.md)|[继续阅读](09.12.01.md) -------------------------------------------------------------------------------- /ebook/09.13.md: -------------------------------------------------------------------------------- 1 | # 9.13 服务特定的故障代码(Service specific fault codes) 2 | 3 | 事件服务除了那些在[WS-BaseNotification]规范中定义的故障外,不定义任何特定的服务故障。 4 | 5 | [上一章](09.12.md)|[继续阅读](10.00.md) -------------------------------------------------------------------------------- /ebook/10.00.md: -------------------------------------------------------------------------------- 1 | ##安全 2 | 3 | 所有面向网络的信息技术是真实可行的,安全是网络视频通信里最重要的议题。安全威胁取决于应用程序。有些应用程序是最容易受到网络攻击,但其他应用程序不敏感。实施安全对策的成本取决于预防攻击的类型。这意味着,我们无法列举网络视频产品或系统的通用安全标准,但可以尝试在一个在设备符合规范要求的合理的安全级别,去定义基本的安全机制,用来构建安全的网络视频系统。 4 | 5 | 当前规范定义了两个通信级别的安全机制: 6 | * 传输级安全 7 | 8 | * 消息级安全 9 | 10 | 规范采用基于端口的认证机制如下: 11 | * IEEE 802.1X 12 | 13 | [上一节](09.12.13.md) | [继续阅读](10.01.md) 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ebook/10.01.01.md: -------------------------------------------------------------------------------- 1 | ###支持的密码套件 2 | 3 | 支持TLS的设备应支持以下所有密码套件[RFC2246],[RFC3268]: 4 | 5 | * TLS_RSA_WITH_AES_128_CBC_SHA 6 | 7 | * TLS_RSA_WITH_NULL_SHA 8 | 9 | 如果客户端支持TLS,那么它将支持以下密码套件: 10 | 11 | * TLS_RSA_WITH_AES_128_CBC_SHA 12 | 13 | * TLS_RSA_WITH_NULL_SHA 14 | 15 | [上一节](10.01.md) | [继续阅读](10.01.02.md) 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ebook/10.01.02.md: -------------------------------------------------------------------------------- 1 | ###服务器认证 2 | 3 | 支持TLS的设备应支持使用TLS服务器的身份验证。设备应支持X.509服务器证书的处理。RSA密钥长度应至少为1024 bit。 4 | 5 | 客户端应支持使用TLS协议的服务器身份验证。 6 | 7 | 此规范没有提供一个完整的服务器证书的生成和认证机构(CA)模型。但设备证书检索和下载的设备管理命令已经在8.4节定义。 8 | 9 | 服务器的私钥和密钥的安全引导机制的细节在此规范的范围之外。但命令上的密钥生成已经在8.4节定义。 10 | 11 | [上一节](10.01.01.md) | [继续阅读](10.01.03.md) 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ebook/10.01.03.md: -------------------------------------------------------------------------------- 1 | ###客户端认证 2 | 3 | 支持TLS的设备应支持客户端验证。开启或禁用客户端验证的设备管理命令已经在第8.4节中进行了说明。 4 | 5 | 在请求客户端证书[RFC 2246]中,支持TLS的设备应包括RSA证书(例如rsa_sign),并支持RSA客户证书和签名验证。 6 | 7 | 客户端应该支持客户端验证。如果客户端支持身份验证,客户端应支持RSA的客户证书和签名,并且RSA密钥长度至少1024 bit。 8 | 9 | 受信任的CA引导机制在此规范的范围之外。未来的版本可能会定义标准化的引导机制。 10 | 11 | [上一节](10.01.02.md) | [继续阅读](10.02.md) 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ebook/10.01.md: -------------------------------------------------------------------------------- 1 | ###传输级安全 2 | 3 | 传输级安全旨在保护客户端和服务器之间的数据传输。传输层安全(TLS)作为一种成熟的加密传输连接,提供了通信安全的基本水平标准。TLS协议允许配置相互身份验证传输会话以及维护传输的保密性和完整性。 4 | 5 | 设备按照规范必须支持TLS 1.0 [RFC 2246] 和相关协议。同时必须支持TLS 1.1 [ 4346 ] RFC。可以选择性的支持TLS1.2 [RFC 5246] 6 | 7 | 设备应该支持TLS协议来保护它提供的所有的ONVIF服务,设备还应支持TLS来为在第11节中定义的RTP/RTSP / HTTPS隧道方案的媒体流提供保护。这个规范概括了一个特定的TLS实现,和其他相关规范可以使用TLS。 8 | 9 | 客户端必须支持TLS1.0[RFC 2246]和TLS1.1[RFC4346],可以选择性的支持TLS1.2 [RFC5246]。 10 | 11 | [上一节](10.00.md) | [继续阅读](10.01.01.md) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ebook/10.02.md: -------------------------------------------------------------------------------- 1 | ###消息级安全 2 | 3 | TLS支持点至点的保密性和完整性。但Web服务允许与中间节点更加灵活的通信模式。在这种情况下,TLS不能提供终端到终端的安全性。此外,为了确保用于web服务的用户的权限控制在命令级别上,需要对每个SOAP消息的源进行验证。在5.12节中对如何进行验证进行了简单的介绍。 4 | 5 | [上一节](10.01.03.md) | [继续阅读](10.03.md) 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ebook/10.03.md: -------------------------------------------------------------------------------- 1 | ###IEEE 802.1X 2 | 3 | IEEE802.1X是基于端口的网络访问控制的IEEE标准,目的是提供身份验证和授权设备连接到LAN端口。它是利用IEEE802 LAN基础设施接入的物理特性,提供认证和授权的设备连接到LAN端口的点对点连接特性的一种手段,防止在接入该端口的情况下,身份验证和授权过程失败。 4 | 5 | 此规范推荐采用基于端口的IEEE 802.1X标准来验证无线网络。支持IEEE802.1X的设备必须支持EAP-PEAP/MSCHAPv2类型作为支持EAP方法。设备还支持其他的EAP方法,如EAP-MD5,EAP-TLS,EAP-TTLS类型。 6 | 7 | 规范定义了一套配置和管理IEEE802.1X配置的命令,请参见8.4.7节。 8 | 9 | [上一节](10.02.md) 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ebook/images/7-4-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/7-4-1-1.png -------------------------------------------------------------------------------- /ebook/images/7-4-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/7-4-1-2.png -------------------------------------------------------------------------------- /ebook/images/7-4-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/7-4-1-3.png -------------------------------------------------------------------------------- /ebook/images/7-4-1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/7-4-1-4.png -------------------------------------------------------------------------------- /ebook/images/7-4-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/7-4-3.png -------------------------------------------------------------------------------- /ebook/images/7-4-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/7-4-4.png -------------------------------------------------------------------------------- /ebook/images/figure_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/figure_1.png -------------------------------------------------------------------------------- /ebook/images/figure_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/figure_10.png -------------------------------------------------------------------------------- /ebook/images/figure_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/figure_2.png -------------------------------------------------------------------------------- /ebook/images/figure_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimxl/onvif-core-specification-cn/c07c7cb3cf802264e8c7e4121a63475de5cd75d6/ebook/images/figure_9.png -------------------------------------------------------------------------------- /ebook/preface.md: -------------------------------------------------------------------------------- 1 | 1. [范围](01.0.md) 2 | 2. [引用标准](02.0.md) 3 | 3. [术语和定义](03.0.md) 4 | - [3.1 定义](03.0.md) 5 | - [3.2 缩写](03.0.md) 6 | 4. [概述](04.00.md) 7 | - [4.1 Web Services](04.01.md) 8 | - [4.2 IP 配置](04.02.md) 9 | - [4.3 设备发现](04.03.md) 10 | - [4.4 配置文件](04.04.md) 11 | - [4.5 设备管理](04.05.md) 12 | - [4.5.1 能力](04.05.01.md) 13 | - [4.5.2 网络](04.05.02.md) 14 | - [4.5.3 系统](04.05.03.md) 15 | - [4.5.4 检索系统信息](04.05.04.md) 16 | - [4.5.5 固件升级](04.05.05.md) 17 | - [4.5.6 系统恢复](04.05.06.md) 18 | - [4.5.7 安全](04.05.07.md) 19 | 5. [Web Services 框架](05.00.md) 20 | - [5.1 Services 概述](05.01.md) 21 | - [5.1.1 服务依赖](05.01.01.md) 22 | - [5.2 WSDL 概述](05.02.md) 23 | - [5.3 名字空间](05.03.md) 24 | - [5.4 类型](05.04.md) 25 | - [5.5 消息](05.05.md) 26 | - [5.6 操作](05.06.md) 27 | - [5.6.1 单向操作类型](05.06.01.md) 28 | - [5.6.2 应答操作类型](05.06.02.md) 29 | - [5.7 端口类型](05.07.md) 30 | - [5.8 绑定](05.08.md) 31 | - [5.9 端口](05.09.md) 32 | - [5.10 服务](05.10.md) 33 | - [5.11 错误处理](05.11.md) 34 | - [5.11.1 协议错误](05.11.01.md) 35 | - [5.11.2 SOAP错误](05.11.02.md) 36 | - [5.12 安全](05.12.md) 37 | - [5.12.1 用户基本访问控制](05.12.01.md) 38 | - [5.12.2 用户令牌配置](05.12.02.md) 39 | - [5.13 字符串表示](05.13.md) 40 | - [5.13.1 字符设置](05.13.01.md) 41 | - [5.13.2 字符串中允许的字符](05.13.02.md) 42 | 6. [IP配置](06.00.md) 43 | 7. [设备发现](07.00.md) 44 | - [7.1 概述](07.01.md) 45 | - [7.2 操作模式](07.02.md) 46 | - [7.3 发现定义](07.03.00.md) 47 | - [7.3.1 Endpoint参考](07.03.01.md) 48 | - [7.3.2 Hello](07.03.02.md) 49 | - [7.3.3 探测以及探测匹配](07.03.03.md) 50 | - [7.3.4 解决以及解决匹配](07.03.04.md) 51 | - [7.3.5 Bye](07.03.05.md) 52 | - [7.3.6 SOAP失败消息](07.03.06.md) 53 | - [7.4 远程发现扩展](07.04.00.md) 54 | - [7.4.1 网络场景](07.04.01.md) 55 | - [7.4.2 发现代理](07.04.02.md) 56 | - [7.4.3 远程Hello和探测行为](07.04.03.md) 57 | - [7.4.4 客户端行为](07.04.04.md) 58 | - [7.4.5 安全](07.04.05.md) 59 | 8. [设备管理](08.00.md) 60 | - [8.1 能力](08.01.md) 61 | - [8.1.1 获取WSDL URL连接](08.01.01.md) 62 | - [8.1.2 能力交换](08.01.02.md) 63 | - [8.2 网络](08.02.md) 64 | - [8.2.1 获取主机名](08.02.01.md) 65 | - [8.2.2 设置主机名](08.02.02md) 66 | - [8.2.3 从DHCP设置主机名](08.02.03md) 67 | - [8.2.4 获取DNS设置](08.02.04.md) 68 | - [8.2.5 设置DNS](08.02.05.md) 69 | - [8.2.6 获取NTP设置](08.02.06.md) 70 | - [8.2.7 设置NTP](08.02.07.md) 71 | - [8.2.8 获取DDNS设置 ](08.02.08.md) 72 | - [8.2.9 设置DDNS](08.02.09.md) 73 | - [8.2.10 获取网络接口设置](08.02.10.md) 74 | - [8.2.11 设置网络接口](08.02.11.md) 75 | - [8.2.12 获取网络协议](08.02.12.md) 76 | - [8.2.13 设置网络协议](08.02.13.md) 77 | - [8.2.14 获取默认路由](08.02.14.md) 78 | - [8.2.15 设置默认路由](08.02.15.md) 79 | - [8.2.16 获取0配置](08.02.16.md) 80 | - [8.2.17 设置0配置](08.02.17.md) 81 | - [8.2.18 获取IP过滤](08.02.18.md) 82 | - [8.2.19 设置IP过滤](08.02.19.md) 83 | - [8.2.20 添加IP过滤地址](08.02.20.md) 84 | - [8.2.21 删除一个ip过滤地址](08.02.21.md) 85 | - [8.2.22 IEEE 802.11配置](08.02.22.md) 86 | - [8.3 系统](08.03.01.md) 87 | - [8.3.1 设备信息](08.03.01.md) 88 | - [8.3.2 获取系统URI](08.03.02.md) 89 | - [8.3.3 备份](08.03.03.md) 90 | - [8.3.3 恢复出厂](08.03.04.md) 91 | - [8.3.5 开始系统恢复](08.03.05.md) 92 | - [8.3.6 获取系统日期和时间](08.03.06.md) 93 | - [8.3.7 设置系统日期和时间](08.03.07.md) 94 | - [8.3.8 出厂默认](08.03.08.md) 95 | - [8.3.9 固件升级](08.03.09.md) 96 | - [8.3.10 开始系统固件升级](08.03.10.md) 97 | - [8.3.11 获取系统日志](08.03.11.md) 98 | - [8.3.12 获取支持信息](08.03.12.md) 99 | - [8.3.13 重启](08.03.13.md) 100 | - [8.3.14 获取范围参数](08.03.14.md) 101 | - [8.3.15 设置范围参数](08.03.15.md) 102 | - [8.3.16 添加范围参数](08.03.16.md) 103 | - [8.3.17 删除范围参数](08.03.17.md) 104 | - [8.3.18 获取发现模式](08.03.18.md) 105 | - [8.3.19 设置发现模式](08.03.19.md) 106 | - [8.3.20 获取远程发现模式](08.03.20.md) 107 | - [8.3.21 设置远程发现模式](08.03.21.md) 108 | - [8.3.22 获取远程DP地址](08.03.21.md) 109 | - [8.3.23 设置远程DP地址](08.03.23.md) 110 | - [8.4 安全](08.04.00.md) 111 | - [8.4.1 获取访问策略](08.04.01.md) 112 | - [8.4.2 设置访问策略](08.04.02.md) 113 | - [8.4.3 获取用户列表](08.04.03.md) 114 | - [8.4.4 创建用户](08.04.04.md) 115 | - [8.4.5 删除用户](08.04.05.md) 116 | - [8.4.6 获取用户设置](08.04.06.md) 117 | - [8.4.7 IEEE 802.1X配置](08.04.07.md) 118 | - [8.4.8 创建自签署证书](08.04.08.md) 119 | - [8.4.9 获取证书](08.04.09.md) 120 | - [8.4.10 获取CA证书](08.04.10.md) 121 | - [8.4.11 获取证书状态](08.04.11.md) 122 | - [8.4.12 设置证书状态](08.04.12.md) 123 | - [8.4.13 获取证书请求](08.04.13.md) 124 | - [8.4.14 获取客户端证书状态](08.04.14.md) 125 | - [8.4.15 设置客户端证书状态](08.04.15.md) 126 | - [8.4.16 加载设备证书](08.04.16.md) 127 | - [8.4.17 加载设备私有key相关的证书](08.04.17.md) 128 | - [8.4.18 获取证书信息请求](08.04.18.md) 129 | - [8.4.19 加载CA证书](08.04.19.md) 130 | - [8.4.20 删除证书](08.04.20.md) 131 | - [8.4.21 获取远程用户](08.04.21.md) 132 | - [8.4.22 设置远程用户](08.04.22.md) 133 | - [8.4.23 获取endpoint引用](08.04.23.md) 134 | - 8.5 输入/输出(I/O) 135 | - 8.5.1 获取继电器输出 136 | - 8.5.2 设置继电器输出配置 137 | - 8.5.3 触发继电器输出 138 | - 8.6 辅助操作 139 | - 8.7 监控事件 140 | - 8.7.1 处理器使用率 141 | - 8.7.2 连接状态 142 | - 8.7.3 上传状态 143 | - 8.7.4 处理时间 144 | - 8.7.5 环境条件 145 | - 8.7.6 电池容量 146 | - 8.7.7 设备管理 147 | - 8.8 服务特定错误号 148 | 9. [事件处理](09.00.md) 149 | - [9.1 基本通知接口](09.01.md) 150 | - [9.1.1 介绍](09.01.01.md) 151 | - [9.1.2 依赖](09.01.02.md) 152 | - [9.2 实时推送通知接口](09.02.md) 153 | - [9.2.1 创建推送点订阅](09.02.01.md) 154 | - [9.2.2 推送消息](09.02.02.md) 155 | - [9.2.3 寻找](09.02.03.md) 156 | - [9.3 通知流接口](09.03.md) 157 | - [9.4 属性](09.04.md) 158 | - [9.4.1 属性示例](09.04.01.md) 159 | - [9.5 通知结构](09.05.md) 160 | - [9.5.1 通知信息](09.05.01.md) 161 | - [9.5.2 消息格式](09.05.02.md) 162 | - [9.5.3 属性示例,继续](09.05.03.md) 163 | - [9.5.4 消息描述语言](09.05.04.md) 164 | - [9.5.5 消息内容过滤](09.05.05.md) 165 | - [9.6 同步点](09.06.md) 166 | - [9.7 顶层结构](09.07.md) 167 | - [9.7.1 ONVIF 顶层命名空间](09.07.01.md) 168 | - [9.7.2 顶层类型信息](09.07.02.md) 169 | - [9.7.3 顶层过滤器](09.07.03.md) 170 | - [9.8 获取事件属性](09.08.md) 171 | - [9.9 持久通知存储](09.09.md) 172 | - [9.10 能力](09.10.md) 173 | - [9.11 SOAP失败消息](09.11.md) 174 | - [9.12 通知示例](09.12.md) 175 | - [9.12.1 GetEventPropertiesRequest](09.12.01.md) 176 | - [9.12.2 GetEventPropertiesResponse](09.12.02.md) 177 | - [9.12.3 CreatePullPointSubscription](09.12.03.md) 178 | - [9.12.4 CreatePullPointSubscriptionResponse](09.12.04.md) 179 | - [9.12.5 PullMessagesRequest](09.12.05.md) 180 | - [9.12.6 PullMessageResponse](09.12.06.md) 181 | - [9.12.7 UnsubscribeRequest](09.12.07.md) 182 | - [9.12.8 UnsubscribeResponse](09.12.08.md) 183 | - [9.12.9 BeginOfBuffer](09.12.09.md) 184 | - [9.13 服务特定错误号](09.13.md) 185 | 10. [安全](10.00.md) 186 | - [10.1 传送级别安全](10.01.md) 187 | - [10.1.1 支持密码套件](10.01.01.md) 188 | - [10.1.2 服务权限认证](10.01.02.md) 189 | - [10.1.3 客户权限认证](10.01.03.md) 190 | - [10.2 消息级别安全](10.02.md) 191 | - [10.3 IEEE 802.1X](10.03.md) 192 | 193 | - 附录 A. GetCapabilities功能列表 194 | - 附录 B. 参考书 195 | - 附录 C. GetServices Response能力示例 196 | - 附录 D. 修订历史 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | --------------------------------------------------------------------------------