GB28181定义了基于SIP架构的视频监控互联规范,而对于多数私有协议实现的监控如果想接入SIP架构,就要借助网关,GB28181规范了实现 SIP 监控域与非SIP 监控域互联。基本注册采用IETF RFC 3261规定的基于数字摘要的挑战应答式安全技术进行注册,具体注册流程:

   

注册流程说明:

a) 1:SIP 代理向SIP 服务器发送 Register 请求;

b) 2:SIP 服务器向 SIP 代理发送响应401, 并在响应的消息头 WWW_Authenticate 字段中给出

适合SIP 代理的认证体制和参数;

c) 3:SIP 代理重新向SIP 服务器发送 Register 请求, 在请求的 Authorization 字段给出信任书,

包含认证信息;

d) 4:SIP 服务器对请求进行验证, 如果检查出 SIP 代理身份合法, 向 SIP 代理发送成功响应

200 OK, 如果身份不合法则发送拒绝服务应答。

注:“SIP代理”这里指的UAC(User Agent Client) "SIP服务器"这里指的是UAS(User Agent Server)

当UAS接收到消息后,回送一个401消息“Unauthorized”在消息包头添加如下字段

WWW-Authenticate: Digest realm="3402000000",qop="auth",nonce="52d33cd23eea89a9563618cdf31d720a"

其中realm指的是域名(根据自己项目的实际情况填写),Nonces是随机数

具体过程

第一步   UAC -->UAS

UAC向UAS注册,下面是注册消息

REGISTER sip:34020000002000000001@36.103.240.124:5060 SIP/2.0

Via: SIP/2.0/UDP 10.10.0.10:7081;rport;branch=z9hG4bK460266740

From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216

To: <sip:34020000002000000001@10.10.0.10:7081>

Call-ID: 1688820428

CSeq: 1 REGISTER

Contact: <sip:34020000002000000001@10.10.0.10:7081>

Max-Forwards: 70

User-Agent:

Expires: 3600

Content-Length: 0

字段说明:

请求起始行:表示UAC向IP地址为36.103.240.124的服务器发起注册,SIP版本号为2.0

From字段:指明该REGISTER请求消息由UAS(IP地址:36.103.240.124)控制的UAC发起的。

To字段:指明REGISTER请求接收方的地址。此时REGISTER请求的接收方为IP地址为36.103.240.124的UAS。(这个值和To头域的值相同,除非这个请求是第三方发起的注册请求。)

Call-ID字段:UAC发出的给某个注册服务器(registrar)的所有注册请求都应该有相同的Call-ID头域值。如果相同的客户端用了不同的Call-ID值,注册服务器(registrar)就不能检测是否一个REGISTER请求由于延时的关系导致了故障。

Cseq字段:Cseq值保证了REGISTER请求的正确顺序。一个UA为每一个具备相同的Call-ID的REGISTER请求顺序递增这个Cseq字段。

Contact字段:在REGISTER请求中的Contact字段指明用户可达位置。

Expires字段:表示该登记生存期为3600s。

Content-Length字段:表明此请求消息消息体的长度为空,即此消息不带会话描述。

第二步  UAS -->UAC

UAS返回401 Unauthorized(无权限)响应。表明要求对UAC进行用户认证,并且通过WWW-Authenticate字段携带UAS支持的认证方式,产生本次认证的nonce

其中完整的401消息如下:

SIP/2.0 401 Unauthorized

Via: SIP/2.0/UDP 10.10.0.10:7081;rport=13674;received=183.246.6.38;branch=z9hG4bK460266740

From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216

To: <sip:34020000002000000001@10.10.0.10:7081>;tag=104095562

CSeq: 1 REGISTER

Call-ID: 1688820428

User-Agent: LiveGBS

Contact: <sip:34020000002000000001@192.168.1.174:5060>

Content-Length: 0

WWW-Authenticate: Digest realm="3402000000",qop="auth",nonce="52d33cd23eea89a9563618cdf31d720a"

第三步 UAC -->UAS

UAC根据服务的要求提供“用户认证”,携带WWW-Authorization字段如下

