好的,阿杰,我帮你整理一份 深入浅出 SIP(Session Initiation Protocol, 会话发起协议) 的教程,用大白话讲概念、组成、流程、信令和典型应用。
SIP 协议深入浅出指南
1️⃣ SIP 是什么?
- SIP = Session Initiation Protocol
- 作用:在 IP 网络中建立、管理和终止多媒体会话(如语音、视频、即时消息)
- 类似角色:
- SIP = 电话交换系统 + 通讯协议
- 负责“打电话、接电话、挂电话”,但不传输声音,只负责 信令控制
2️⃣ SIP 主要特点
特点 | 说明 |
---|---|
文本协议 | 类似 HTTP/SMTP,可读性强 |
应用层协议 | TCP/UDP 或 SCTP 上运行 |
端到端通信 | 端点直接通信,服务器只做信令转发 |
可扩展 | 支持视频、音频、即时消息、会议控制 |
3️⃣ SIP 的核心组成
3.1 用户代理(UA, User Agent)
- UA Client (UAC):发起呼叫
- UA Server (UAS):接收呼叫
- 可以是同一台设备,如 IP 电话、软电话
3.2 注册服务器(Registrar)
- 负责用户注册
- 维护用户地址与当前 IP 的映射
- 用户上线时发送 REGISTER 请求
3.3 代理服务器(Proxy)
- 转发 SIP 请求
- 可实现 路由、认证、策略控制
3.4 重定向服务器(Redirect)
- 告诉呼叫方目标地址,呼叫方自己去联系
4️⃣ SIP 信令方法(常用)
方法 | 作用 |
---|---|
INVITE | 发起会话请求 |
ACK | 确认收到最终响应 |
BYE | 结束会话 |
REGISTER | 用户注册到 SIP 服务器 |
OPTIONS | 查询对端能力 |
CANCEL | 取消尚未完成的请求 |
5️⃣ SIP 响应码
- 类似 HTTP 响应码
类别 | 说明 |
---|---|
1xx | 临时响应(100 Trying, 180 Ringing) |
2xx | 成功响应(200 OK) |
3xx | 重定向(301 Moved Permanently) |
4xx | 客户端错误(404 Not Found, 486 Busy Here) |
5xx | 服务器错误(500 Internal Server Error) |
6xx | 全局失败(603 Decline) |
6️⃣ SIP 会话流程(典型呼叫)
6.1 注册流程
UAC --> REGISTER --> SIP服务器
SIP服务器 --> 200 OK --> UAC
- 用户上线时告诉服务器自己的位置(IP + SIP URI)
6.2 呼叫建立(点对点语音)
UAC ---> INVITE ---> UAS
UAS ---> 100 Trying ---> UAC
UAS ---> 180 Ringing ---> UAC
UAS ---> 200 OK ---> UAC
UAC ---> ACK ---> UAS
- 100 Trying:请求处理中
- 180 Ringing:对方响铃
- 200 OK:对方接听
- ACK:确认收到 OK,正式开始会话
6.3 会话结束
UAC/UAS ---> BYE ---> 对端
对端 ---> 200 OK ---> 发起方
- 双方会话结束
7️⃣ SIP 消息结构(文本示例)
7.1 请求
INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
From: Alice <sip:alice@atlanta.com>;tag=1928301774
To: Bob <sip:bob@biloxi.com>
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: 142
- 类似 HTTP 请求
- 包含 请求行、头部、消息体
7.2 响应
SIP/2.0 200 OK
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
From: Alice <sip:alice@atlanta.com>;tag=1928301774
To: Bob <sip:bob@biloxi.com>;tag=314159
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:bob@biloxi.com>
Content-Type: application/sdp
Content-Length: 131
- 响应码 + 描述
- 包含 Via、From、To、Call-ID 等字段保证通信对应
8️⃣ SIP URI
- 类似邮箱地址,用来标识用户
sip:alice@atlanta.com
- 格式:
sip:用户名@域名
- 可携带端口、参数等
9️⃣ SIP 应用场景
- VoIP:IP 电话、软电话
- 视频会议:WebRTC 信令
- 即时消息:XMPP + SIP 结合
- 企业通信:PBX 系统(Asterisk)
10️⃣ 总结
- SIP 只负责信令,音视频通过 RTP 传输
- 核心理念:建立会话 → 管理会话 → 结束会话
- 特点:
- 文本协议,易调试
- 灵活可扩展
- 与 HTTP、SMTP 类似
一句话大白话总结:
SIP 就是 IP 网络中的“电话交换机协议”,告诉对方“我要和你通话、你响了没、挂掉了”,但不传声音本身。
发表回复