回想一下你用微信的过程:打开App,输入账号密码,登录成功,然后才能发消息。你以为打电话不需要这一步?其实需要。
在2G、3G的电路交换时代,打电话更像“接专线”:你拨号,网络在两个电话机之间焊一条实实在在的电路,通话结束拆线。那时“你的号码”是那根线的属性,线通了,你就存在。
到了4G时代,一切语音都变成了IP数据包。LTE网络本身只管搬包,它不知道、也不关心“13800138000”是谁。号码不再是线的属性,而变成了账号的属性。于是打电话这件事,被拆成了两步:先在一个叫IMS(IP多媒体子系统)的系统里“登录账号”,再通过这个账号发起“通话会话”。
那个“登录”动作,就是一条SIP的REGISTER消息。你每次开机、每次从飞行模式恢复,手机都会悄悄发出这条消息——它就是打电话的前置登录。理解了注册,你就理解了VoLTE/VoNR一切信令行为的起点。
IMS可以概括为一句话:用互联网的协议,办电信级的电话业务。它借用了互联网世界现成的“聊天室协议”——SIP(会话初始协议)。你在即时通讯软件里加好友、发消息、退群用的逻辑,和SIP发起呼叫、振铃、挂机的逻辑高度同源。
既然是“登录账号”,就得有账号体系。IMS里最核心的两组身份:
一个账号(IMPI)可以挂多个门牌(IMPU),这就是后文“隐式注册集”的伏笔。
而负责办登录的,是三个名字里都带CSCF的网元。先看全景:
flowchart TD
UE["手机UE<br/>SIM里存着根密钥"]
P["P-CSCF<br/>大堂接待:第一个入口"]
I["I-CSCF<br/>问询处:查号分配"]
S["S-CSCF<br/>账户中心:真正办登录"]
H["HSS<br/>户口档案库"]
T["TAS<br/>业务前台:语音管家"]
UE --> P
P --> I
I --> H
I --> S
S --> H
S --> T
三个CSCF各司其职,用营业厅类比最好记:
| 角色 | 类比 | 一句话职责 | 在注册中的关键动作 |
|---|---|---|---|
| P-CSCF(代理) | 大堂接待 | 用户接触IMS的第一个、也是唯一固定的入口 | 收REGISTER,转给归属网络;之后所有信令都经它手 |
| I-CSCF(问询) | 前台查号台 | 归属网络的“守门人”,为来访用户找到管事的账户中心 | 查户口库:这个号归哪个S-CSCF管 |
| S-CSCF(服务器) | 账户中心 | 真正执行注册、认证、业务触发的大脑 | 校验挑战应答,登记用户在线,通知业务平台 |
| HSS | 户口档案库 | 存签约数据与根密钥,只对内服务 | 下发认证向量:随机数与标准答案 |
| TAS | 业务前台 | 语音业务服务器,管呼叫转移、彩铃等 | 收到“第三方注册”后开始为该用户提供业务 |
为什么拆成三层?这是电信设计里典型的“分而治之”:入口固定(P-CSCF,方便用户和承载网锚定)、寻址灵活(I-CSCF,归属网络可以动态调度)、逻辑集中(S-CSCF,所有签约业务在一个大脑上执行)。三层之间用标准接口互连,任何一层都可以独立扩容。
注册是信令,信令也是IP包,也得有路可走。所以注册之前,手机必须先完成两件事。
第一件事:打通数据承载。 手机开机附着到4G/5G网络后,会先建立默认承载,接着网络会为IMS信令专门建立一条标记为QCI 5(5G里对应5QI 5)的承载。为什么信令要单独修一条路?因为调度器按承载的QCI分配优先级:语音包(QCI 1)要求时延最小,信令包(QCI 5)要求绝不能丢。混在普通上网流量里,一条REGISTER可能因为拥塞晚到几秒,接续体验就崩了。
第二件事:找到大门。 手机怎么知道P-CSCF的地址?答案藏在附着过程的签约参数里——网络在建立默认承载时,顺手把P-CSCF地址“塞”给了手机。这样设计的好处是:手机不需要预先配置任何服务器地址,换运营商、换国家漫游,门牌自动更新。
路修好了,门也找到了,REGISTER才正式出发。
注册的全过程,本质是一场“证明你是你”的考试:
sequenceDiagram
participant UE as 手机
participant P as P-CSCF
participant I as I-CSCF
participant S as S-CSCF
participant H as HSS
Note over UE,P: 信令专用承载QCI5已就绪
UE->>P: REGISTER 申请登录
P->>I: 转发到归属网络
I->>H: 查询 此号归哪个账户中心管
H-->>I: 指派S-CSCF
I->>S: 转交注册请求
S->>H: 领取考题 认证向量
H-->>S: 随机数RAND与标准答案XRES
S-->>P: 401未授权 附上RAND
P-->>UE: 401挑战
Note over UE: SIM卡算出应答RES与密钥
UE->>S: 第二条REGISTER 附RES
S->>S: 比对RES与XRES
S-->>UE: 200 OK 登录成功
最有意思的是为什么考两次。如果第一条REGISTER就带“密码”,密码就得在空口和传输网里跑一趟,被截获的风险始终存在。挑战应答机制把这个问题绕开了:
即使攻击者完整截获了一轮RAND和RES,由于下一轮RAND会换,重放毫无价值。
那RES具体怎么进到SIP消息里?IMS借用了HTTP世界的摘要认证框架,把AKA的应答包装进去。摘要的原始形式是:
$$HA1 = MD5(用户名 : realm : 密码)$$
$$HA2 = MD5(方法 : URI)$$
$$response = MD5(HA1 : nonce : nc : cnonce : qop : HA2)$$
IMS把其中“密码”的位置换成了SIM卡算出来的AKA结果:
$$RES = f_2^K(RAND), \quad AK = f_5^K(RAND), \quad 应答值 = RES \oplus AK$$
其中 $f_2$、$f_5$ 是SIM卡内预置的密码函数,$\oplus$ 是异或。用 $AK$ 把应答“遮”一层,是为了不让真应答以明文形态出现在网上——整套设计处处体现同一个原则:能让密钥不出现的地方,就绝不让它出现。
200 OK不是终点,后面还有三个关键机制。
隐式注册集:一次登录,多个门牌。 你在运营商档案里其实不止一个标识——电话号码的tel形式、SIP URI形式,可能还有补充业务的隐含号码。隐式注册集机制把这些IMPU打包:你REGISTER一次,整组门牌同时生效。为什么这样设计?如果每个标识都要单独注册,一条REGISTER变五条,信令翻倍,而且组内状态可能不一致。打包之后,“这个用户在线”成为一个原子事实。
Service-Route与路径锁定。 200 OK里会带回来一条路由信息,告诉手机:以后你所有的请求(包括拨号INVITE),都沿着 P-CSCF→S-CSCF 这条路走。这保证了同一次注册周期内,你的所有信令都经过同一个账户中心——会话状态不用到处复制。
第三方注册:账户中心替你去业务前台报到。 S-CSCF收到注册成功后,会以用户的名义向TAS再发一条REGISTER——这叫第三方注册。它是在告诉业务平台:“你的用户上线了,接下来呼叫请转到他这里,顺便把彩铃、呼叫转移这些业务挂上。”这是IMS架构里极聪明的一笔:核心注册与业务逻辑解耦。换一家业务平台供应商,注册流程一个字都不用改。
租约式有效期。 注册不是永久性的,它有租约——典型一个小时。手机会在租约过半时主动刷新(重发REGISTER)。为什么设计成“租约”而不是“终身制”?两个原因:一是无线世界用户随时会消失(没电、进电梯、出覆盖),租约到期自动清理,避免网络拿着一张“僵尸在线名单”白找半天;二是位置信息会变,定期刷新等于定期校准。IP地址变了、承载重建了,也都会触发重新注册。
注册成功后, IMS里你已经“在线”,但电话还没打通。拨号是另一场戏——SIP的INVITE流程:
sequenceDiagram
participant A as 主叫手机
participant PA as 主叫P-CSCF
participant S as S-CSCF
participant PB as 被叫P-CSCF
participant B as 被叫手机
A->>PA: INVITE 附编解码提议
PA->>S: INVITE
S->>PB: 查到被叫在线 转发
PB->>B: INVITE
B-->>PB: 183 附应答与预条件
PB-->>S: 183
S-->>PA: 183
PA-->>A: 183
Note over A,PA: 183触发主叫侧专用承载建立
A->>PA: UPDATE 资源就绪
PA->>S: UPDATE
S->>PB: UPDATE
PB->>B: UPDATE
B-->>PB: 180 振铃
PB-->>S: 180
S-->>PA: 180
PA-->>A: 180 听到回铃音
B-->>PB: 200 OK 接听
PB-->>S: 200 OK
S-->>PA: 200 OK
PA-->>A: 200 OK
这条流程里最精巧的设计是“振铃之前,先修好路”。注意消息顺序:被叫还没振铃,双方先交换了编解码提议与应答,并各自完成了专用承载(QCI 1,5G里是5QI 1)的建立,再用UPDATE消息互相确认“我这边资源OK了”。全部预条件满足,被叫电话才真正响起。
为什么这么麻烦?反证法:如果先振铃、接通后再建承载,用户可能遇到“接通了却听不见”的尴尬——空口资源已经被旁边看视频的邻居抢走了。预条件机制保证:铃一响,路必通;一接听,就有声。 这也是VoLTE接续比2G慢一点、但接通质量稳定得多的根本原因——2G是先占物理电路,VoLTE是先谈妥一条带质量保证的逻辑路。
5G初期,5G手机打电话要“回落”到4G走VoLTE,或者更糟,回落到2G/3G电路域。这就是常说的EPS回落方案——本质是承认5G一时还没准备好承载语音。
VoNR(新空口语音)则完成了最后一步:语音会话直接架在5G空口上。它的关键认知是:IMS这座“营业厅”一点没动,动的只是“路”。
| 维度 | 2G/3G电路交换 | CSFB回落 | VoLTE | VoNR |
|---|---|---|---|---|
| 语音形态 | 专用物理电路 | 回落到电路域 | IP数据包 | IP数据包 |
| 承载网络 | 电路核心网 | 2G/3G电路域 | 4G + IMS | 5G + IMS |
| 上网与通话 | 3G前不能同时 | 通话时断网 | 可同时 | 可同时 |
| 信令承载 | 无此概念 | 无 | QCI 5承载 | 5QI 5的QoS流 |
| 语音承载 | 电路时隙 | 电路时隙 | QCI 1承载 | 5QI 1的QoS流 |
| 接续时延 | 快但质量受限 | 慢(要回落) | 中等 | 中等且更省电 |
从这个表能看清一个容易混淆的事实:VoLTE到VoNR的演进,核心网几乎没换,IMS原样复用。真正变的是承载管理的“方言”——4G用EPS承载,5G用QoS流;以及接入网的“路况”——5G空口时延更低、调度更细,语音体验的上限更高。对排障工程师来说这意味着:VoNR的IMS侧信令分析和VoLTE几乎是同一套功夫,需要新学的是5G承载侧的QoS流建立逻辑。
这套原理在现网里最直接的用处,是给语音问题分层。用户投诉“打不出电话”,第一刀要切的不是无线,而是:注册到底成没成功?
三个常见误解顺带澄清。其一,“注册失败说明信号差”——恰恰相反,多数注册失败是数据和签约问题,无线信号好得很。其二,“打电话要重新注册”——不需要,注册是登录,呼叫只是登录期内发起的一场会话,除非租约恰好到期。其三,“VoNR是IMS升级版”——IMS没有变,变的只是下面那条路。
Q: REGISTER和打电话的INVITE,到底是什么关系? A: 注册是“登录账号”,INVITE是“发起会话”。登录一次,一小时内可以随便拨号,不用每次重新登录。只有租约过期、IP变化或关机重开,才需要重新REGISTER。
Q: P-CSCF为什么在漫游时要区分拜访地和归属地? A: P-CSCF是信令入口,物理上离用户越近,语音时延越小。漫游时让用户就近接入拜访地的P-CSCF,再由它把信令送回归属网络的S-CSCF——入口就近、账户集中,时延和管理两全。
Q: 隐式注册集里如果我只想临时注销一个号码,可以吗? A: 标准把整组号码当成一个原子单元,不支持组内单个注销,具体管理手段以各厂家官方文档为准。这样设计是为了避免组内状态不一致——有的号码在线有的离线,被叫寻址会陷入混乱。
Q: 401挑战会不会让注册变慢? A: 会多一来一回,但这正是安全性的代价。现网实测中这一趟通常只增加几十毫秒,相比它挡住的风险(密钥泄露、重放攻击),完全划算。
Q: VoNR打电话时我还在打游戏,会卡吗? A: 理论上不会明显卡。语音走5QI 1专用通道,游戏走默认通道,调度器给语音的优先级更高,但语音本身码率很低(几十kbps),占用空口资源极少。设计上这就是“语音与数据并发”的原始诉求。
本文由「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 等场景全覆盖。