REGISTER sip:34020000002000000001@36.103.240.124:5060 SIP/2.0

Via: SIP/2.0/UDP 10.10.0.10:7081;rport;branch=z9hG4bK1563079982

From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216

To: <sip:34020000002000000001@10.10.0.10:7081>

Call-ID: 1688820428

CSeq: 2 REGISTER

Contact: <sip:34020000002000000001@10.10.0.10:7081>

Authorization: Digest username="admin", realm="3402000000", nonce="7b20d1b1b55992de6c71aabfab4eec5d", uri="sip:34020000002000000001@36.103.240.124:5060", response="f447801943a6991ed97c612597362bfe", algorithm=MD5, cnonce="0a4f113b", qop=auth, nc=00000001

Max-Forwards: 70

User-Agent:

Expires: 3600

Content-Length: 0

算法验证如下:

HA1=MD5(username:realm:passwd) #username和realm在字段“Authorization”中可以找到,passwd这个是由客户端和服务器协商得到的,一般情况下UAC端存一个UAS也知道的密码就行了HA2=MD5(Method:Uri) #Method一般有INVITE, ACK, OPTIONS, BYE, CANCEL, REGISTER;Uri可以在字段“Authorization”找到response = MD5(HA1:nonce:HA2)

第四步 UAS-->UAC

UAS收到UAC的注册请求,首先检查NONCE的正确性,如果和在401 Unauthorized响应中产生的NONCE相同,则通过。否则,直接返回失败。然后,UAS会根据NONCE、用户名、密码(服务器端可以根据本地用户信息获取用户的密码)、URI等采用和终端相同的算法生成RESPONSE,并且对此RESPONSE和请求消息中的RESPONSE进行比较,如果二者一致则用户认证成功,否则认证失败。此时,UAS返回200 OK响应消息,表明终端认证成功。

UAS返回200 OK 消息,到此时UAC注册完成,UAC的REGISTER消息发送结束;

注销过程

注销过程流程图

图二  注销流程示意图

注销流程图描述如下:

a) 1:SIP 代理向SIP 服务器发送 Register 请求,Expires 字段的值为0, 表示SIP 代理要注销;

b) 2:SIP 服务器向 SIP 代理发送响应401, 并在响应的消息头 WWW_Authenticate 字段中给出

适合SIP 代理的认证体制和参数;

c) 3:SIP 代理重新向SIP 服务器发送 Register 请求, 在请求的 Authorization 字段给出信任书,

包含认证信息,Expires 字段的值为0;

d) 4:SIP 服务器对请求进行验证, 如果检查出 SIP 代理身份合法, 向 SIP 代理发送成功响应

200 OK, 如果身份不合法则发送拒绝服务应答。

