GB28181协议
GB28181协议会话通道实际上使用的是SIP协议,并且在 SIP 的基础上规定了监控联网的标准化使用方式;具体厂商还可能增加私有扩展。SIP是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。SIP中一个比较重要的概念是用户代理(User Agent),指的是一个SIP逻辑网络端点,用于创建、发送、接收SIP消息并管理一个SIP会话。SIP用户代理又可分为用户代理客户端UAC(User Agent Client)和用户代理服务端UAS(User Agent Server)。UAC创建并发送SIP请求,UAS接收处理SIP请求,发送SIP响应。SIP协议会与许多其它的协议协同工作,如SIP报文内容发送会话描述协议(Session Description Protocol,SDP)4,SDP协议描述了会话所使用流媒体细节,如:使用哪个IP端口,采用哪种编解码器等等。SIP的一个典型用途是:SIP会话传输一些简单的经过报文的实时传输协议流,RTP本身才是语音或视频的载体。在GB28181协议中,联网系统在进行视音频传输及控制时应建立两个传输通道: 会话通道和媒体流通道。会话通道用于在设备之间建立会话并传输系统控制命令; 媒体流通道用于传输视音频数据, 经过压缩编码的视音频流采用流媒体协议RTP/RTCP传输。GB28181协议中具体通信协议结构图如下图所示:

