文章目录

  • SIP之GB28181注册详解
    • GB28181注册抓包
    • SIP协议PPT
    • SIP注册
    • SIP注册代码示例
  • SIP协议
    • SIP协议简介
      • 首行(start-line)
      • 消息头(message-header)
  • GB28181资料
    • 对接视频(PJSIP)示例
    • eXosip使用示例
    • 报警事件通知和分发
  • GB28181检测
    • 检测工具及模拟设备
    • 基于eXosip的Demo源码
    • osip及eXosip官网文档
  • GB28181的rport机制
  • PJSIP库

SIP之GB28181注册详解

本节引用“天好蓝”的博文《SIP之GB28181注册详解》,部分截图如下:

GB28181注册抓包

百度云盘: https://pan.baidu.com/s/1ALKBJ7xkPjdH8Ya3SqYlbA 提取码: 6qf1 ,内容截图

下面是上面抓包中的内容:

REGISTER sip:130909115229300920@10.64.49.44:7100 SIP/2.0
Via: SIP/2.0/UDP 10.64.49.218:7100;rport;branch=z9hG4bK4162288924
From: <sip:130909113319427420@10.64.49.218:7100>;tag=382068091
To: <sip:130909113319427420@10.64.49.218:7100>
Call-ID: 143225205
CSeq: 1 REGISTER
Contact: <sip:130909113319427420@10.64.49.218:7100>
Max-Forwards: 70
User-Agent: Hikvision
Expires: 7200
Content-Length: 0SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.64.49.218:7100;rport=7100;branch=z9hG4bK4162288924
From: <sip:130909113319427420@10.64.49.218:7100>;tag=382068091
To: <sip:130909113319427420@10.64.49.218:7100>;tag=916944766
Call-ID: 143225205
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="hik", nonce="a8afe6fcbee6331d89d3eb0d3d19ce39", opaque="a853e4f25298413f9bf3a9aa6767857d", algorithm=MD5
User-Agent: Hikvision
Expires: 7200
Content-Length: 0REGISTER sip:130909115229300920@10.64.49.44:7100 SIP/2.0
Via: SIP/2.0/UDP 10.64.49.218:7100;rport;branch=z9hG4bK3997518011
From: <sip:130909113319427420@10.64.49.218:7100>;tag=382068091
To: <sip:130909113319427420@10.64.49.218:7100>
Call-ID: 143225205
CSeq: 2 REGISTER
Contact: <sip:130909113319427420@10.64.49.218:7100>
Authorization: Digest username="admin", realm="hik", nonce="a8afe6fcbee6331d89d3eb0d3d19ce39", uri="sip:130909115229300920@10.64.49.44:7100", response="907ddb1bcc25174d7de4a96c947fb066", algorithm=MD5, opaque="a853e4f25298413f9bf3a9aa6767857d"
Max-Forwards: 70
User-Agent: Hikvision
Expires: 7200
Content-Length: 0SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.64.49.218:7100;rport=7100;branch=z9hG4bK3997518011
From: <sip:130909113319427420@10.64.49.218:7100>;tag=382068091
To: <sip:130909113319427420@10.64.49.218:7100>;tag=705514612
Call-ID: 143225205
CSeq: 2 REGISTER
Contact: <sip:130909113319427420@10.64.49.218:7100>
User-Agent: Hikvision
Date: 2013-09-10T16:01:51
Content-Length: 0

会发现,FromTo怎么一样的呢?与常规的理解不一样,详见下面。

SIP协议PPT

百度文库《4-SIP协议原理》,部分截图,如下:



SIP注册

CSDN博文《SIP注册信令消息示范及解释》,部分截图如下:


SIP注册代码示例

“一步一光年”的博文《sip注册流程》,部分截图如下:

SIP协议

SIP协议简介

SIP(SessionInitiationProtocol,会话发起协议)是由IETF提出的IP电话信令协议.它的主要目的是为了解决IP网中的信令控制,以及同软交换的通信,从而构成下一代的增值业务平台,对电信、银行、金融等行业提供更好的增值业务。SIP协议是一种基于文本的类似于HTTP的协议,报文结构与HTTP也一样,即包括请求行,头域字段,body。报文结构如下:

start-line
message-header
CRLF
[ message-body ]

首行(start-line)

分请求行和状态行。

请求行:请求类型、请求目的地址协议版本号构成。请求类型有:INVITE,ACK,OPTIONS,BYE,CANCEL和REGISTER。

状态行: 是被叫方向主叫方返回的状态信息,如1xx,2xx,3xx,4xx,5xx,6xx。

