首页 › deep-tech › 图解IMS注册:SIP如何安家

图解IMS注册:SIP如何安家——两次REGISTER背后的完整信令逻辑

你每天解锁手机、刷微信、看视频时,运营商的网络里有一个“看不见的动作”一直在默默维持着:你的手机已经在IMS(IP Multimedia Subsystem,IP多媒体子系统)里注册过了。正因为这个注册,当别人拨你的号码时,网络才能在几秒钟内找到你、接通你。一旦这个注册悄悄失效,你会发现一个诡异现象:上网一切正常,但电话打不通也接不到。

这篇文章就来拆解IMS注册的完整原理:SIP协议是什么、IMS网络里的四类核心网元如何分工、注册为什么要发两次REGISTER、401挑战响应里藏着什么数学、以及注册成功之后网络如何利用这份“户口档案”把来电送到你手机上。


一、先想清楚:为什么IP电话需要“注册”?

日常类比:你搬进一个新小区,第一件事是去物业登记——“我住在3栋502,快递放门卫”。登记完之后,任何人给你寄快递,只要写你的名字,物业就能查到该送到哪里。你搬家不重新登记,快递就永远找不到你。

传统电路交换网络(2G/3G时代的语音)不需要这个动作,因为手机在哪个基站下、占用哪条电路,交换机是实时知道的——用户位置由“连接”本身携带。但IMS建立在IP网络之上,而IP网络的本质是无连接的:你的手机分配到一个IP地址,网络默认对你“一无所知”。IMS是3GPP从R5开始引入的标准化多媒体子系统,它把IETF的互联网协议(核心就是SIP)搬进了电信网络,用注册(Registration)这个显式动作来弥补无连接网络的“失忆症”:

注册的本质 = 把“我是谁”(SIP身份)和“我在哪”(当前IP地址/联系方式)绑定起来,存进网络的位置数据库。

这个绑定关系有两个用途: 1. 被叫可达:别人呼你时,网络查表就知道往哪个IP地址发INVITE; 2. 业务触发:网络知道你已经在线,才能把彩铃、呼叫转移、语音信箱这些业务挂到你身上。

所以“注册”在IMS里不是可选的握手礼节,而是整个语音业务的基石。


二、SIP:一个“长得像HTTP”的电话信令

IMS没有为语音发明新协议,而是直接采用了互联网世界早已成熟的SIP(Session Initiation Protocol,会话初始协议)。SIP于1999年3月首次标准化(RFC 2543),2002年6月修订为RFC 3261,也就是今天使用的版本。2000年11月,3GPP把SIP接纳为IMS架构的永久信令协议——这是电信史上的一个重要转折点:电信网络第一次大规模拥抱互联网协议。

SIP为什么选择“长得像HTTP”?因为设计者想复用互联网世界已经验证过的一切:文本格式可读(抓包能直接看懂)、请求/响应模型成熟、状态码语义直接照搬(200成功、404找不到、500服务器错)。你用Wireshark抓一个SIP包,肉眼就能读出呼叫的来龙去脉——这在二进制的传统电信信令时代是不可想象的。

SIP定义了十几种请求方法(Method),语音业务最常用的如下:

方法 作用 类比
REGISTER 把To头中的身份与Contact中的地址绑定到位置服务 去物业登记住址
INVITE 发起会话/呼叫 敲门:“在吗,聊聊?”
ACK 对INVITE最终响应的确认 确认收到答复
BYE 结束会话 “就聊到这,再见”
CANCEL 取消尚未应答的请求 敲了门没人应,不等了
UPDATE 不改变对话状态的前提下修改会话参数 聊天中途换个座位
PRACK 对临时响应(1xx)的可靠确认 “我知道你正在想了”
REFER 请求对方发起请求,用于呼叫转移 “你直接找他吧”

响应码分为六类,与HTTP一脉相承:1xx临时响应(正在处理/振铃)、2xx成功、3xx重定向、4xx客户端侧失败(如401未授权、403禁止、404找不到用户)、5xx服务器失败、6xx全局性失败。记住401——它是本文主角,IMS注册的关键就藏在“故意失败一次”里。

SIP默认使用端口5060(明文)和5061(TLS加密),底层可以跑在UDP、TCP或SCTP上。而语音媒体流(真正说话的声音)不走SIP,走RTP/SRTP——SIP只管“怎么接上”,不管“聊什么”,媒体参数协商由SIP消息体里携带的SDP完成。


三、IMS的“四金刚”:一个注册要经过谁?

IMS架构里,一个手机的注册请求要闯过几道关卡。理解每个网元的“人设”,注册流程就不神秘了:

