GB28181学习(二)——注册与注销

概念

  • 使用REGISTER方法进行注册和注销;
  • 注册和注销应进行认证,认证方式应支持数字摘要认证方式,高安全级别的宜支持数字证书认证;
  • 注册成后,SIP代理在注册过期时间到来之前,应向注册服务器进行刷新注册;
  • 若注册失败,应在不短于60s的时间间隔内重新发起注册;
  • 系统、设备注册过期时间可配置;
  • SIP代理是否注册成功决定SIP服务器在离线状态;
  • 对于处于开启网络地址转换(NAT)功能的路由器内侧的SIP代理,应该支持使用TCP发起SIP注册,并在注册成功后保持TCP连接不关闭,SIP代理及服务器在该TCP通道里发送所有请求及响应SIP消息。若TCP通道断开,则认为SIP代理异常掉线,SIP代理应在一定时间间隔内重新发起注册;

流程

注册

在这里插入图片描述

注册流程:

  1. SIP代理向SIP服务器发送REGISTER请求;
  2. SIP服务器向SIP代理响应401(未认证),返回的消息头里给出适合SIP代理的认证体制和参数;
  3. SIP代理重新向SIP服务器发送REGISTER请求,在请求的Authorization中给出信任书,包括认证信息;
  4. SIP服务对请求进行认证,如检测SIP代理身份合法,向SIP代理响应200 OK,如检测不合法发送拒绝服务应答;

注销

在这里插入图片描述

注销流程:

  1. SIP代理向SIP服务器发送REGISTER请求,Expires字段的值为0,表示SIP代理要注销
  2. SIP服务器向SIP代理响应401(未认证),返回的消息头里给出适合SIP代理的认证体制和参数;
  3. SIP代理重新向SIP服务器发送REGISTER请求,在请求的Authorization中给出信任书,包括认证信息,Expires字段的值为0;
  4. SIP服务对请求进行认证,如检测SIP代理身份合法,向SIP代理响应200 OK,如检测不合法发送拒绝服务应答;

注册重定向(2022新增)

在这里插入图片描述

重定向流程:

  1. 设备或系统段的SIP代理向SIP重定向服务器发送REGISTER请求;
  2. SIP重定向服务器向SIP代理响应401(未认证),返回的消息头里给出适合SIP代理的认证体制和参数;
  3. SIP代理重新向SIP重定向服务器发送REGISTER请求,在请求的Authorization中给出信任书,包括认证信息;
  4. SIP重定向服务器验证请求,如检测SIP代理身份合法,SIP重定向服务器根据内部策略选择设备需注册的SIP服务器A,并回复注册请求响应302,响应消息携带Contact头域和Expires,Contact格式为sip:SIP服务器A编码@目的IP地址端口,在此头域中携带SIP服务A的地址
  5. SIP代理收到302重定向请求后,向SIP服务器A发起注册;
  6. 6~8:完成注册重定向流程后,后续所有请求和响应动作由SIP服务器A和设备直接完成;
  7. 重定向后,如果SIP代理检测SIP服务器A离线或注册被SIP服务器拒绝,SIP代理应重新执行注册重定向流程,向SIP重定向服务器发起注册请求

状态信息报送(包括心跳检测)

要求

  1. 当原设备发现工作异常时,应立即向本SIP监控域的SIP服务器发送状态信息;
  2. 无异常时,定时向本SIP监控域的SIP服务器发送状态信息;
  3. 状态信息报送采用MESSGAE方法;
  4. SIP设备宜在状态信息中携带故障子设备描述信息;
  5. 通过周期性的状态信息报送,实现注册服务器与原设备之间的状态检测,即心跳机制;
  6. 心跳发送发、接收方需统一配置心跳间隔参数,安装心跳间隔定时发送心跳消息,默认心跳间隔为60s;
  7. 心跳发送方、接收方需统一配置心跳超时次数参数,心跳消息连续超时达到心跳超时次数则认为对方下线,默认心跳超时次数为3次;
  8. 心跳接收方在心跳发送方上线状态下,检测到心跳消息连续超时达到配置次数则心跳发送方离线;
  9. 心跳发送方在心跳接收方上线状态下,检测不到心跳响应消息连续超时达到配置次数则认为心跳接收方离线;

