好的,我们继续接续上一篇文章,对 3GPP TS 31.102 规范进行深度拆解。


深度解析 3GPP TS 31.102:4.2.26 EFMSISDN (我的号码)

本文技术原理深度参考了3GPP TS 31.102 V18.8.0 (2025-03) Release 18规范中,关于“4.2.26 EFMSISDN (MSISDN)”的核心章节,旨在为读者深入剖析USIM卡中这个看似简单却承载着用户核心社交标识的文件,是如何存储和管理用户的手机号码,并与电话本等功能进行关联的。

在我们探索USIM的旅程中,已经接触了用户的根本网络身份IMSI。但IMSI是一串复杂的内部标识,晦涩难记,从不用于日常通信。在现实世界中,我们的“数字名片”是那个我们每天都在使用的、由11位(或更多)数字组成的手机号码。在3GPP的术语体系中,这个号码被称为MSISDN (Mobile Station International Subscriber Directory Number)。

当我们的主角“李想”拿到一张新SIM卡,他最关心的问题之一就是:“我的号码是多少?”虽然运营商通常会将号码印在卡托上,但一个标准化的、可由手机自动读取的电子记录无疑更为便捷。这个电子记录,就存储在USIM卡的EFMSISDN文件中。

EFMSISDN文件的使命非常纯粹:存储与这张USIM卡关联的一个或多个手机号码。它就像是USIM的“户口本”,明确记录了这张卡的“官方对外身份”。虽然它的结构与我们熟悉的电话本文件EFADN高度相似,但其含义和用途却有着根本的不同。EFADN存储的是“别人的号码”,而EFMSISDN存储的是“我自己的号码”。


1. “我的名片夹”:EFMSISDN的核心价值与应用场景

EFMSISDN的核心价值在于提供一个标准化的、由运营商配置的、记录本机号码的权威来源。

If service n° 21 is “available”, this file shall be present.

This EF contains MSISDN(s) related to the subscriber. In addition it contains identifiers of associated network/bearer capabilities and identifiers of extension records… It may also contain an associated alpha-tagging.

从这段原文我们可以提炼出以下要点:

  1. 服务关联: 它的存在与EF_UST中的服务n°21相关联。

  2. 核心内容: 存储与用户签约的一个或多个MSISDN

  3. 多号码支持: 文件可以存储多个MSISDN。这在“一卡多号”等业务中非常有用,例如,一个主号,一个用于接收快递外卖的副号。

  4. 丰富的关联信息: 就像电话本条目一样,每个MSISDN可以关联一个别名 (alpha-tagging),如“我的工作号”、“我的家庭号”,以及其他技术参数。

EFMSISDN的主要应用场景:

  • 本机号码显示: 这是最直观的应用。李想在手机的“设置”“关于手机”“状态信息”中看到的“本机号码”,其最权威的数据来源就是EFMSISDN

  • 应用自动填充: 许多应用(如社交软件、银行APP)在注册时需要用户输入手机号。如果获得了相应权限,这些应用可以直接从EFMSISDN读取号码并自动填充,简化了用户的注册流程。

  • 一卡多号业务: 当一张USIM卡绑定了多个MSISDN时,手机可以读取这个列表,让用户在拨打电话或发送短信时,选择使用哪个号码作为主叫号码。

  • VoLTE/VoNR注册: 在IMS(IP多媒体子系统)注册过程中,Public User Identity (IMPU) 通常与用户的MSISDN相关。手机可以读取EFMSISDN来辅助构造注册信令。


2. 熟悉的配方:EFMSISDN文件结构与编码剖析

如果你熟悉EFADN(电话本)或EFFDN(固定拨号)的结构,那么EFMSISDN会让你倍感亲切。它几乎复用了同样的设计,体现了3GPP标准在设计上的高度一致性和模块化思想。

2.1 文件结构

EFMSISDN是一个线性固定文件,每一条记录代表一个MSISDN及其关联信息。

