你有没有想过一个问题:手机上网和手机打电话,走的是同一张网络吗?
答案是:数据走的是“互联网管道”,而打电话,手机要在后台先完成一场相当隆重的“仪式”——向网络注册身份、协商资源、预留专属车道,然后双方才会听见“喂”。
这套仪式背后的技术叫 IMS(IP Multimedia Subsystem,IP多媒体子系统),而跑在4G上的语音就是大家熟悉的 VoLTE。这篇文章要回答三个“为什么”:
理解了这三个问题,你在现网抓包时看到的那一长串REGISTER、INVITE、183、PRACK,就不再是天书,而是一张清清楚楚的流程地图。
2G/3G时代的语音走的是电路交换(Circuit Switched,CS)域。所谓电路交换,就是通话双方在通话建立时,网络里被实实在在地划出一条独占的“线路”,哪怕两人都不说话,这条线路的带宽也被占着——就像老式接线员拿跳线把两部电话物理接通。
这个模式在纯语音时代非常可靠,但有个致命问题:它和数据业务是两套完全不同的网络。运营商要同时维护“打电话的网”和“上网的网”,两套设备、两套运维、两份成本。
到了LTE设计时,标准制定者做了个激进决定:LTE网络只保留分组交换(PS)域,彻底砍掉电路域。LTE天生就只会传IP数据包。
问题来了:那电话怎么办?答案是——把电话本身也变成“数据”。语音经过编码器变成码流,打成IP包,像网页、视频一样在LTE上传送。这就是 VoLTE(Voice over LTE)。
但这里有个关键洞察:“把语音变成IP包”很容易,难的是“把打电话这门生意搬进IP世界”。
打电话不只是传声音,还包括一连串业务逻辑:
这些逻辑在CS域里由交换机实现,如今交换机没了,就需要一套新的“电话业务大脑”。这套大脑就是IMS。
一句话定义:IMS是一套基于SIP协议的会话控制系统,它让“打电话”这件事在纯IP网络上重新拥有了寻址、鉴权、路由、业务触发和计费的完整能力。VoLTE、VoNR、Wi-Fi通话(VoWiFi)、RCS消息,全都是IMS这棵树上的果实。
你可能会问:微信语音也是IP传声音,为什么运营商不直接用现成的互联网VoIP技术?
因为两者的设计目标完全不同。互联网VoIP是“尽力而为”(best effort):网络拥塞时丢包、延迟,大不了卡一下。而运营商电话是“承诺级”业务:拨号要通、接通要快、声音要稳,掉话率要控制在千分位。IMS存在的意义,就是把互联网“松散自由”的SIP技术,驯化成电信级“严格可控”的呼叫体系——加上鉴权、加密、资源预留、合法监听、计费锚点这些“电信级护栏”。
IMS的核心协议是 SIP(Session Initiation Protocol,会话发起协议)。理解SIP有个取巧的办法:把它想象成电子邮件和电话的混血儿。
SIP消息是纯文本的,长得和HTTP非常像,比如一条INVITE请求大概长这样:
INVITE sip:[email protected] SIP/2.0
From: <sip:[email protected]>
To: <sip:[email protected]>
Call-ID: 8842@a-ims-ue
CSeq: 1 INVITE
Content-Type: application/sdp
你的手机号在这里被表示成了一个SIP URI(如sip:+86139...),就像一个邮箱地址。SIP负责“找人和谈条件”,真正传声音的是另一个协议RTP(实时传输协议)——信令和媒体分离,这是VoLTE最重要的设计思想之一,后文会反复出现。
SIP定义了一组“方法”(Method),每个方法就是一个动作动词:
| SIP方法 | 作用 | 通俗类比 |
|---|---|---|
| REGISTER | 向网络登记“我在这里,能找到我” | 到会所前台签到 |
| INVITE | 发起一次通话邀请 | 递上请帖 |
| 100 Trying | “收到了,正在处理” | 前台点头示意 |
| 183 Session Progress | 携带媒体参数的早期应答 | 双方先对菜单 |
| PRACK | 确认收到的临时响应 | 对菜单后说“记下了” |
| UPDATE | 通话建立中修改会话参数 | 上菜前调整口味 |
| 180 Ringing | 被叫振铃 | 对方桌上的铃响了 |
| 200 OK | 最终应答(接听/注册成功) | 正式答应 |
| ACK | 对最终应答的确认 | 握手成交 |
| BYE | 结束会话 | 客散关门 |
| MESSAGE | 传输短消息(VoLTE短信) | 递张纸条 |
注意一个细节:SIP的响应分“临时响应”(1xx)和“最终响应”(2xx起)。临时响应不可靠——可能丢,所以VoLTE专门发明了PRACK来给临时响应“签收回执”。这个看似多余的设计,恰恰是后面“资源预留”机制能成立的前提。
一套IMS网络里,和手机直接打交道的主要是四个逻辑功能(注意是“功能”,物理上可能合并部署在同一台设备上):
| 网元 | 全称 | 职责 | 通俗类比 |
|---|---|---|---|
| P-CSCF | 代理呼叫会话控制功能 | 手机接入IMS的第一个接触点,校验信令、建立安全通道、可压缩信令 | 小区门卫 |
| I-CSCF | 问询呼叫会话控制功能 | 运营商域的“大门地址”,负责查询该用户应由哪个S-CSCF服务 | 前台查号台 |
| S-CSCF | 服务呼叫会话控制功能 | 真正的会话管理者:执行注册、绑定位置、触发增值业务、决定路由 | 贴身大管家 |
| HSS | 归属用户服务器 | 存放用户签约数据的中央数据库,提供鉴权密钥 | 户口本+保险柜 |
它们的关系与信令路径如下:
flowchart TD
UE["手机 UE"] -->|SIP信令走Gm口| P["P-CSCF 门卫"]
P -->|Mw口| I["I-CSCF 查号台"]
I -->|Cx口查询| H["HSS 户口本"]
I -->|转发注册| S["S-CSCF 大管家"]
S -->|Cx口取数据| H
S -->|ISC口触发| AS["应用服务器 彩铃 呼转"]
几个值得咀嚼的设计细节:
P-CSCF为什么必须存在? 它本质上是一个高度特化的会话边界控制器(SBC)。手机的所有SIP信令都必须经过它,它可以检查每一条消息是否合规、并对手机与网络之间的信令建立IPsec安全通道(防窃听、防伪造)。用日常生活中话说:想进会所,先过门卫这一关,门卫还负责确认“你递的条子没被涂改过”。
I-CSCF为什么需要DNS? 当另一个运营商的用户打给你时,对方网络怎么找到你们家的“大门”?答案是I-CSCF的地址被公布在DNS记录里,任何外部网络都能查到。它是运营商网络的公开入口,而内部结构对外隐藏。
S-CSCF为什么要从HSS下载用户档案? 用户注册成功时,S-CSCF会从HSS把这个用户的“服务清单”(业务触发规则,称为初始过滤准则iFC)拉到本地。之后这个用户的每次呼叫,S-CSCF都按清单决定“要不要先绕去彩铃服务器打个转”。这就把“业务逻辑”从交换机硬编码里解放出来,变成了可插拔的应用服务器——这正是IMS“水平分层”架构的精髓:接入方式(4G/5G/Wi-Fi/固网)与业务提供彻底解耦。
HSS和4G核心网的HSS是什么关系? HSS是“户口本”,既管EPC接入的鉴权,也管IMS域的鉴权,一个用户一套档案。到了5G时代它的演进形态叫UDM,逻辑角色不变。
IMS是“注册制”的。手机想打电话,必须先告诉网络“我在线,我在这个IP地址,请把打到我的呼叫路由过来”。这个动作就是 IMS注册。
而IMS注册最精妙的地方在于:它故意设计成两步。
想象一下:如果手机第一次REGISTER就把“身份凭证”直接发给网络,会发生什么?这个凭证一旦被空中的窃听者截获,就能被拿去冒充你。所以IMS借鉴了HTTP的摘要鉴权思想,并升级为运营商版的挑战-应答机制:
手机从不直接发送密码,而是证明“我知道密码”。
流程是这样的:第一次REGISTER故意“裸发”(不带凭证),网络收到后回复 401 Unauthorized,并附上一道随机“考题”(随机数nonce);手机用SIM卡里的根密钥和考题算出答案,再发第二次REGISTER。网络用同样的算法核对答案——答案对得上,说明你手里有真SIM卡。整个过程密钥从不出SIM卡,空中也不传密钥本身。
这就是为什么你的手机每次开机、跨区移动或Wi-Fi通话切换时,信令里都会出现一对REGISTER/401——那不是失败,是设计好的安全仪式。
sequenceDiagram
participant UE as 手机UE
participant P as P-CSCF
participant I as I-CSCF
participant S as S-CSCF
participant H as HSS
UE->>P: REGISTER 不带凭证
P->>I: 转发REGISTER
I->>H: 查询该用户归谁管
H-->>I: 返回S-CSCF地址
I->>S: 转发REGISTER
S->>H: 请求鉴权数据
H-->>S: 返回随机数与密钥
S-->>P: 401 附带挑战考题
P-->>UE: 401 附带挑战考题
Note over UE,P: 手机在本地算出鉴权答案
UE->>P: REGISTER 带鉴权答案
P->>S: 经I-CSCF转发
S->>H: 核对并登记用户位置
S-->>P: 200 OK 注册成功
P-->>UE: 200 OK 注册成功
有三个工程细节值得注意:
ims的专属IP连接(4G里叫PDN连接,5G里叫PDU会话),P-CSCF的地址就在这条连接建立时由网络下发。所以完整顺序是:开机附着 → 建立IMS专载 → 发现P-CSCF → SIP注册。注册完成后,打电话的信令是INVITE开头的。但如果你在现网抓过VoLTE的包,会发现接通前的信令多到令人怀疑人生:INVITE、100、183、PRACK、200、UPDATE、180、200、ACK……为什么不直接INVITE加200就完事?
答案是四个字:资源预留。
VoLTE的语音包需要一条专有承载——这是与普通上网流量的本质区别。你刷网页走的默认承载是“尽力而为”的公共车道;而语音拨通时,网络会为这通电话单独激活一条标记为会话类语音(业界通行做法是QCI 1)的GBR专有承载,无线侧会实实在在地为它预留带宽和调度优先级。
问题在于:这条专载的建立需要时间(要经过基站和核心网的多轮交互)。如果被叫一振铃就接听,而此时语音专载还没建好——用户听到的就是“接通了却没声音”的尴尬,几秒后声音才姗姗来迟。
VoLTE的解法堪称经典:把“振铃”推迟到“两端资源全部就绪”之后。
sequenceDiagram
participant A as 主叫UE
participant PA as 主叫侧P-CSCF
participant S as S-CSCF
participant PB as 被叫侧P-CSCF
participant B as 被叫UE
A->>PA: INVITE 拨号并附媒体提案
PA-->>A: 100 Trying 已受理
PA->>S: 转发INVITE
S->>PB: 按被叫注册路由
PB->>B: 下发INVITE
B-->>PB: 183 附媒体应答
PB-->>A: 183 逐跳透传回主叫
Note over A,PA: 双方开始各自建立语音专载
A->>B: PRACK 确认183
B-->>A: 200 OK 对PRACK的应答
A->>B: UPDATE 通告本端资源就绪
B-->>A: 200 OK 对端也确认就绪
B-->>A: 180 Ringing 此刻才振铃
B-->>A: 200 OK 被叫摘机接听
A->>B: ACK 完成三次握手
Note over A,B: 双向RTP语音包开跑
把这段信令翻译成人话,就是一场安排精密的婚礼:
这个设计把“接通时延”和“听感体验”做了交换:信令回合变多、振铃稍晚,但换来接听瞬间媒体立即可用。当你排查“振铃慢”的投诉时,第一时间该看的就是主被叫两侧专载建立是否缓慢——这是现网最常见的病灶。
任何一方发BYE,网络拆除会话并释放语音专载(专载跟着通话走,挂机即撤,不占资源)。若是和传统固定电话互通,S-CSCF会把呼叫交给互通网关,SIP信令在那里被翻译成老式电话网的信令,RTP语音被转回传统PCM编码——IMS与百年电话世界就这样无缝握手。
运营商对语音质量不靠“感觉”,靠公式。业界通行的评估模型是 E-Model(源自国际电联的G.107建议),它把各种损伤折算成一个100分制的质量因子R:
$$R = 93.2 - I_d - I_{e,\text{eff}}$$
其中 $I_d$ 是时延类损伤(单向时延越大扣越多),$I_{e,\text{eff}}$ 是设备类损伤(编解码失真、丢包损伤)。R再映射到大家熟悉的MOS分(1~5分的主观平均意见分):
$$\text{MOS} = 1 + 0.035R + 7\times10^{-6} \cdot R\,(R-60)(100-R)$$
代入几个典型值感受一下:R=93(时延小、编码好、近零丢包)对应MOS约4.4,是高清语音的水准;R=70对应约3.6,普通可用;R掉到50附近就只有约2.6,用户会明确抱怨“断断续续”。
这个公式的工程价值在于各损伤项可加可拆:时延超标多少、丢包率上升多少,都能换算成MOS掉多少分。网络优化时,你据此判断该去压时延还是治丢包——而不是凭感觉乱调。
至于编码本身,VoLTE的标配是AMR-WB(宽带语音,即运营商宣传的“HD Voice”),不少网络已升级到EVS,码率覆盖约5.9~128 kbit/s。语音编码的细节我们此前文章专门讲过,此处不展开,只强调一句:编解码的选择就是呼叫建立时SDP协商的产物——信令流程与话音质量在这里交汇。
到了5G,语音的去向分成三种路线,一张表看清:
| 维度 | VoLTE | VoNR | EPS Fallback |
|---|---|---|---|
| 无线接入 | 4G LTE | 5G NR | 5G起呼,回落4G |
| IMS位置 | IMS网络 | 同一套IMS网络 | 同一套IMS网络 |
| 语音承载 | LTE的QCI 1专载 | NR上的5QI 1专载 | 回落后走LTE专载 |
| 使用前提 | 4G覆盖 | 5G SA组网 | 5G未开通VoNR |
| 典型场景 | 当前主流 | 5G SA成熟网络 | 5G建网过渡期 |
关键认知是:不管无线接入是4G还是5G,跑的都是同一套IMS。5G只是给IMS换了条更粗的“接入管道”。所以5G时代用户打电话“跳回4G”的现象(EPS Fallback),本质不是语音技术退步,而是IMS尚未与5G无线打通时的过渡策略——这一点我们在此前的回落专题里详细聊过,本文不重复。
还要澄清一个常见误解:Wi-Fi通话(VoWiFi)不是绕过运营商的互联网电话。它同样注册在你运营商的IMS上,只是把“接入管道”从基站换成了Wi-Fi——手机对IMS而言根本不关心脚下是LTE、NR还是Wi-Fi,这正是IMS水平架构的红利。
1. 查VoLTE是否正常,先看IMS注册态。 Android工程模式里有明确的诊断项:IMS Registration: Registered 加 Voice over LTE: Available 才算语音可用。用户投诉“打不出电话”时,第一步就是确认注册态——大量“故障”其实停在注册这一步(SIM未开通VoLTE、终端缺运营商配置文件、ims专载没建起来)。
2. 抓包排障的过滤套路。 在UE侧或探针侧用Wireshark过滤sip,看信令走到哪一步断掉,就能把故障定位到具体环节:
3. 常见调试陷阱。 一是把401当故障(它是正常流程);二是忽略PRACK丢失导致的协商卡死;三是信令路径正常就认为媒体没问题——信令面与媒体面分离,排查时必须分而治之。另外,标准允许多种实现细节存在,具体网元行为与参数默认值以各厂家官方文档为准。
4. 注册与呼叫的时延账。 开机后首次注册涉及附着、专载、两趟REGISTER,整体秒级;而呼叫建立中约半数时延消耗在专载激活上。做接通时延优化时,先量清楚每段信令的耗时分布,再决定优化哪一跳。
Q: VoLTE和VoIP的区别是什么? A: VoIP是泛指“在IP网上传语音”的所有技术(微信语音、网络电话都算);VoLTE特指基于IMS架构、带电信级QoS专载和统一鉴权计费的运营商语音。可以粗略理解为:VoIP是“互联网语音”的大类,VoLTE是其中“运营商精装版”。
Q: IMS注册和4G/5G的入网注册(附着)是一回事吗? A: 不是。附着注册解决“你可以上网”,在手机与EPC/5GC之间完成;IMS注册解决“你可以打电话”,是手机与IMS之间基于SIP的另一场独立注册。两次注册都通过,语音功能才完整可用。这也是排障时“能上网不能打电话”的第一检查点。
Q: 注册时为什么收到401却说这是正常的? A: 因为401在这里不是“拒绝”,而是“挑战”:网络借它下发随机考题,让手机证明自己持有真SIM卡的密钥,密钥本身从不在空中传输。第二次REGISTER答对题目后即返回200 OK。它是安全机制,不是失败。
Q: 183、180、200这些数字是什么意思? A: SIP沿用了HTTP风格的三位响应码。1xx是临时响应(收到、处理中、振铃中),2xx是成功,3xx重定向,4xx客户端侧错误,5xx服务端错误。VoLTE呼叫流程里反复出现183/180/200的组合,分别对应“媒体协商中”“正在振铃”“最终应答”。
Q: 打电话时手机的数据上网会断吗? A: VoLTE时代不会。语音和数据是两条并行的承载:语音在QCI 1专有承载上,数据在默认承载上,可同时进行。这正是不用回落到2G/3G的VoLTE相对老技术的核心体验优势之一。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
