SIP电话之间能够互相拨号,并不是直接通过SIP传输声音。一次普通SIP呼叫通常分成两部分:先通过SIP信令找到被叫并建立会话,再通过RTP或SRTP传输实际语音。
例如分机1001拨打1002,1001先向SIP服务器或IP PBX发出呼叫请求,系统根据号码找到1002。被叫振铃并接听后,双方确认媒体地址、端口和语音编码,随后开始传输语音。通话结束时,再通过SIP信令释放会话。
几个常见协议在这条链路中的作用并不相同:
- SIP:负责注册、呼叫建立、振铃、接听和挂机等会话控制;
- SDP:用于描述和协商媒体IP、端口、Codec等参数;
- RTP/SRTP:负责通话中的实时语音或视频媒体传输;
- SIP Trunk:用于连接IP PBX与运营商或其他SIP系统,并不是所有SIP呼叫都必须经过SIP Trunk。

SIP呼叫开始前为什么要注册
在常见的企业电话系统中,SIP话机启动以后会先向SIP服务器或IP PBX注册。
例如一台SIP话机配置了分机1001,同时填写服务器地址、认证用户名和密码。话机会通过REGISTER消息把自己的账号和当前联系地址提交给服务器。
SIP话机1001 → REGISTER → SIP服务器/IP PBX → 认证 → 注册成功
注册成功后,服务器就知道1001当前位于哪个IP地址和端口。当其他分机拨打1001时,可以根据注册信息把呼叫请求送到对应终端。
SIP并不要求所有设备都必须注册。两个终端也可以通过IP直呼等方式直接建立会话。但在企业电话、呼叫中心和融合通信项目中,通常会通过IP PBX集中管理号码、权限和呼叫路由。
一个SIP电话是怎么呼起来的
以分机1001拨打1002为例,一次典型呼叫主要经过以下几个步骤。
1. 主叫发送INVITE
用户在1001上拨打1002后,1001向SIP服务器发送INVITE请求。
INVITE中通常会包含主叫、被叫等信息,同时携带SDP,告诉对方自己支持哪些语音编码,以及准备在哪个IP地址和端口接收媒体。
1001 → INVITE → SIP服务器/IP PBX → INVITE → 1002
2. 被叫开始振铃
服务器收到INVITE后,可以先返回100 Trying,表示请求已经收到并正在处理。
1002开始振铃后,通常返回180 Ringing,主叫终端或上级平台可以据此提供回铃提示。
1001 ← 100 Trying
1001 ← 180 Ringing ← 1002
部分系统还会使用183 Session Progress建立早期媒体,例如在正式接听前播放运营商提示音或其他语音内容。
3. 被叫接听并返回200 OK
1002摘机后返回200 OK,表示接受此次会话。响应中通常也会携带SDP,用于确认媒体地址、端口和双方最终采用的Codec。
4. 主叫发送ACK
1001收到200 OK以后发送ACK,确认最终响应已经收到。
INVITE → 100 Trying → 180 Ringing → 200 OK → ACK
到这里,SIP层面的通话建立基本完成。实际网络中还可能出现认证、呼叫转移、183早期媒体等其他消息,但普通分机互拨的核心流程就是这一组信令。
电话接通以后,语音从哪里传输
电话接通后,连续传输声音的通常不是SIP,而是RTP或SRTP媒体流。
双方已经通过SDP知道对方的媒体IP、端口以及可以使用的语音编码。例如双方都支持G.711,则可以协商使用对应Codec建立语音媒体。
SIP:建立和控制会话
SDP:协商媒体参数
RTP/SRTP:传输实际语音
这也是为什么有些电话能够正常振铃、接听,但接通以后没有声音。
此时SIP信令可能已经正常完成,问题出在媒体路径。常见原因包括SDP中携带了错误地址、RTP端口被防火墙拦截、NAT处理异常,或者中间SBC和媒体代理没有正常转发音频。
在简单局域网中,两台SIP终端建立会话以后,RTP媒体可以直接在终端之间传输:
SIP话机1001 ═════ RTP/SRTP ═════ SIP话机1002
如果系统部署了SBC、录音平台、媒体代理或者需要进行转码,媒体也可能经过中间设备。
所以排查SIP电话时,信令和媒体最好分开检查。看到200 OK只能说明呼叫已经被接受,并不能证明双向语音一定正常。
SIP呼叫中常见的设备分别做什么
SIP终端
负责拨号和接听,可以是SIP桌面电话、软电话、调度台、SIP对讲终端或其他支持SIP的设备。
IP PBX或SIP服务器
负责分机注册、号码路由、呼叫权限和电话业务控制。企业内部1001拨打1002时,通常由这一层完成号码查找和呼叫处理。
SIP Trunk
企业需要通过IP方式连接运营商或其他电话系统时,可以使用SIP Trunk。
SIP话机 → IP PBX → SIP Trunk → 运营商网络
SIP Trunk属于外部中继方式,不能和“SIP呼叫”本身画等号。
语音网关
项目中如果还存在模拟电话、模拟外线或E1数字中继,可以通过FXS、FXO或数字中继网关接入SIP系统。
模拟电话 → FXS网关 → SIP服务器 → SIP话机
或者:
SIP话机 → IP PBX → FXO / E1网关 → 原有电话线路
SBC
跨公网、跨网络域或者需要和外部SIP平台互联时,经常会部署SBC,用于边界控制、NAT处理、安全策略、媒体代理和互操作适配。
如果只是同一局域网内少量SIP分机互拨,则不一定需要单独部署SBC。
SIP电话常见的三种组网方式
内部SIP分机互拨
SIP话机1001 → IP PBX / SIP服务器 → SIP话机1002
这是最基本的组网方式,整个呼叫可以在企业内部IP网络完成,不经过PSTN,也不需要SIP Trunk。
通过SIP Trunk拨打外部号码
SIP分机 → IP PBX → SIP Trunk → 运营商 → 外部电话
这种方式主要用于企业通过IP中继连接公共电话网络或其他SIP系统。
保留原有模拟或数字线路
SIP终端 → IP PBX → FXO / E1网关 → 原有电话线路
对于已经有模拟外线或E1线路的项目,可以通过语音网关继续使用原有资源,再根据建设计划逐步调整,不必为了使用SIP一次性更换全部线路。