GB28181 中 SIP 用到的核心能力
| SIP能力 | GB28181用途 |
|---|---|
| REGISTER | 设备注册 |
| MESSAGE | 心跳 / 目录 / 状态 / 控制 |
| INVITE | 实时预览 / 回放 |
| ACK | 确认媒体会话建立 |
| BYE | 结束预览 |
| CANCEL | 取消 INVITE |
| OPTIONS | 能力探测(部分平台) |
| 401/407 | Digest认证 |
| NOTIFY | 订阅通知(扩展/部分平台) |
REGISTER
注册流程
- SIP代理向SIP服务器发送Register(未鉴权)请求;
- SIP服务器向SIP代理发送响应401,并在响应的消息头WWW-Authenticate字段中给出适合SIP代理的认证体制和参数;
- SIP代理重新向SIP服务器发送REGISTER请求, 在请求的Authorization字段给出信任书,包含认证信息;
- SIP服务器对请求进行验证,如果检查出SIP代理身份合法,向SIP代理发送成功响应200OK,如果身份不合法则发送拒绝服务应答。
sequenceDiagram
participant Proxy as SIP代理
participant Server as SIP服务器
Proxy->>Server: 1. REGISTER
Server-->>Proxy: 2. 401 Unauthorized
Proxy->>Server: 3. REGISTER(携带认证信息)
Server-->>Proxy: 4. 200 OK
MESSAGE
当UA(User Agent)发现工作异常时, 应立即向本SIP监控域的SIP服务器发送状态信息; 无异常时,应定时向本SIP监控域的SIP服务器发送状态信息。状态信息报送采用IETF RFC 3428 中定义的方法 MESSAGE实现。通过周期性的状态信息报送,实现注册服务器与源设备之间的状态检测即心跳机制。心跳发送方、接收方需统一配置“心跳间隔”参数,按照“心跳间隔”定时发送心跳消息,默认心跳间隔60s。心跳发送方、接收方需统一配置“心跳超时次数”参数,心跳消息连续超时达到“心跳超时次数”则认为对方下线,默认心跳超时次数3次。心跳接收方在心跳发送方上线状态下检测到心跳消息连续超时达到商定次数则认为心跳发送方离线; 心跳发送方在心跳接收方上线状态下检测到心跳消息响应消息连续超时达到商定次数则认为心跳接收方离线。
sequenceDiagram
participant Proxy as SIP代理
participant Server as SIP服务器
Proxy->>Server: 1. MESSAGE (状态信息报送)
Server->>Proxy: 2. 200 OK
SIP文本分析
REGISTER文本
SIP代理向SIP服务器发送:
1:REGISTER sip:41010500002000000001@192.168.10.27:8116 SIP/2.0
2:Via: SIP/2.0/UDP 192.168.2.179:5060;rport;branch=z9hG4bK1527517184
3:From: <sip:41010500001110000001@192.168.2.179:5060>;tag=1219350858
4:To: <sip:41010500001110000001@192.168.2.179:5060>
5:Call-ID: f3g4h51806249538@192.168.2.179
6:CSeq: 1 REGISTER
7:Contact: <sip:41010500001110000001@192.168.2.179:5060>
8:Max-Forwards: 70
9:User-Agent: VCP MWARE
10:Expires: 3600
RegMode: DEVICE;Describe=IPC2A5I-IR6-AUF40-B-DT;Register;DevVer=default
ReplaceDescribe: IPC2A5I-IR6-AUF40-B-DT;ProductId=defaultProductId;RegionCode=DT;Vendor=UNIVIEW;Resolve=HIC3MP;Ptzfg=0;;SnmpVer=v3
X-GB-Ver: 3.0
Ability: UCSStore=0
Content-Length: 0
第一行:REGISTER sip:41010500002000000001@192.168.10.27:8116 SIP/2.0
国标ID指的是由中心编码(8位) 、行业编码(2位) 、类型编码(3位)和序号(7位)四个码段共20位十进制数字字符构成
41010500 00 200 0000001是SIP服务器的国标ID ,SIP/2.0指的是SIP协议版本。
第二行:Via: SIP/2.0/UDP 192.168.2.179:5060;rport;branch=z9hG4bK327447864
Via 用于响应路由和事务匹配。branch 通常以
z9hG4bK开头;同一请求重传保留原 branch,CANCEL 和非 2xx 的 ACK 还有复用规则,并非每条报文都生成新值。branch 也不要求通过“加密 To/From”等字段生成。UDP 下,rport 配合 received 可让响应返回请求实际来源的 IP 和端口,见 RFC 3581。
第三行:From:<sip:41010500001110000001@192.168.2.179:5060>;tag=1219350858
From 表示请求发起者的逻辑身份。tag 与 Call-ID、对端 tag 一起参与对话标识,不是身份鉴权凭据;鉴权使用 Authorization 等机制。
第四行:To: <sip:41010500001110000001@192.168.2.179:5060>
To头在SIP协议中是为了标明请求接收方的逻辑标识的,在GB28181协议中填写的是发送请求的设备国标ID和域国标ID信息。
第五行:Call-ID: f3g4h51806249538@192.168.2.179
Call-ID 用于关联相关消息;对话由 Call-ID 和本地、远端 tag 共同标识。REGISTER 不建立 dialog,其刷新请求也可复用 Call-ID。
第六行:CSeq: 2 REGISTER
CSeq 由序号和方法组成,序号小于 2^31。同一请求的重传保持原 CSeq;发起新的注册请求(包括鉴权重试)应按规则递增。ACK 和 CANCEL 的序号与对应 INVITE 相同,但方法字段分别为 ACK、CANCEL。
第七行:Contact: <sip:41010500001110000001@192.168.2.179:5060>
Contact 表示可到达该 UA 的联系 URI;REGISTER 用它建立注册绑定,对话中可用作后续请求的目标。响应通常沿 Via 路由,不是按 Contact 返回。
第八行:Max-Forwards: 70
Max-Forwards 限制请求可经过的代理跳数;示例值为 70,标准字段名是 Max-Forwards。
第九行:User-Agent: VCP MWARE
User-Agent头用于设置关于UA的信息,用户可以自定义
第十行:Expires: 3600
REGISTER 中的 Expires 表示希望注册绑定保持有效的秒数;最终接受的有效期以服务器响应为准,不是请求的网络超时时间。
第11行:Content-Length: 0
Content-Length 表示消息体的字节数,消息体不一定是 SDP,也可以是 XML 等。此 REGISTER 没有消息体,所以为 0。
MESSAGE文本
MESSAGE消息头 Content-type 头为 Content-type: Application/MANSCDP+xml。状态信息报送命令采用MANSCDP(监控报警联网系统控制描述协议,Monitoringand Alarming Network System Control Description Protocol)协议格式定义, 详细描述见GB/T 28181—2016中A.2.5状态信息报送。状态信息报送命令应包括命令类型(CmdType)、设备/系统编码(DeviceID)、是否正常工作(Status)等, 采用MESSAGE方法的消息体携带。Message消息的成功和错误应答均无消息体,下面是 DeviceInfo 查询请求示例,不是心跳,也不是 200 OK 响应;Content-Length 应按实际编码后的消息体字节数计算:
MESSAGE sip:41010500001110000001@192.168.2.179:5060 SIP/2.0
Call-ID: b6e51d3973e35d9a21a3a324789e3ebd@192.168.10.27
CSeq: 2 MESSAGE
From: <sip:41010500002000000001@4101050000>;tag=ac22a981778c40849a827b1e0246715f
To: <sip:41010500001110000001@192.168.2.179:5060>
Via: SIP/2.0/UDP 192.168.10.27:8116;branch=z9hG4bK3242685359;rport
Max-Forwards: 70
User-Agent: WVP-Pro v2.7.4.2026-06-02T16:15:21+08:00
Content-Type: Application/MANSCDP+xml
Content-Length: 151
<?xml version="1.0" encoding="GB2312"?>
<Query>
<CmdType>DeviceInfo</CmdType>
<SN>353602</SN>
<DeviceID>41010500001110000001</DeviceID>
</Query>
NVR 作为视频代理网关
- 对内(局域网):它管理着一大堆摄像头
- 对外(国标网):它把自己伪装成一个“大号的摄像头客户端”注册到 WVP 平台。
以下为一种常见的“平台控制 + 独立媒体接收端”流程。HTTP/API 调用属于实现细节;GB28181 的 SIP 会话建立在平台与设备之间,普通 Web 播放器不必作为 SIP UA。
sequenceDiagram
participant Web as Web 播放器
participant Platform as 平台 SIP UA
participant Media as 媒体接收端
participant Device as IPC/NVR SIP UA
Web->>Platform: 请求点播(平台 API)
Platform->>Media: 准备媒体接收地址与端口
Platform->>Device: INVITE(SDP offer)
Device-->>Platform: 200 OK(SDP answer)
Platform->>Device: ACK
Device-->>Media: 按协商结果发送媒体流
Media-->>Web: 按播放器协议输出媒体
Web->>Platform: 请求停止(平台 API)
Platform->>Device: BYE
Device-->>Platform: 200 OK
Platform->>Media: 释放接收资源