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

news2024/11/27 16:37:48

概念

  • 使用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.coloradmin.cn/o/968757.html

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

相关文章

core dump管理在linux中的前世今生

目录 一、什么是core dump? 二、coredump是怎么来的? 三、怎么限制coredump文件的产生? ulimit 半永久限制 永久限制 四、从源码分析如何对coredump文件的名字和路径管理 命名 管理 一些问题的答案 1、为什么新的ubuntu不能产生c…

ApplicationRunner、InitializingBean、@PostConstruct 执行顺序

概述 开发中可能会有这样的场景,需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。两个启动加载接口分别是:CommandLineRunner和ApplicationRunner。Spring 提…

【高阶数据结构】红黑树 {概念及性质;红黑树节点的定义;红黑树插入操作详细解释;红黑树的验证}

红黑树 一、红黑树的概念 红黑树(Red Black Tree) 是一种自平衡二叉查找树,在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有…

【多线程案例】生产者消费者模型(堵塞队列)

文章目录 1. 什么是堵塞队列?2. 堵塞队列的方法3. 生产者消费者模型4. 自己实现堵塞队列 1. 什么是堵塞队列? 堵塞队列也是队列,故遵循先进先出的原则。但堵塞队列是一种线程安全的数据结构,可以避免线程安全问题,当队…

数学建模--时间序列预测模型的七种经典算法的Python实现

目录 1.开篇版权提示 2.时间序列介绍 3.项目数据处理 4.项目数据划分可视化 5.时间预测序列经典算法1:朴素法 6.时间预测序列经典算法2: 简单平均法 7.时间预测序列经典算法3:移动平均法 8.时间预测序列经典算法4:简单指…

pytest自动化测试两种执行环境切换的解决方案

目录 一、痛点分析 方法一:Hook方法pytest_addoption注册命令行参数 1、Hook方法注解 2、使用方法 方法二:使用插件pytest-base-url进行命令行传参 一、痛点分析 在实际企业的项目中,自动化测试的代码往往需要在不同的环境中进行切换&am…

windows-nessus安装

1、下载 路径:Download Tenable Nessus | Tenable 2、获取active code 路径:Tenable Nessus Essentials Vulnerability Scanner | Tenable 3、安装 challenge code:上图马赛克位置 active code:获取active code第二张图片的马赛克位置 4、激活 5、安装…

Docker从认识到实践再到底层原理(三)|Docker在Centos7环境下的安装和配置

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

企业架构LNMP学习笔记10

1、Nginx版本,在实际的业务场景中,需要使用软件新版本的功能、特性。就需要对原有软件进行升级或重装系统。 Nginx的版本需要升级迭代。那么如何进行升级呢?线上服务器如何升级,我们选择稳定版本。 从nginx的1.14版本升级到ngin…

【数据库】MySQL基础知识全解

系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于拓跋阿秀、小林coding等大佬博客进行的,每个知识点的修…

计算机的存储规则(ASCII,GBK,Unicode)

不爱生姜不吃醋⭐️⭐️⭐️ 声明: 🌻本文写的是关于计算机的存储规则 ❗️ 🌻看完之后觉得不错的话麻烦动动小手点个赞赞吧👍 🌻如果本文有什么错误的话欢迎在评论区中指正哦💗 🌻与其明天开始…

count(1)与count(*)的区别、ROUND函数

部分问题 1. count(1)与count(*)的区别2. ROUND函数3. SQL19 分组过滤练习题4. Mysql bigdecimal 与 float的区别5. 隐式内连接与显示内连接 (INNER可省略) 1. count(1)与count(*)的区别 COUNT(*)和COUNT(1)有什么区别? count(*)包括了所有…

【网络】路由配置实践1

网络实践-路由篇 本文使用vmware虚拟机进行路由表配置实践,通过配置路由表连接两个不同的网络,不涉及路由协议,全手动配置,旨在理解路由表的概念 网络规划: 准备三台centos7虚拟机,其中一台作为路由设备ro…

【个人博客系统网站】注册与登录 · 加盐加密验密算法 · 上传头像

【JavaEE】进阶 个人博客系统(3) 文章目录 【JavaEE】进阶 个人博客系统(3)1. 加盐加密验密算法原理1.1 md5加密1.2 md5验密1.3 md5缺漏1.4 加盐加密1.5 后端的盐值拼接约定1.6 代码实现1.6.1 加密1.6.2 验密1.6.3 测试 2. 博客…

探究IP路由的工作原理与路由表查找规则

文章目录 一、定义二、IP连通的前提三、路由表1. 作用2. 路由表字段内容3. 路由表查表规则4. 路由信息的来源5. 路由表写表规则6. 路由优先级 四、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、定义 路由器是网络中负责将数据报文在不同IP网段…

css 左右宽固定,中间自适应——双飞翼布局

最近面试的时候遇到一个提问说,如何做到一个左右宽度固定,中间自适应的布局,我的答案不重要,重要的是不是面试官想听到的答案,这样问大概率他想听到的答案一定是双飞翼布局,所以今天就手敲一个双飞翼布局让…

设计模式-原则篇-01.开闭原则

简介 ​ 可以把设计模式理解为一套比较成熟并且成体系的建筑图纸,经过多次编码检验目前看来使用效果还不错的软件设计方案。适用的场景也比较广泛,在使用具体的设计模式之前先要学习软件设计的基础 “软件设计原则”,后面的23个设计模式都是…

Mybatis学习|多对一、一对多

有多个学生,没个学生都对应(关联)了一个老师,这叫(多对一) 对于每个老师而言,每个老师都有N个学生(学生集合),这叫(一对多) 测试环境…

《TCP/IP网络编程》阅读笔记--Socket类型及协议设置

目录 1--协议的定义 2--Socket的创建 2-1--协议族(Protocol Family) 2-2--Socket类型(Type) 3--Linux下实现TCP Socket 3-1--服务器端 3-2--客户端 3-3--编译运行 4--Windows下实现 TCP Socket 4-1--TCP服务端 4-2--TC…

B. Consecutive Points Segment - 思维

分析: 思维还是不够发散,太容易一种方法走到死了,一直在模拟一直WA,看完题解发现一个数组的整段所有数组共同移动的距离最多只能是2,那么a[0]到a[n - 1]就是之间应该有多少个数,然后本来需要n个连续的数&am…