请求类型:

  • INVITE:用于发起呼叫请求。INVITE消息包括消息头和数据区两部分。INVITE 消息头包含主、被呼叫的地址,呼叫主题和呼叫优先级等信息。数据区则是关于会话媒体的信息,可由会话描述协议SDP 来实现。
  • BYE:当一个用户决定中止会话时,可以使用BYE 来结束会话。
  • OPTIONS:用于询问被叫端的能力信息,但OPTIONS 本身并不能发起呼叫。
  • ACK: 对已收到的消息进行确认应答。
  • REGISTER:用于用户向SIP服务器传送位置信息或地址信息。
  • CANCEL:取消当前的请求,但它并不能中止已经建立的连接。

状态类型:

  • 1xx:临时消息:表示表示请求消息已经收到,后面将继续处理该请求。
  • 2xx:成功消息:表示请求已经被成功的理解、接受或执行。
  • 3xx:重定向消息:表示为了完成请求还需采取更进一步的动作。
  • 4xx:客户机错误:表示该请求含有语法错误或在这个服务器上不能被满足。
  • 5xx:服务器错误:表示该服务器不能处理一个明显有效的请求。
  • 6xx:全局性故障:表示该请求在任何服务器上都不能被实现。

消息头(message-header)

常见消息头:

  • TO: 格式:TO: 显示名<接收者URI>;tag=n,显示名和tag可选。接收者URI是SIP网络种唯一标识接收终端的标识符。例:TO: Name<SIP:caller@WORK.COM>;TAG=11111TO: sip:caller@work.com
  • FROM: 给出标识会话发起者的URI。比如:FROM: sip:caller@work.com;tag=hyh8,tag是必需的。
  • CALL-ID: 用于全局唯一标识正在建立的会话的标识符。 随机数加UAC标识信息。
  • CSeq: 用于标识同一会话中不同事务的序号,通常由一个用作序号的整型数和消息类型组成。整个会话操作过程由不同的事务组成,每一事务所涉及的消息的CSeq序号必须相同。
  • Via: 为响应消息提供传输路径,当请求消息经过每一跳节点时,每一跳节点都把自身的IP地址信息放入顶层Via中。响应消息则沿着请求消息记录下的传输路径反向传输,首先移走指明自身IP地址信息的顶层消息头

注:以上内容参考:https://cloud.tencent.com/developer/article/1183318

GB28181资料

对接视频(PJSIP)示例

博客园,王纲的《GB28181对接视频流》,部分截图如下:

下面介绍下各配置项基本意义:

  • 本地端口:默认为5060,SIP服务发送命令给摄像机时需要知道摄像机GB28181端口号。

  • SIP服务器ID:说简单就是服务器的标识,只不过这个标识有一定的要求,具体请参见《GBT 28181-2016 公共安全视频监控联网系统信息传输、交换、控制技术要求.pdf》,文档百度云盘链接: https://pan.baidu.com/s/1y-ppGH-F9OokjqUcdnLjzg 提取码: mir6

  • SIP服务域:实际就是SIP服务器ID前10位。

  • SIP服务器地址:SIP服务所在机器的IP地址(如果存在多网卡建议将不用的网卡禁用掉)。

  • SIP服务器端口:SIP服务Port,其他SIP服务发送命令到此端口与之通信。

eXosip使用示例

博文《视频监控安防平台-GB28181_2016版-注册、心跳、注销》,部分截图,如下:

博文《基于eXosip的SIP客户端》,部分截图如下:

报警事件通知和分发

文档《GBT 28181-2016 公共安全视频监控联网系统信息传输、交换、控制技术要求(扫描带目录版).pdf》, 提取码: k5ma,相关部分的截图如下:



CSDN博文【GBT28181开发:SIP协议实践】之设备目录查询,部分截图如下:

GB28181检测

检测工具及模拟设备

GB28181-2016 IPC模拟设备 + 自动化测试工具 ,提取码: 3d3v ,截图

检测工具,运行的界面,如下:

模拟被测设备的程序,如果不想改配置件里的IP,将电脑IP改来和配置文件的一样, 如下:

测试时,wireshark抓包,界面如下:

直接在检测工具上,也能看到报文内容,如图:

百度文库,SIP资料,截图如下:

CSDN博文,截图,如下:

基于eXosip的Demo源码

GBT28181网络摄像机模拟器源码.zip 提取码: mehg ,截图如下:

osip及eXosip官网文档

http://www.gnu.org/software/osip/

http://savannah.nongnu.org/projects/exosip/

eXosip2的使用文档,下图红框处:


GB28181的rport机制

https://www.cnblogs.com/xiaOt119/archive/2012/06/11/2545136.html ,截图如下:

PJSIP库

PJSIP是一个开放源代码的SIP协议栈。它支持多种SIP的扩展功能,目前可说算是最流行的sip协议栈之一了。

