SIP协议是什么、怎么工作、和RTP、H.323、IMS又有什么关系
2025年07月21日 浏览:
SIP,全称 Session Initiation Protocol(会话发起协议),是IETF制定的应用层信令协议,用来创建、修改、终止多媒体会话,比如语音、视频通话、即时通信等。
它不是用来传输语音数据的,而是像导演一样组织整个会话流程:谁发起、谁接收、在哪发、用什么方式通信。

你可以这样理解:
SIP = 电话的信令系统
RTP = 真正传送语音的通道
SIP只负责信号流程的“建呼、挂断、转接”等调度工作!
SIP 与 VoIP、RTP、H.323、IMS 的关系
很多人容易搞混,下面我们做个速查对比表:

简单来说:
• SIP主要用于现代互联网语音/视频呼叫的“建呼流程”; • RTP和RTCP负责“声音流”的传输与质量反馈; • H.323 是 SIP 的“老大哥”,但已经被SIP替代; • IMS 是运营商VoLTE、5G通话核心网的骨架,底层离不开 SIP。
SIP的工作原理
SIP 用客户端-服务器架构工作,但它本身是去中心化的协议,既可以点对点,也可以通过代理服务器中转。

SIP建呼流程
假设 Alice 要给 Bob 打网络电话,SIP流程大致如下:
Alice (UA) → SIP Proxy → Bob (UA)
UA = User Agent,用户代理,即软电话、APP等
建立通话的全过程(INVITE流程):
1. INVITE:Alice 发起呼叫请求,包含Bob的地址、音频参数(如Codec)。 2. 100 Trying:SIP代理服务器回应,正在尝试联系Bob。 3. 180 Ringing:Bob设备开始响铃。 4. 200 OK:Bob接听。 5. ACK:Alice确认会话建立。 6. 通话建立(开始走RTP)!
如果通话结束:
• BYE:任意一方发送挂断请求; • 200 OK:对方确认挂断。
整个流程就是一个状态机式的请求-响应模型,典型的文本信令,结构清晰、容易扩展。
SIP协议的数据结构和消息详解
SIP 借鉴了 HTTP 协议的设计,纯文本结构,容易调试、易扩展,具备强大的人类可读性。
常见的 SIP 方法(Method):

一个典型的 INVITE 消息示例:
INVITE sip:bob@voip.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060
From: Alice <sip:alice@voip.com>
To: Bob <sip:bob@voip.com>
Call-ID: 12345678@192.168.1.100
CSeq: 1 INVITE
Contact: <sip:alice@192.168.1.100>
Content-Type: application/sdp
Content-Length: 151
v=0
o=alice 2890844526 2890844526 IN IP4 192.168.1.100
s=-
c=IN IP4 192.168.1.100
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
后面的 application/sdp 是媒体协商用的SDP格式,用于告诉对方“我支持什么编码,在哪个端口接收RTP”。
SIP的核心角色
SIP 网络虽然可以点对点,但一般都有以下几个核心组成:

在实际部署中,常见的软交换平台(如FreeSWITCH、Asterisk)会将这些功能集成在一起。
SIP与传统电话的区别

所以说,SIP = 电信版的“HTTP”协议 + 通话调度器,它让“电话”真正进入了互联网时代。
SIP协议的优势与挑战
优势:
• 文本协议,可读性强,易调试; • 支持 NAT 穿透(配合STUN/ICE); • 功能强大,扩展灵活(支持IMS、VoLTE); • 适配多媒体场景:语音、视频、会议、消息一网打尽。
挑战:
• 不自带加密,需配合 TLS / SRTP; • NAT 和防火墙穿透仍需额外机制; • 不适合极端实时场景(如战术指挥网); • 协议实现差异,兼容性成问题(不同厂商间)。
你用到 SIP 却不自知
你可能没听过SIP,但你用过它的产品!
• 运营商VoLTE语音:手机拨打VoLTE电话,底层就是IMS+SIP; • 企业IP电话(PBX):Cisco CallManager、Yealink IP Phone、ZOOM Phone; • 软电话APP:如Linphone、Zoiper、MicroSIP 等 SIP 客户端; • 呼叫中心系统:客服、400电话后台全靠 SIP; • 视频会议:不少硬件终端(Polycom、Cisco Webex)支持 SIP 视频会议。
如何用 Wireshark 抓取 SIP 信令?
1. 使用 Wireshark抓取UDP 5060端口;2. 过滤表达式: sip || rtp;3. 找到 INVITE、ACK、BYE等信令;4. 配合 Telephony -> VoIP Calls分析整个通话流程;5. 可重建 RTP 音频流,播放通话内容。
这在企业排查语音通话掉线、回铃异常时非常实用!




