好的,阿杰,我帮你整理一份 深入浅出 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 应用场景

  1. VoIP:IP 电话、软电话
  2. 视频会议:WebRTC 信令
  3. 即时消息:XMPP + SIP 结合
  4. 企业通信:PBX 系统(Asterisk)

10️⃣ 总结

  • SIP 只负责信令,音视频通过 RTP 传输
  • 核心理念:建立会话 → 管理会话 → 结束会话
  • 特点
    • 文本协议,易调试
    • 灵活可扩展
    • 与 HTTP、SMTP 类似

一句话大白话总结

SIP 就是 IP 网络中的“电话交换机协议”,告诉对方“我要和你通话、你响了没、挂掉了”,但不传声音本身。