流程

在这里插入图片描述

心跳流程:

  1. 源设备向SIP服务器发送设备状态信息报送命令,采用MESSAGE方法携带;
  2. SIP服务器收到命令后返回200 OK;

测试

准备

1)一台支持国标的海康设备;

2)自研的客户端界面程序+SIP服务端程序;

设备配置

在这里插入图片描述

如图为海康设备网页端配置,主要关注以下几个配置项:

  1. 本地SIP端口:默认5060,相机针对GB28181协议开放的通信端口;
  2. 传输协议:支持UDP和TCP协议;
  3. 勾选“启动”按钮,启用GB28181-2016协议;
  4. SIP服务器ID:服务器标识,详见GB28181协议定义;
  5. SIP服务域:SIP服务器ID的前10位;
  6. SIP服务器地址:SIP服务所在机器的IP地址
  7. SIP服务端口:SIP服务端口
启用GB28181后,设备定期对外发送REGISTER命令,如无服务端连接,由ICMP协议返回464目标不可达,抓包如下所示:

在这里插入图片描述

REGISTER命令分析

部分命令分析:

  1. 传输协议为UDP;
  2. 注册命令基于**SIP协议(Session Initiation Protocol)**传输;
  3. 注册命令的method为REGISTER;
  4. Expires:注册有效期,默认3600秒;

代码架构

在这里插入图片描述

工程目前主要分为3部分:

1)tinyXml:编译为静态库,用于xml解析。TinyXml是一个c++的xml解析库,是一个基于DOM模型、非验证的轻量级解释器;

2)mysipsdk:编译为动态库,基于开源库pjsip做二次封装,供客户端使用;

3)GB28181Client:基于qt开发的界面客户端,依赖于mysipsdk.dll;

界面展示

在这里插入图片描述

抓包分析

程序启动后,输入端口、域名等信息,点击连接,抓包可查看注册成功。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring——Spring Boot基础

文章目录 第一个helloword项目新建 Spring Boot 项目Spring Boot 项目结构分析SpringBootApplication 注解分析新建一个 Controller大功告成,运行项目 简而言之,从本质上来说,Spring Boot 就是 Spring,它做了那些没有它你自己也会去做的 Spri…

java-参数传递机制