flowchart TD
    UE["UE 手机内的IMS客户端"]
    P["P-CSCF 大门保安"]
    subgraph HOME["归属网络"]
        I["I-CSCF 问询台"]
        S["S-CSCF 总调度室"]
        H["HSS 用户档案库"]
        AS["AS 应用服务器"]
    end
    UE -->|"SIP信令 Gm"| P
    P -->|"Mw"| I
    I -->|"Mw"| S
    S -->|"Cx Diameter"| H
    S -->|"ISC"| AS
网元 全称 人设 核心职责
P-CSCF Proxy-CSCF 大门保安 用户的第一个接触点,注册期间固定不变;校验信令合法性、与终端建立IPsec加密通道、压缩SIP消息(SigComp)省无线带宽
I-CSCF Interrogating-CSCF 问询台 归属域的“门牌号”,地址公布在DNS里(NAPTR/SRV记录);查询HSS为用户挑选一个S-CSCF
S-CSCF Serving-CSCF 总调度室 永远在归属网络;执行注册(绑定身份与地址)、下载并执行用户业务档案、决定是否把呼叫转给应用服务器
HSS Home Subscriber Server 档案库 存放用户签约数据、鉴权密钥、身份信息;类似2G时代的HLR+AuC合体

为什么拆成三个CSCF,而不是一个服务器搞定? 这是IMS设计中最值得咀嚼的取舍:


四、身份证与名片:IMPI和IMPU

IMS里每个人都有两种身份,很多人第一次接触时容易混淆:

对比项 IMPI(私有身份) IMPU(公开身份)
类比 身份证号 名片上的电话
用途 注册、鉴权、计费等网络内部事务 别人呼叫你时使用
数量 每用户只有一个 每个IMPI可对应多个
形式 user.name@运营商域名 SIP URI(sip:xxx@xxx)或Tel URI(tel:+8613...)
是否保密 仅网络和终端知道 可印在名片上

你拨给别人看的号码是IMPU(Tel URI形式),而手机实际拿来做注册鉴权的是IMPI。一个IMPI名下可以挂多个IMPU(比如同一个用户既有语音号码又有视频会议地址),这些IMPU还可以组成隐式注册集(Implicit Registration Set)——注册一次,整组身份全部生效,避免手机为每个身份发一轮REGISTER。

另外,IMS终端里通常有一张逻辑上的ISIM应用(多在USIM卡里),存着IMPI、IMPU和归属域名称,注册时直接取用。


五、重头戏:两次REGISTER的完整注册流程

现在进入本文的核心。IMS注册最精妙的设计是:成功的注册,一定是“失败”过一次的注册。第一次REGISTER注定收到401,这不是出错,而是精心设计的挑战-应答(Challenge-Response)鉴权。

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: 查询该用户由哪台S-CSCF服务
    H-->>I: 返回S-CSCF地址
    I->>S: 转发REGISTER
    S->>H: 请求鉴权向量
    H-->>S: 返回 RAND AUTN XRES 和密钥
    S-->>P: 401 Unauthorized 附带nonce
    P-->>UE: 401 附带nonce和加密算法
    Note over UE,P: 双方协商并建立IPsec安全通道
    UE->>P: REGISTER 第二次 带RES和security-verify
    P->>S: 转发REGISTER
    S->>S: 校验RES与XRES是否一致
    S->>H: 下载用户业务档案
    H-->>S: 返回IMPU列表和iFC规则
    S-->>UE: 200 OK 注册成功
    Note over S,H: S-CSCF随后向AS发起第三方注册

第一步:P-CSCF发现——先找到大门

注册之前,手机得知道P-CSCF的地址。途径有多种:P-CSCF地址可以在附网过程中由网络下发(4G/5G里通过PCO字段携带),也可以由DHCP+DNS解析得到,或预配置在终端里。这解释了一个现网现象:如果P-CSCF地址下发异常,手机连REGISTER都发不出去,信令层面表现为“无注册请求”,而不是注册失败。

第二步:第一次REGISTER——探路的“裸请求”

手机发出第一个REGISTER,里面带上IMPI、IMPU、归属域名和Contact地址(自己的IP和端口),但不带任何鉴权凭证——因为手机此时根本不知道该用什么“暗号”。这个请求看起来注定失败,它的真实目的是:

  1. 让网络告诉手机“你该用什么方式证明自己”(鉴权方案、加密算法列表);
  2. 让P-CSCF和UE协商好IPsec安全通道的参数。

第三步:401挑战——网络抛出随机考题

S-CSCF收到注册请求后,向HSS要一组鉴权向量(Authentication Vector),包含:

S-CSCF把RAND等信息打包成nonce(一次性数)放进401 Unauthorized响应发回。这个“失败”响应本质上是一句话:“请用你的USIM卡回答这道随机题。”随机性保证每次注册的题目都不同——重放旧答案毫无用处,这就是防重放攻击的核心。