SIP之GB28181注册、注销详解相关推荐

  1. 2016年最新苹果开发者账号注册流程详解(公司账号篇)

    随着苹果规定金融/理财类应用需要使用公司开发者账号上传,并进一步加大对此类问题的审核力度,公司开发者账号开始呈现出炙手可热之势! 不过,公司开发者账号的注册流程着实复杂--不仅要填写公司的D-U-N- ...

  2. 2016 年最新苹果开发者账号注册流程详解(个人账号篇)

    苹果宣布 Search Ads 重磅上线的同时,也向开发者传达了一个好消息:申请注册 Search Ads 即可获得 100 美元账户余额.虽然竞价广告目前仅限美国区,但此项福利却在中国区引发了一场规 ...

  3. 第二章 Roboguide安装及注册步骤详解

    Roboguide安装及注册步骤详解 一.安装前需要了解的 1.软件获取途径 2.版本说明 3.系统软件及硬件需求 二.安装软件 1.安装前准备工作 2.软件安装步骤 3.注册软件 4.卸载软件 5. ...

  4. 黎明杀机手游注册登陆详解

    黎明杀机手游注册登陆详解 1.OurPlay2.酷酷跑3.Qoo APP 1.打开Qoo APP 下载黎明杀机 2.打开酷酷跑,申请账号 2.1先点击一件安装再进行点击申请 3.打开OurPlay 将 ...

  5. PayPal注册申请详解

    PayPal 是现在网络上最流行的免费信用卡,也是最流行的网上银行,作为ebay的旗下公司,PayPal成立于 1998 年,它使拥有电子邮件地址的任何个人或企业能够安全.便捷.迅速地在线收款和付款. ...

  6. Maltego注册问题详解

    今天继续给大家介绍渗透测试相关知识,本文主要内容Maltego注册问题详解. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 一.Maltego ...

  7. lol澳洲服务器如何注册账号,云顶之弈手游澳服怎么进 LOL手游澳服账号注册流程详解[多图]...

    云顶之弈手游澳服作为国内玩家比较多的服务器,不仅可以偶遇到国内好友还可以遇到国际友人哦,那么具体服务器进入方法就让安族66来告诉大家吧~ LOL手游澳服账号注册流程详解 [云顶之弈手游已经开放注册 如 ...

  8. Android客户端实现注册/登录详解(一)

    前言 我们在开发安卓App时难免要与服务器打交道,尤其是对于用户账号信息的注册与登录更是每个android开发人员必须掌握的技能,本文将对客户端的注册/登录功能的实现进行分析,不到之处还请指出. 在这 ...

  9. 思科考试注册流程详解----VUE考点现场演示-晁海江-专题视频课程

    思科考试注册流程详解----VUE考点现场演示-5201人已学习 课程介绍         更多课程,请百度搜索"晁海江". 备注:注册过程中,使用的姓名.电话.思科ID等,均是临 ...

  10. 2022苹果开发者账号注册流程详解(公司账号)

    公司开发者账号注册流程详解: 一.注册公司账号前需要提供的信息: 1)邮箱,邮箱密码: 2)微信或支付宝或储蓄卡或者信用卡(原来是必须有需要带国际支付能力银行卡(visa银行卡,实际上是转账到国外的苹 ...

最新文章

  1. 持续集成Java覆盖率合并
  2. 学习之旅——工作记录日志2017.7.09
  3. 【TypeScript系列教程04】编译参数
  4. python @cached_property
  5. Vue学习笔记之11-slot插槽
  6. 压缩工具,神奇的RAID以及逻辑卷管理的PE,PA,LV,VG
  7. 一文了解Android游戏SDK开发
  8. 良心安利东方 rpg游戏制作大师素材网站
  9. 一文了解多肽修饰(环肽合成,多肽磷酸化标记,多肽蛋白偶联,甲基化及其它烷基化修饰,荧光修饰)定制合成技术介绍
  10. Python的优点和缺点
  11. 中国天气预报数据API收集
  12. TCL中变量嵌套使用
  13. 1259_STM32CubeProgrammer的简单使用
  14. 家居家装行业人群洞察白皮书.pdf
  15. 戴尔服务器显示器是什么接口,2012 年生产的 Dell Precision 工作站支持多少台显示器以及此类工作站上的显卡接口是什么样子?...
  16. 怎么关闭win7计算机一键还原系统,Win7卸载一键还原功能后还会保留在开机启动菜单中怎么办...
  17. idea创建python spark项目的步骤_Spark入门(二)--如何用Idea运行我们的Spark项目
  18. soliworks motion中测量角位移
  19. 【Go】三、函数与方法
  20. MTK的MT6582平台如何进u-boot amp;amp; 修改波特率为115200

热门文章

  1. QQ资料卡筛选 达人|性别|地区|年龄 易语言制作
  2. 基于线性常微分方程的我国某省艾滋病传播的数学模型建立和预测分析
  3. Apache NiFi深度扩展
  4. 微星GP63 (006CN) 拆机加固态
  5. java 时间轴_如何通过Java实现时间轴过程解析
  6. 安徽科技学院 2014-2015-2学期计算机14级12班《C语言程序设计II》期末考试
  7. 西门子网关SIMATIC iot2000
  8. Java一维数组与二维数组的转换
  9. 【PS-选区编辑】变换选区、反向命令、建立工作路径
  10. 织梦dedecms调用文章发布时间的几种方法汇总