SIP呼叫出现问题怎么排查
分机注册失败
先检查服务器地址、SIP端口、用户名、认证密码以及网络连通性。
认证过程中第一次收到401 Unauthorized并不一定代表故障,它可能只是服务器发起认证挑战。终端带上认证信息重新REGISTER后仍然失败,再继续检查账号、密码和Realm等配置。
注册正常,但号码拨不出去
先确认INVITE是否正常发出,SIP服务器能否找到被叫,以及号码路由是否正确。
如果内部号码可以互拨,只有外部电话无法呼叫,则继续检查SIP Trunk、出局路由、号码格式和运营商侧状态。
电话能响,接通以后没有声音
这种情况优先检查媒体路径。
- SDP中的媒体IP地址是否正确;
- RTP端口范围是否被防火墙放行;
- NAT转换是否正确;
- SBC或媒体代理是否正常转发;
- 双方是否存在共同支持的Codec。
只有一方能够听到声音
单通通常说明一个方向的RTP能够到达,另一个方向被阻断。跨公网部署时,可以重点检查NAT、防火墙规则以及SDP中填写的媒体地址。
声音卡顿或断续
如果呼叫建立正常,但通话出现卡顿、延迟或断续,应重点检查网络时延、抖动、丢包、带宽和QoS,而不是继续调整SIP账号。
一次普通SIP电话可以按“注册、信令、媒体”三部分来看。REGISTER负责终端注册,INVITE、180 Ringing、200 OK、ACK和BYE负责会话控制,SDP协商媒体参数,RTP或SRTP承担接通后的实时语音。
需要连接运营商时增加SIP Trunk,需要保留模拟或E1线路时增加语音网关,跨公网或不同网络域互联时再考虑SBC。出现故障时按照注册 → SIP信令 → SDP → RTP媒体的顺序检查,通常更容易定位问题。