标题: 打电话也要先报到?IMS 注册 作者: 爱卫生 封面: "[[封面1.png]]" 封面裁剪: false 原文地址: 打开评论: true 仅粉丝可评论: false 摘要: 你按下拨号键,不到两秒对方接听——看起来这一切发生在“拨号的那一瞬间”。但真相是:早在你开机的那一刻,手机就已经在一张看不见的电话网里完成了“挂号”。没有这次挂号,你连拨号键都按不出一通真电话。
你按下拨号键,不到两秒对方接听——看起来这一切发生在“拨号的那一瞬间”。但真相是:早在你开机的那一刻,手机就已经在一张看不见的电话网里完成了“挂号”。没有这次挂号,你连拨号键都按不出一通真电话。
这次挂号,叫 IMS 注册。本文要回答的问题是:为什么打 IP 电话之前必须先注册?注册到底注册了什么?为什么流程要设计成“先领考题、再交答案”的两步走?
先回到一个问题:4G/5G 网络本身就能传 IP 数据包,微信语音不需要什么“注册 IMS”也能通,为什么运营商的电话就要多一道手续?
区别在于:微信语音是 App 到 App 的私事,而电话号码是网络里的公共服务。
在 2G/3G 时代,这些信息由电路交换(CS)域管理:手机开机后在 MSC/VLR 上登记“我来了”,这本身也是一种注册。进入 4G 后全网 IP 化,电路交换整个消失了,语音变成了普通的 IP 流。但“电话号码是一项需要管理的公共业务”这个本质没变,于是需要一个专门管会话的控制层——这就是 IMS(IP Multimedia Subsystem,IP 多媒体子系统)。
IMS 可以类比为一家电话营业厅+医院的合体:你要在这里“办业务”(注册),之后每次“看病”(打电话)都要经过它的分诊流程。
flowchart TD
A["类比:医院看病"] --> B["进门在大厅登记"]
A --> C["分诊台找科室"]
A --> D["主治医生建病历"]
A --> E["病案室存档案"]
B --> F["P-CSCF"]
C --> G["I-CSCF"]
D --> H["S-CSCF"]
E --> I["HSS"]
一个容易被忽视的设计动机:IMS 选用的信令语言是 SIP(会话初始协议)。SIP 继承自互联网,天生是“松散”的——它发起会话时不关心你在哪个基站,只认 IP 地址。但 IP 地址会变、会消失,号码和人的绑定关系必须有人记账。注册,就是把这个“账号↔当前地址”的账本登记清楚的过程。
IMS 注册第一个反直觉的设计:手机里存着两个身份。
| 对比项 | IMPU(公共用户身份) | IMPI(私有用户身份) |
|---|---|---|
| 形态 | sip:[email protected] | 类似一串用户名的 URI |
| 类比 | 医院的“病历号/对外公布的手机号” | 你的“就诊卡内部卡号” |
| 给谁看 | 对外,别人拨号、网络寻址都找它 | 对内,只用于登录鉴权 |
| 能否多个 | 可以有多个(主号、副号、视频号码) | 通常每张 SIM 对应一个 |
| 出现在哪 | 呼叫信令里到处都是 | 基本只在注册鉴权时出现 |
为什么要拆成两个?想象你登录公司内网:登录用的是工号(私有),但同事找你用的是花名册上的名字(公共)。私有身份永远不出现在对外的呼叫信令里——这样即使有人截获你的通话信令,也拿不到能用来“登录”的凭证素材。这个“公私分离”思想和空口身份隐私保护一脉相承:能被别人看见的东西,绝不用来做钥匙。
IMS 把控制功能拆成三个 CSCF(Call Session Control Function,会话控制功能)。教科书上它们名字像绕口令,其实分工一句话就能说清:
| 角色 | 医院类比 | 核心职责 | 典型位置 |
|---|---|---|---|
| P-CSCF(Proxy,代理) | 门诊大厅的挂号接待 | 用户接入 IMS 的唯一入口,所有信令第一站都到它 | 靠近用户,常在省网边缘 |
| I-CSCF(Interrogating,查询) | 分诊台 | 帮“陌生来电/新挂号”找到该管这个用户的 S-CSCF | 运营商网络入口 |
| S-CSCF(Serving,服务) | 你的主治医生 | 真正管注册状态、做鉴权、按规则触发业务的核心节点 | 核心网大区中心 |
| HSS(归属用户服务器) | 病案室 | 存用户的鉴权密钥、签约数据、业务档案 | 归属地 |
为什么拆三个而不是一个“大总机”?这是典型的分而治之:
这个架构还埋着一个精妙的伏笔:因为 P-CSCF 只是入口而不是归属,你换城市、换接入方式,只要 P-CSCF 可达,注册可以不动——这正是后面 VoWiFi 能工作的基础。
IMS 注册用的是 SIP 的 REGISTER 方法。整个流程最精彩的设计是鉴权采用“挑战-应答”两步走:第一趟 REGISTER 故意不带凭证,网络回一句“401 Unauthorized”——这不是报错,而是发考题;手机算出答案,第二趟 REGISTER 交卷,通过了才给 200 OK。
为什么不让手机第一次就把“密码”发过来?因为密码类的秘密一旦上线就有被截获的风险。挑战-应答模式下,线上跑的只是“用密钥对随机数算出来的结果”,密钥本身(存在 SIM 卡和 HSS 里的一对共享密钥)从生到死不出门。这和网站登录用的 HTTP Digest 是同一个思想,只不过 IMS 把算法换成了运营商级的 AKA。
下面分两张时序图拆解。第一张:从进门到领考题。
sequenceDiagram
participant U as 手机UE
participant P as P-CSCF
participant I as I-CSCF
participant S as S-CSCF
participant H as HSS
U->>P: REGISTER(第一趟,无凭证)
P->>I: 转发REGISTER
I->>H: 这个用户归哪台S-CSCF管
H->>I: 未注册,请你选一台
I->>S: 把REGISTER交给选中的S-CSCF
S->>H: 取这个用户的鉴权数据
H->>S: 返回鉴权五元组
S->>U: 经P返回401,附上考题
Note over U,H: 考题=随机数RAND+网络凭证AUTN
第二步:手机交卷、网络阅卷、正式建档。
sequenceDiagram
participant U as 手机UE
participant P as P-CSCF
participant I as I-CSCF
participant S as S-CSCF
participant H as HSS
U->>P: REGISTER(第二趟,附答案RES)
P->>I: 转发
I->>S: 转交
S->>S: 比对答案与标准答案XRES
S->>H: 登记注册状态并要用户档案
H->>S: 返回签约数据与业务规则
S->>U: 经P/I返回200 OK注册成功
Note over U,S: 手机与入口间建安全通道
几个值得停下来想一想的细节:
① I-CSCF 为什么先问 HSS? 因为要区分两种情况:老用户重注册(HSS 里记着“他的主治医生是 3 号 S-CSCF”,直接转过去)和全新注册(HSS 说“还没挂号,你按负荷挑一台吧”)。一个查询两种结局,这是把“路由”和“选择”合并成一个动作的设计。
② 考题里的 AUTN 是干嘛的? 它是网络出示的“良民证”。手机用同一把共享密钥验证 AUTN——如果对不上,说明对面可能是假基站或假 IMS。GSM 时代只有网络查手机,IMS AKA 是双向鉴权:不仅网络验你,你也验网络。
③ 200 OK 之后为什么还要下载档案? 这是整个注册真正“值钱”的一步。S-CSCF 从 HSS 拿到的不只是用户资料,还有一份 iFC(初始过滤规则)——一份“业务路由表”:这个用户开通了彩铃、签约了视频通话、设置了遇忙转移……此后每一通电话经过 S-CSCF 时,它都按这份规则决定要不要把信令先送去对应的应用服务器(AS)绕一圈。没有注册就没有 iFC,没有 iFC 你的增值业务全部失灵——这就是为什么很多“电话打得通但彩铃不响”的故障,最后查出来是注册档案没下载完整。
鉴权的数学核心其实极简。UE 和 HSS 共享一把密钥 K,网络出一道随机题 RAND:
$$RES = f_K(RAND), \quad XRES = f_K(RAND)$$
UE 算出 RES 交卷,S-CSCF 手里有 HSS 算好的 XRES,两个数相等即通过。函数 f 是带密钥的单向运算:旁观者看再多遍 RES 和 RAND,也倒推不出 K。整个过程的强度完全取决于 K 的保密,而不是算法保密——这是现代密码学“柯克霍夫原则”的标准应用:系统只假设密钥保密,不假设算法保密。
一个手机号往往不止一个业务身份:主号码、视频通话专用的号码、甚至企业分机。难道每个都要单独注册一遍?
不用。IMS 设计了隐式注册集(Implicit Registration Set):把多个 IMPU 捆成一组,组内任何一个完成注册,全体同时生效。类比:你在医院挂一次号,挂号单上同时激活了“门诊+体检+口腔”三个就诊资格,不用每个科室各挂一次。
flowchart TD
R["手机完成一次REGISTER"] --> A["IMPU-A: 语音号码生效"]
R --> B["IMPU-B: 视频号码生效"]
R --> C["IMPU-C: 企业分机生效"]
A --> D["同一隐式注册集"]
B --> D
C --> D
这个设计还有一个对称的推论:注销也是整组一起注销。网络侧强制踢一个用户下线(比如欠费停机),只要对其中的一个 IMPU 执行第三方注销,整组号码全部失效。这在排障时很有用——有时候“主号正常、副号打不通”的怪病,根子就在隐式注册集的绑定关系配错了。
注册不是终身制。200 OK 里带着一个 过期时间(Expires),好比挂号的号条上印着“有效期至 XX:XX”。到期前手机必须重注册续期;否则 S-CSCF 会认为“这个号可能已经失联”,把注册状态清掉。
为什么要设计保质期,而不是“注册一次永久有效”?因为无线世界里的失联经常是静默的:手机没电了、进了电梯、飞到另一个国家换了接入方式——它不会专门来“告别”。如果永久有效,S-CSCF 的账本会堆满幽灵用户,别人拨你的号,网络还在兴冲冲地找一个早已不存在的地址。定期重注册,本质上是一场系统级的“活人心跳检测”。
注销则有三条路:手机主动注销(REGISTER 带 Expires: 0,相当于“我看完病了,退号”);定时器到期被清(号条过期);以及网络侧强制注销(相当于医院吊销你的就诊资格)。
抓包看什么。 用 Wireshark 抓 VoLTE 手机信令,过滤 SIP 消息,一次完整注册长这样:
| 消息 | 看哪个字段 | 说明 |
|---|---|---|
| 第一趟 REGISTER | 无 Authorization 或内容为空 | 正常,等着领考题 |
| 401 Unauthorized | WWW-Authenticate 里的 nonce、algorithm=AKAv1-MD5、realm 形如 ims.mnc0xx.mcc460.3gppnetwork.org | 这是考卷,不是故障 |
| 第二趟 REGISTER | Authorization 里的 response、username=IMPI | 手机交的答卷 |
| 200 OK | Contact 头的 expires 参数 | 保质期,通常以万秒计 |
常见故障与排障陷阱:
一个最常见的误解:以为“打电话的时候才连 IMS”。实际时序是——开机 → 建立数据通道 → 立即 IMS 注册 → (可能过几小时)你才打第一通电话。所以“一注册就失败”的手机,用户感知到的现象往往是“打不出电话”,而根子在几小时前的开机时刻。这就是为什么运维排障要看开机时段的信令,而不是只盯呼叫时刻。
回顾全文,IMS 注册解决的根本问题是:在一个地址随时会变的 IP 网络里,让“一个电话号码”重新获得稳定的归属。三个 CSCF 的拆分是职责隔离,两个身份的拆分是秘密与门牌分离,挑战-应答是让密钥永不上线,隐式注册集是一次挂号全院通认,保质期是给静默失联留的后手。
下一轮你按下拨号键时,那不到两秒的接续里,S-CSCF 正拿着注册时下载的 iFC 规则表,把你的通话在彩铃服务器、视频通话平台之间依次“过堂”——而这一切的前提,正是开机那一刻那趟不起眼的挂号。
Q: IMS 注册和 4G/5G 开机的网络注册是一回事吗? A: 不是,是两层。开机注册在接入层,回答“这台手机挂在哪个基站、允许用什么网络”;IMS 注册在业务层,回答“这个电话号码的账号在哪台 S-CSCF 上挂号、开通了哪些业务”。前者是进小区办门禁卡,后者是到物业登记住户信息——两件事都做完,电话服务才可用。
Q: 信令里看到 401 Unauthorized 是不是注册失败了? A: 恰恰相反,这是正常流程的一半。401 在这里的意思不是“你被拒绝了”,而是“请先回答这道题”。完整的注册必然包含一次 401 和一次重发的 REGISTER。真正失败要看 401 之后手机有没有重新交卷、以及最后的响应是不是 200 OK。
Q: 注册成功后我在城市间移动,需要重新注册吗? A: 通常不需要。只要原来的 P-CSCF 入口仍然可达(4G/5G 内部移动时 IP 连接 continuity 由接入层维持),注册状态原封不动。但从蜂窝切到 WiFi 这类导致 IP 地址变化的场景,手机需要对新的可达地址重新注册或恢复注册——这也是部分 VoWiFi 场景接续慢的原因之一。
Q: 为什么我的副号有时打不通,主号却正常? A: 优先怀疑隐式注册集配置问题。副号如果应该和主号绑在同一隐式注册集内,一次注册就应全部生效;若网络侧把绑定关系配错,或者副号被单独注销,就会出现“主活副死”的怪象。查法是核对 HSS 里该用户隐式注册集的成员列表与 S-CSCF 的实际注册状态是否一致。
Q: 手机关机时,别人拨我号码,网络是怎么知道我下线的? A: 三种机制兜底:手机关机前的主动注销;注册过期时间到了之后 S-CSCF 清账;以及关机时接入层通知网络、由网络代为执行第三方注销。层层兜底的结果是,S-CSCF 账本里的注册状态高度可信,被叫侧才能放心地直接返回“您拨打的电话已关机”。
本文由「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 等场景全覆盖。
![[知识星球二维码.png]]