第四步:手机作答——卡里藏着“榨汁机”

手机收到401后,把RAND喂给USIM/ISIM卡。卡里存着一根与网络共享的根密钥K(从头到尾不出卡),卡上的鉴权算法族 $f_1 \sim f_5$ 像同一台榨汁机的不同档位,输入RAND榨出各种产物:

$$XRES = f_2(K, RAND)$$

$$CK = f_3(K, RAND), \quad IK = f_4(K, RAND)$$

手机还要用AUTN做一件反向验证:AUTN里含有消息鉴别码 $MAC = f_1(K, SQN, RAND, AMF)$ 和被掩码的序列号 $SQN \oplus AK$。手机用同样的方法算一遍MAC,对得上,说明这个挑战真的来自持有根密钥的归属网络,而不是伪基站伪造的——这就是双向鉴权(网络验你,你也验网络)。序列号SQN则防止网络侧的旧挑战被录下来重复使用。

第五步:第二次REGISTER——带着答案和“回执”再来

手机把算出的XRES(以摘要形式放在Authorization头里)连同security-verify头一起放进第二个REGISTER。security-verify是对P-CSCF在401里给出的安全配置的“回执确认”,确保中间没有人在安全协商上动过手脚。此后Gm接口(UE到P-CSCF)的信令就在IPsec隧道里加密传输了。

S-CSCF比对手机交上来的RES与HSS给的XRES。这里顺便说一下SIP摘要鉴权的通用数学骨架(IMS用AKA派生值替代静态密码,骨架相同):

$$HA1 = H(username : realm : password)$$

$$HA2 = H(method : uri)$$

$$response = H(HA1 : nonce : nc : cnonce : qop : HA2)$$

注意密码从不出现在空中接口上——双方比对的只是密码经过哈希搅拌后的产物,窃听者拿到response也无法反推密钥。

第六步:200 OK与“户口档案”入库

鉴权通过后,S-CSCF做两件大事:

  1. 写入位置绑定:在S-CSCF的数据库里记下“IMPU → Contact地址(该用户当前IP)”,这就是那份“户口档案”;
  2. 下载业务档案:通过Cx接口从HSS取回用户的IMPU列表和iFC过滤规则,为今后的业务触发做好准备。

然后沿原路返回200 OK,注册成功。响应里带有expires(有效期,运营商 typically 设几万秒),手机必须在到期前刷新注册(重发REGISTER),否则绑定过期被清除——这就是“待机几天后突然打不通电话”这类诡异问题的经典根源。

第七步:第三方注册——替用户去AS“报个到”

注册成功后还有一个容易忽略的收尾动作:S-CSCF代替用户向应用服务器(AS)发送REGISTER(即“第三方注册”),通知AS“该用户已在线,可触发业务了”。彩铃、语音信箱等AS正是借此知道用户的可达状态。你可以在现网信令里看到一条由S-CSCF发给AS的REGISTER——它不是用户发的,所以叫“第三方”。


六、注册之后:一通来电是如何被“户口档案”找到你的

注册建立了“身份证 → 住址”的映射,那么真实来电时这张地图如何发挥作用?看被叫方向的寻址过程:

sequenceDiagram
    participant A as 主叫UE
    participant S1 as 主叫侧S-CSCF
    participant I as 被叫归属I-CSCF
    participant H as 被叫HSS
    participant S2 as 被叫S-CSCF
    participant B as 被叫UE
    A->>S1: INVITE 拨打被叫号码
    S1->>I: 路由到被叫归属域
    I->>H: 查询被叫注册在哪台S-CSCF
    H-->>I: 返回S2地址
    I->>S2: 转发INVITE
    S2->>S2: 查注册库 用Contact找到被叫IP
    S2->>B: 经P-CSCF送达INVITE
    B-->>A: 183 会话进展 180 振铃 200 OK

关键点在于:INVITE进入被叫归属域时,网络只知道你的IMPU,不知道你的IP。是S-CSCF查注册时写入的绑定关系才补上了“最后一公里”的地址。如果此刻你的注册已过期,S-CSCF会视签约情况返回404(用户不存在)或按“未注册用户”流程触发呼转业务(比如转入语音信箱)——呼转到语音信箱,本质上就是“注册失效/未接听”时的业务兜底在起作用。

同时注意主叫侧:主叫S-CSCF收到INVITE后并不直接路由,而是先按iFC规则把请求交给各AS“过一遍”(挂彩铃的加彩铃,做号码翻译的做翻译),这一圈下来才继续前进。iFC按优先级顺序匹配——这正是IMS“控制与业务分离”设计在日常呼叫中的体现。