表 4.2.26-1: EFMSISDN 文件结构

| 属性 | 值 |

| :--- | :--- |

| Identifier | ‘6F40’ |

| Structure | Linear Fixed |

| Record length| X+14 bytes |

| Update activity| Low |

| Access Conditions| READ: PIN, UPDATE: PIN/ADM, … |

记录内容 (X+14 bytes)

| 字节 | 描述 | M/O | 长度 |

| :--- | :--- | :--- | :--- |

| 1 to X | Alpha Identifier (别名) | O | X bytes |

| X+1 | Length of BCD number (号码长度) | M | 1 byte |

| X+2 | TON and NPI (号码类型和计划) | M | 1 byte |

| X+3 to X+12 | Dialling Number (号码串) | M | 10 bytes |

| X+13 | Capability/Configuration2 Record Identifier | M | 1 byte |

| X+14 | Extension5 Record Identifier | M | 1 byte |

关键特性解读:

  • Access Conditions: UPDATE权限被设置为PIN/ADM。这提供了灵活性。在大多数情况下,MSISDN是由运营商在个人化时写入(ADM),且不允许用户修改。但在某些场景下(如用户通过营业厅APP自助办理副号),运营商可能会授权用户通过PIN验证来添加或修改EFMSISDN中的条目。

  • 记录结构复用:

    For contents and coding of all data items see the respective data items of EFADN.

    规范明确指出,EFMSISDN中所有字段的编码和含义,都与EFADN(电话本)中的相应字段完全相同。这大大降低了手机厂商的实现复杂度,处理EFMSISDN的代码逻辑可以与处理EFADN的复用。

    • Alpha Identifier: 存储号码的别名,如“My Number”。

    • Dialling Number: 使用打包BCD码存储最多20位(10字节)的手机号码。

    • Extension5 Record Identifier: EFMSISDN的一个细微但重要的区别在于,它使用EFEXT5作为扩展文件来存储超长号码,而EFADN使用EFEXT1。这种分离避免了用户电话本中的长号码与本机长号码的扩展记录混淆。

2.2 多号码的优先级

EFMSISDN中存储了多个号码时,哪个是主号呢?

If the USIM stores more than one MSISDN number and the ME displays the MSISDN number(s) within the initialisation procedure then the one stored in the first record shall be displayed with priority.

规范规定,文件中的第一条记录具有最高优先级。如果手机需要在某个地方只显示一个本机号码(如“关于手机”页面),它应该优先显示第一条记录中的号码。

场景化举例:

“谷粒移动”为李想开通了“一卡双号”业务,主号是13800001111,副号是13800002222。运营商通过OTA更新了李想的EFMSISDN文件,其中包含两条记录:

  • 记录1:

    • Alpha ID: “主号”

    • Dialling Number: BCD编码的13800001111

  • 记录2:

    • Alpha ID: “副号”

    • Dialling Number: BCD编码的13800002222

现在:

  • 当李想进入“关于手机”查看时,手机会读取记录1,显示号码为13800001111

  • 当李想发送短信时,手机的短信应用可能会弹出一个选择框,让他选择使用“主号”还是“副号”作为发送号码。这个选择框的内容,正是手机遍历EFMSISDN文件后动态生成的。

3. EFMSISDN的局限性与现代实践

值得注意的是,EFMSISDN中的信息并不总是100%可靠

  • 运营商未配置: 某些运营商可能出于各种原因,在个人化USIM卡时,并未写入EFMSISDN文件。这种情况下,手机将无法通过USIM读取到本机号码。

  • 号码已变更: 如果用户通过携号转网或更换号码,但运营商未能及时通过OTA更新EFMSISDN,那么卡内存储的可能还是旧号码。

正因为如此,现代智能手机操作系统(如Android和iOS)在获取本机号码时,通常会采用一个混合策略

  1. 优先读取USIM: 首先尝试从EFMSISDN读取,因为这是最权威的来源。

  2. 网络下发: 在网络注册成功后,网络侧(核心网的HSS/UDM)也可以通过信令,将用户的MSISDN下发给手机。

  3. 用户手动输入: 如果以上两种方式都失败,手机设置中通常会提供一个选项,让用户手动输入自己的号码。

