GB28181教程————SIP基础
GB28181教程————SIP基础
这一篇的目标是:读完 15 分钟后,随手拿起 Wireshark 抓到的任何一条国标 SIP 包,都能一眼看懂它在干嘛,99% 的注册不上、心跳超时、点播失败问题都能秒定位。
1. 先一句话说清楚:SIP 到底是个啥?
SIP(Session Initiation Protocol)本身是一个 信令协议,只负责“建会话、改会话、拆会话”,真正的视频数据根本不走它。
类比成生活:
SIP 就像电话的拨号、振铃、挂机过程,真正说话的声音不是通过电话线里的拨号音传的。
在国标里,SIP 就是公安平台和几万个摄像头之间那根“指挥电话线”。
官方文档: RFC 3261 主协议https://www.ietf.org/rfc/rfc3261.txt
国标真正用到的只有 RFC 3261 的前 20 页 + 后面几段,后面 300 页基本可以无视。
2. 一条 SIP 消息长什么样?(国标真实样子)
下面是一条最常见的设备注册包(已删掉部分无关字段),以后 99% 的包都长这样:
1 | REGISTER sip:34020000002000000001@3402000000 SIP/2.0 |
三分钟记住结构(以后看包只看这四部分):
| 部分 | 内容 | 国标里必看字段 |
|---|---|---|
| 请求行/状态行 | REGISTER sip:… SIP/2.0 | 方法名 + 设备ID/平台ID |
| 头字段 | Via/From/To/Call-ID/CSeq | 这 5 个字段几乎每包都有,排错全靠它们 |
| 特殊头字段 | Expires/Authorization/Contact | 注册专属 |
| 消息体 | 通常为空,或 MANSCDP+xml | MESSAGE/INFO 才会带 XML 体 |
3. GB28181 里真正会用到的 7 个 SIP 方法(其余全部忽略)
| 序号 | 方法 | 用途 | 出现频率 | 必须掌握度 |
|---|---|---|---|---|
| 1 | REGISTER | 设备/下级平台注册、心跳保活 | ★★★★★ | 100% |
| 2 | MESSAGE | 目录通知、告警、Keepalive、保活、心跳 | ★★★★★ | 100% |
| 3 | INVITE | 实时点播、历史回放、语音对讲发起 | ★★★★★ | 100% |
| 4 | ACK | INVITE 的最终确认 | ★★★★☆ | 必须会 |
| 5 | BYE | 主动结束会话(停止点播) | ★★★★☆ | 必须会 |
| 6 | INFO | 云台控制、预置位、拖动回放、设备控制 | ★★★★☆ | 必须会 |
| 7 | CANCEL | 取消正在建立的 INVITE(很少用) | ★☆☆☆☆ | 了解即可 |
4. 国标里最最最重要的 12 个头字段(直接背下来)
| 头字段 | 含义 | 国标里典型值/注意点 |
|---|---|---|
| Via | 路径记录,防止环路 | 必须带 branch 参数 |
| From / To | 谁发的、发给谁 | 带 tag 参数,tag 用来区分会话 |
| Call-ID | 一次会话的全局唯一ID | 同一设备所有包 Call-ID 都一样(极重要!!) |
| CSeq | 序列号,同一个 Call-ID 下递增 | 排错神器 |
| Expires | REGISTER 注册有效期(秒) | 国标强制 3600 秒,平台可通过 200 OK 修改 |
| Contact | 设备联系地址 | 必须带 IP 和端口 |
| Authorization | 注册认证头(MD5) | 第一次 401 后必须带 |
| Max-Forwards | 最大跳数,防止环路 | 国标一般填 70 |
| Content-Type | 消息体类型 | application/MANSCDP+xml(国标专用XML) |
| Content-Length | 消息体长度 | 必须准确 |
| Subject | 只在 INVITE 里出现(点播用) | 格式:通道ID:SSRC,流类型,0,0 |
| User-Agent | 设备标识 | 随便填,建议带设备型号 |
5. 传输层:TCP vs UDP vs 长连接 vs 短连接(国标强制答案)
| 项目 | 国标推荐/强制要求 | 实际项目建议 |
|---|---|---|
| 传输协议 | 强烈推荐 TCP(2016/2022 版都写死了) | 99.9% 项目强制走 TCP |
| 是否长连接 | 必须长连接(注册成功后不能断) | 一条 TCP 连接要扛几千路信令 |
| 端口 | 默认 5060(TCP) | 可改,但甲方基本不让改 |
| UDP 场景 | 几乎没人用(丢包严重、防火墙穿透难) | 除非极端特殊情况,否则别用 |
6. 国标里最常见的 3 种包类型(抓包只看这三种)
- 注册类:REGISTER(带 Authorization)
- 目录/告警类:MESSAGE(带 MANSCDP+xml)
- 点播类:INVITE → 200 OK → ACK(带 SDP)
记住这三板斧,90% 的国标问题都能在 Wireshark 里 10 秒定位。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小鱼吃猫!