java参数传递机制都是值传递。 基本类型参数传输都是数据值。 传递到方法中的值是拷贝后的值。 引用类型参数传输的都是地址值。 如果是数组的参数传递,那么是引用传递(本质上还是值传递,但是由于数组的值传递是传递数组的内存地址&#xf…

探索OLED透明屏的优缺点:引领科技未来的革命性突破

OLED透明屏作为一项革命性的创新技术,其令人惊叹的透明度和柔性性能引起了全球范围内的关注。 然而,了解OLED透明屏的优缺点对于我们全面认识其在科技未来中的地位至关重要。 今天,尼伽将深入探讨OLED透明屏的优势和限制,并借助…

spring boot项目生成容器并运行

一个安静的周末,shigen又睡懒觉了,上次说的拖延症的惩罚来了:早晚各100个健腹轮练习,早上的已经完成了。今天的文章来的有点晚,但是依旧保持质量。 springboot项目生成容器并运行 背景 将springboot项目打包成jar包&…

chatgpt谈论日本排放污水事件

W...Y的主页 😊 代码仓库分享 💕 近日,世界发生了让人义愤填膺的时间——日本排放核污水。这件事情是那么的突然且不计后果,海洋是我们全人类共同的财产,而日本却想用自己一己私欲将全人类的安全置之度外&#xff0c…

Mysql 性能分析 explain、Describe

通常 多表查询 比 子查询效率更高一些, 数据搜索引擎 如果子查询能转换城成多表查询,会自动转换。 explain 、describe 语法结构 explain select_options | update_options | insert_options | replace_options 或 describe select_options | update…

java反编译工具jd-gui使用

文章目录 一、JD-GUI介绍二、下载三、安装四、使用教程五、免责声明摘抄 一、JD-GUI介绍 JD-GUI是一个独立的图形实用程序,显示“.class”文件的Java源代码。 使用JD-GUI浏览重构的源代码,以便即时访问方法和字段。 二、下载 MAC安装包:ht…

安防视频监控/视频集中存储/云存储平台EasyCVR无法播放HLS协议该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

学习周报9.3

文章目录 前言文献阅读一摘要挑战基于时间序列的 GAN 分类 文献阅读二摘要介绍提出的模型:时间序列GAN (TimeGAN) 代码学习总结 前言 本周阅读两篇文献,文献一是一篇时序生成方面的综述,主要了解基于时间序列 的GAN主要分类以及时间序列GAN方面面临的一…

MAC M2芯片执行yolov8 + deepsort 实现目标跟踪

MAC M2芯片执行yolov8 deepsort 实现目标跟踪 MAC M2 YoloX bytetrack实现目标跟踪 实验结果 MAC mps显存太小了跑不动 还是得用服务器跑 需要实验室的服务器跑 因为网上花钱跑4天太贵了!!! 步骤过程尝试: 执行mot17 数据集 …

【倒着考虑】CF Edu 21 D

Problem - D - Codeforces 题意: 思路: 这道题需要倒着步骤考虑,就是先去假设已经分为了两部分,这左右两部分的和相等,然后去想上一个步骤 倒着一个步骤后,可以发现这样的性质: Code&#xf…

设计模式之九:迭代器与组合模式

有许多方法可以把对象堆起来成为一个集合(Collection),比如放入数组、堆栈或散列表中。若用户直接从这些数据结构中取出对象,则需要知道具体是存在什么数据结构中(如栈就用peek,数组[])。迭代器…

yolov5的pytorch配置

1. conda create -n rdd38 python3.82、pip install torch1.8.0 torchvision0.9.0 torchaudio0.8.0 -f https://download.pytorch.org/whl/cu113/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple 3、conda install cudatoolkit10.2

2023年03月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:波兰表达式 波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的波兰表示法为+ 2 3。波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的波兰表示法为* + 2 3 4。本题求解…

Ansible自动化运维工具(二)

目录 (6)copy模块 (7)file模块 ​编辑​编辑(8)hostname模块 (9)ping模块 (10)yum 模块 (11)service/system模块 ​编辑 ​…

机器学习笔记之最优化理论与方法(五)凸优化问题(上)

机器学习笔记之最优化理论与方法——凸优化问题[上] 引言凸优化问题的基本定义凸优化定义:示例 凸优化与非凸优化问题的区分局部最优解即全局最优解凸优化问题的最优性条件几种特殊凸问题的最优性条件无约束凸优化等式约束凸优化非负约束凸优化 引言 本节将介绍凸优…

windows11 利用vmware17 安装rocky9操作系统

下载相关软件和镜像 vmware17 下载 下载页面 Download VMware Workstation Pro ​ rocky8镜像下载 官网链接:Rocky Linux 下载页面 Download Rocky | Rocky Linux 点击Minimal下载 安装rocky9 选择镜像文件,点击下一步 点击下一步 启动虚拟机 选…

C++面试题(期)-数据库(二)

目录 1.3 事务 1.3.1 说一说你对数据库事务的了解 1.3.2 事务有哪几种类型,它们之间有什么区别? 1.3.3 MySQL的ACID特性分别是怎么实现的? 1.3.4 谈谈MySQL的事务隔离级别 1.3.5 MySQL的事务隔离级别是怎么实现的? 1.3.6 事…

Windows和Linux环境中安装Zookeeper具体操作

1.Windows环境中安装Zookeeper 1.1 下载Zookeeper安装包 ZooKeeper官网下载地址 建议下载稳定版本的 下载后进行解压后得到如下文件: 1.2 修改本地配置文件 进入解压后的目录,将zoo_example.cfg复制一份并重命名为zoo.cfg,如图所示: 打…

uniapp 微信小程序添加隐私保护指引

隐私弹窗&#xff1a; <uni-popup ref"popup"><view class"popupWrap"><view class"popupTxt">在你使用【最美万年历】之前&#xff0c;请仔细阅读<text class"blueColor" click"handleOpenPrivacyContract…