手机会将从这几个来源获取到的信息进行整合,最终呈现给用户。

总结:“我是谁”的对外宣言

EFMSISDN是USIM中定义“我是谁”的对外宣言。与EF_IMSI这个对内的、网络的根本身份不同,EFMSISDN定义了用户在社交和业务交互中的“公开身份”。

  • 标准化本机号码存储: 提供了一个跨设备、跨平台的标准方式来存储和读取用户的手机号码,极大地便利了设备和应用。

  • 支撑多号码业务: 其支持多记录的线性文件结构,为“一卡多号”等新兴业务提供了天然的底层数据模型。

  • 设计一致性与复用: 通过复用EFADN的结构,体现了3GPP规范设计的模块化和一致性原则,降低了产业的实现成本。

对于李想而言,每当有新的应用需要他的手机号时,那个方便快捷的“自动填充”功能,其背后很可能就有EFMSISDN的默默贡献。这张小小的“名片夹”,虽然只有寥寥数条记录,却承载了他在数字世界中最重要的联系方式,是他所有社交关系的起点。


FAQ环节

Q1:EFMSISDNEFADN(电话本)有什么本质区别?

A1:本质区别在于所有权用途EFMSISDN存储的是**“我自己的号码”,是由运营商分配给这张USIM卡的官方身份,其内容具有权威性,通常由运营商控制。其主要用途是向手机和应用表明本机身份。而EFADN存储的是“别人的号码”**,是用户自己编辑和管理的联系人列表,其内容由用户完全控制。用途是方便用户发起通信。

Q2:如果我的EFMSISDN文件是空的,或者号码是错的,会影响我打电话上网吗?

A2:基本不会影响。正常的通话和数据业务,其身份认证和计费都基于底层的IMSI/SUPI,与EFMSISDN中存储的号码无关。EFMSISDN主要影响的是上层应用的体验,比如本机号码的显示、某些需要读取本机号码的应用(如iMessage、RCS)的自动配置等。即使号码是错的,你依然可以正常接打电话和上网。

Q3:为什么EFMSISDN的更新权限是PIN/ADM?什么情况下会用到PIN?

A3:PIN/ADM的设置提供了灵活性。ADM是默认和主要的方式,即号码由运营商在后台配置,用户不可更改。PIN权限则为一些用户自助业务提供了可能。例如,用户通过运营商的官方APP申请了一个有时效性的虚拟副号(小号)。APP在后台与运营商系统交互成功后,可以触发手机发起一个需要PIN验证的UPDATE命令,将这个新的副号临时写入EFMSISDN中。当副号到期后,再通过类似方式将其删除。

Q4:一个MSISDN号码可以超过10个字节(20位数字)吗?EFMSISDN如何支持?

A4:可以。虽然大多数国家的MSISDN都少于20位,但标准需要考虑极端的可能性。EFMSISDN通过Extension5 Record Identifier字段来支持超长号码。如果一个号码超过20位,前20位会被存储在EFMSISDNDialling Number字段中,同时Extension5 Record Identifier字段会指向EFEXT5文件中的一条特定记录。该记录中存储了号码的剩余部分。手机在读取时,会根据这个“指针”,将两部分数据拼接起来,形成完整的号码。

Q5:我携号转网后,EFMSISDN里的号码会自动更新吗?

A5:理想情况下应该会。携号转网流程完成后,你的新运营商有责任通过OTA(空中下载)机制,向你的USIM卡下发更新指令,修改EFMSISDN以及其他与运营商相关的文件(如EFPNN, EFSPN等)。但实际执行中,这个更新可能会有延迟,或者在某些情况下会失败。这也是为什么有时携号转网后,手机上显示的“本机号码”可能在一段时间内还是旧信息的原因之一。