下面列出其重要的几种优点:

  1. 代码层次非常清晰,从低级到高级都提供了很方便的接口供开发;
  2. 提供相当多的测试用例和一个基于pjsip开发的命令行UA程序供开发人员参考;
  3. 高度的可移殖性,只需简单的编译一次,它能够在多种平台上运行(所有Windows 系统列, Windows Mobile, Linux, 所有Unix 系列, MacOS X, RTEMS, Symbian OS, 等等)。
  4. 极小的内存需求,官方宣称编译后的库,完全实现SIP的功能只需要150K的内存空间,这使得PJISPi不仅仅是嵌入开发的理想平台,并且实用于那些内存运行于极小内存平台的应用,这也意味着极小的用户下载时间。
  5. 高效的性能,这意味着极小的CPU运算需求下能同时实现更多的通话。
  6. 支持多种SIP功能及扩展功能,多种SIP功能和扩展功能,例如多人会话,事件驱动框架,会话控制(presence),即时信息,电话传输,等等在库文件里得以实现。
  7. 丰富的文档资料,对于软件开发人员来说,文档资料从来都是多多益善,因此我们要求PJSIP开发人员提供了大量的极有价值的文档资料供大家使用。

GB28181入门笔记相关推荐

  1. vue router 入门笔记

    vue router 入门笔记 tips: components优先级大于component,即当一个route对象里同时配置了component和components时component视为无效 即 ...

  2. 十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记

    整理 | Jane 编辑 | Just 出品 | AI科技大本营(ID:rgznai100) 近期,梁劲传来该笔记重大更新的消息.<机器学习--从入门到放弃>这本笔记的更新没有停止,在基于 ...

  3. html缩进快捷键_HTML 入门笔记

    HTML 入门笔记 HTML (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言. HTML 可复杂.可简单,一切取决于开发者. 它 ...

  4. Python3入门笔记(1) —— windows安装与运行

    Python3入门笔记(1) -- windows安装与运行 Python的设计哲学是"优雅"."明确"."简单".这也是我喜欢Python ...

  5. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  6. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  7. python3入门与进阶笔记_我的Python3萌新入门笔记

    Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...

  8. MySql入门笔记二~悲催的用户

    这些是当年小弟的MySql学习笔记,木有多么复杂的结构操作,木有多炫丽的语句开发,木有...总之就是木有什么技术含量... 日复一日,彪悍的人生伴随着彪悍的健忘,运维操作为王,好记性不如烂笔头,山水有 ...

  9. 2接口详解_TS入门笔记2——TS接口进阶详解

    TS入门笔记--TS接口进阶详解 一.为什么需要接口? let obj:object; // 定义了一个只能保存对象的变量 // obj = 1; // obj = "123"; ...

最新文章

  1. OO真经——关于面向对象的哲学体系及科学体系的探讨(上)
  2. 使用镜像加速 Rtools 下载与安装
  3. c#)Excel常用格式操作
  4. mysql根据叶子找父亲_MySQL:如何在特定节点中查找叶子
  5. shell之$@和$*的区别
  6. Toast的功能和用法
  7. c语言两个for语句并列执行_C语言两个for语句如何并列编写?
  8. 计算机网络技术通识试题,超星计算机网络技术章节答案
  9. Python爬虫的requests模块你真的学会了吗?来看看这些高级用法!
  10. Atitit.每周计划日程表 流程表v3
  11. 算法笔记_面试_0.刷leetcode_基础知识范围
  12. Qt QString to char*
  13. 计算机编程语言的代码——编码
  14. PPT达人速成记 WPS三步打造演示母版
  15. 深入浅出MFC 书中源码Frame1(C++11)
  16. log4j 日志输出级别
  17. 马云成名前的一些照片
  18. Linux初级入门百篇--lsof工具
  19. 【文献阅读未遂】Understanding data storage and ingestion for large-scale deep recommendation model training
  20. Scala简介以及基本语法(一)

热门文章

  1. C语言 查询ASCII码
  2. wsus服务器不显示客户端,教你如何配置WSUS服务器客户端.pptx
  3. TableLayout中collapseColumns,stretchColumns的介绍
  4. 下载频道2013下半年超人气精华资源汇总---全都是免积分下载。
  5. 罗密欧与朱丽叶的迷宫
  6. 在微型计算机中将数据送到软盘上称为,职称计算机考试备考试题(1)
  7. 获取wangEditor编辑器的内容后,提交表单并获取编辑器的内容呢
  8. vue3 wangEditor
  9. java.time.Year详解
  10. Cadence OrCAD/PSpice 元件库列表及各个库文件详细说明