首页 › deep-tech › 一条REGISTER:手机的IMS登录原理

一条REGISTER:手机的IMS登录原理

打电话之前,手机先干了件你没看见的事

回想一下你用微信的过程:打开App,输入账号密码,登录成功,然后才能发消息。你以为打电话不需要这一步?其实需要。

在2G、3G的电路交换时代,打电话更像“接专线”:你拨号,网络在两个电话机之间焊一条实实在在的电路,通话结束拆线。那时“你的号码”是那根线的属性,线通了,你就存在。

到了4G时代,一切语音都变成了IP数据包。LTE网络本身只管搬包,它不知道、也不关心“13800138000”是谁。号码不再是线的属性,而变成了账号的属性。于是打电话这件事,被拆成了两步:先在一个叫IMS(IP多媒体子系统)的系统里“登录账号”,再通过这个账号发起“通话会话”。

那个“登录”动作,就是一条SIP的REGISTER消息。你每次开机、每次从飞行模式恢复,手机都会悄悄发出这条消息——它就是打电话的前置登录。理解了注册,你就理解了VoLTE/VoNR一切信令行为的起点。

IMS:架在IP网络上的一座电话营业厅

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就带“密码”,密码就得在空口和传输网里跑一趟,被截获的风险始终存在。挑战应答机制把这个问题绕开了:

  1. S-CSCF发给手机一个随机数RAND——每次登录,考题都不一样;
  2. 手机把这个RAND喂给SIM卡。SIM卡和网络侧HSS共享同一把根密钥K,这把钥匙从写卡那天起就 Never 离开过SIM芯片;
  3. SIM卡用密钥对RAND做运算,得出应答RES。网络侧用同样的输入算出“标准答案”XRES;
  4. 手机只把RES交上去。网络上跑的永远只有考题和答案,钥匙本身寸步不离SIM卡。

即使攻击者完整截获了一轮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地址变了、承载重建了,也都会触发重新注册。

注册只是登录,INVITE才是拨号

注册成功后, 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是先谈妥一条带质量保证的逻辑路。

VoNR:换了路,没换营业厅

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),占用空口资源极少。设计上这就是“语音与数据并发”的原始诉求。

参考来源

  1. SIP: Session Initiation Protocol (RFC 3261) — SIP协议与REGISTER/401挑战应答机制的原始定义
  2. HTTP Digest Authentication using AKA (RFC 3310) — IMS摘要认证与AKA结合的算法说明
  3. IP Multimedia Subsystem - Wikipedia — IMS架构、CSCF分工与标识体系的权威概述
  4. Gonzalo Camarillo《IMS:IP多媒体子系统概念与服务》(人民邮电出版社中译本)— IMS注册、第三方注册与业务触发机制的系统性教材
  5. 《5G核心网原理与实践》(51学通信出品)— 5QI、QoS流与语音承载在5G阶段的落地细节

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入