七、现网实战:注册问题的调试地图

理解原理后,工程师排障就有了清晰的路标。所有IMS语音问题的第一排查对象永远是注册状态:

现象 高概率原因 排查抓手
发不出REGISTER P-CSCF地址未下发/下发错误 检查附网流程中PCO携带的P-CSCF地址
反复401、始终停在第二次REGISTER前 SQN失步(卡与HSS序列号不同步)、USIM鉴权失败 查看HSS/MME侧鉴权记录,做SQN重同步
收到403 Forbidden RES与XRES不一致(鉴权失败)或IMPI/IMPU不匹配 核对签约的IMPI、IMPU配置
401后无第二次REGISTER security-verify校验失败(如P-CSCF重启导致安全参数变化) 抓Gm口信令比对security-server/security-verify
注册成功但过几小时来电不通 注册刷新失败:NAT表项老化、无线侧休眠、expires周期异常 检查keepalive与NAT超时配置
注册成功但某业务不触发 iFC未配置/优先级错误、第三方注册失败 检查HSS签约的iFC与S-CSCF发给AS的REGISTER

三个常见误解,值得专门澄清:

  1. “IMS注册 = 数据网络注册” —— 错。手机先要完成EPC/5GC的附网并获得默认承载(这是“接入层”的注册),IMS注册是在这之上的应用层注册。两层注册各自独立,任何一层出问题语音都挂。这也是为什么“能上网”不代表“能打电话”——上网只需第一层成功。
  2. “注册是一次性动作” —— 错。注册是有租期的状态,需要周期性续租。终端的省电策略、NAT设备的老化时间、expires取值三者之间需要协调,任何一环超时都会导致“静默掉注册”。
  3. “401是故障” —— 错。第一次REGISTER收到401是设计好的正常流程。真正要警惕的是401之后没有下文,或出现403/404。抓包时看到401不要慌,看到连续多个401才要查。

常见问题

Q1:VoLTE和VoNR的注册有什么区别? A:从IMS的角度看几乎没有区别——两者都在4G/5G包交换网络上完成同样的SIP注册流程。区别只在底层承载:VoLTE的IMS信令和媒体跑在LTE的默认/专有承载上,VoNR跑在5G NR的承载上。所以掌握了IMS注册原理,就同时掌握了VoLTE和VoNR的“上半场”,下层承载差异不影响信令逻辑。

Q2:Wi-Fi Calling(VoWiFi)也要做IMS注册吗? A:要。VoWiFi的本质是让IMS注册跑在不可信的IP网络上(Wi-Fi),为此终端先与运营商的ePDG网关建立IPsec隧道(此时依赖EAP-AKA鉴权),再在这个加密隧道里执行与普通VoLTE一模一样的SIP注册。你可以理解为:VoWiFi = 先修一条加密山路,再走同一条注册大道。

Q3:为什么我的手机关机再开机,有时别人的来电还是打不通? A:开机后终端要重新走完整注册流程(新RAND新挑战)。如果开机后IMS注册失败(比如SQN失步、P-CSCF不可达),数据业务仍可能正常,此时来电会被网络判为“不可达”,触发呼转或听“您拨打的用户暂时无法接通”。遇到此类投诉,先查IMS注册状态,再查无线。

Q4:REGISTER里不带密码,那鉴权到底比对了什么? A:比对的是“根密钥对随机数的运算结果”。根密钥K存在USIM卡和HSS(AuC功能)两端,从不在空中传输。双方各自用同样的算法族对同一个RAND做运算,S-CSCF比对手机上交的RES与HSS预留的XRES。窃听者即便截获全部信令,也无法从运算结果反推出K——这是挑战-应答机制的安全根基。

Q5:一个手机号为什么能同时登录多台设备(如手表副设备)? A:这利用了IMPU可共享的特性——多个终端的IMPI各自独立,但可以绑定同一个IMPU(例如家庭共享号码)。来电时S-CSCF按注册记录把INVITE分发给所有绑定该IMPU的设备。同一用户多设备场景(多注册)在SIP机制上是支持的,每个设备有自己的Contact。


参考来源

  1. Camarillo, G. & García-Martín, M. A., The 3G IP Multimedia Subsystem (IMS): Merging the Internet and the Cellular Worlds, Wiley — IMS经典教材,注册流程与安全机制的权威论述
  2. Poikselkä, M. et al., The IMS: IP Multimedia Concepts and Services, Wiley — IMS概念与业务触发(iFC)的系统化讲解
  3. Johnston, A. B., SIP: Understanding the Session Initiation Protocol, Artech House — SIP协议细节与鉴权流程的工程视角解读

本文由「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学通信知识星球海报-扫码加入