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


深度解析 3GPP TS 31.102:4.2.71 EFOPL & 4.2.72 EFPNN (网络名称的“精准定位”)

本文技术原理深度参考了3GPP TS 31.102 V18.8.0 (2025-03) Release 18规范中,关于“4.2.71 EFOPL (Operator PLMN List)”和“4.2.72 EFPNN (PLMN Network Name)”的核心章节,旨在为读者深入剖析手机屏幕上那些带有地域特色的运营商名称(如“北京移动”、“广东联通”)是如何实现的。USIM卡通过EFOPLEFPNN这对黄金搭档,将网络名称显示的颗粒度从“国家级”提升到了“省市级”甚至更精细的“区域级”。

在之前的章节中,我们介绍了EFSPN,它让虚拟运营商可以显示自己的品牌。但是,基础运营商(MNO)也有自己精细化显示的需求。

我们的主角“李想”是一位经常出差的商务人士。他发现了一个有趣的现象:虽然他的手机卡和注册的网络并没有变(MCC/MNC都是460-00),但当他在北京时,手机左上角显示的是“北京移动”;而当他飞到上海落地后,手机显示的却自动变成了“上海移动”。

手机是如何知道它现在应该显示哪个地名的呢?仅仅靠MCC和MNC显然不够,因为它们在全国是统一的。答案就是:手机利用了更精细的位置信息——位置区码 (LAC)跟踪区码 (TAC),并结合USIM卡中的EFOPLEFPNN文件,实现了这种“千人千面”的精准显示。

  • EFOPL (Operator PLMN List): “运营商PLMN列表”,实际上是一张**“区域定义表”**。它划定了一系列地理区域(通过LAC/TAC范围),并为每个区域指定一个“名称索引”。
  • EFPNN (PLMN Network Name): “PLMN网络名称”,它是一个**“名称数据库”**。它存储了各种具体的网络名称字符串(如“北京移动”、“上海移动”)。

这对文件协同工作,实现了“在什么地方 (OPL) 显示什么名字 (PNN)”的逻辑闭环。


1. “区域划界者”:4.2.71 EFOPL (运营商PLMN列表)

EFOPL的核心价值在于,它不仅能识别网络(PLMN),还能识别网络下的具体区域

If service n° 37 is “available”, this file shall be present. This EF contains a prioritised list of Location Area Information (LAI) or Tracking Area Identity (TAI) identities that are used to associate a specific operator name contained in EFPNN or EFSPN with the LAI/TAI.

这段原文指出了EFOPL的关键作用:将位置区域 (LAI/TAI)特定的运营商名称 (contained in EFPNN) 关联起来。

EFOPL的工作机制

EFOPL是一个线性固定文件,每一条记录定义了一个“区域规则”。

记录结构剖析:

每一条EFOPL记录包含以下核心字段:

  1. PLMN ID (3 bytes): MCC + MNC。
  2. LAC/TAC Start (2 bytes): 区域的起始位置区码/跟踪区码。
  3. LAC/TAC End (2 bytes): 区域的结束位置区码/跟踪区码。
  4. PNN Record Identifier (1 byte): 指向EFPNN文件中某条记录的指针

场景化举例:

中国移动希望实现分省显示。假设北京的TAC范围是0x10000x1FFF,上海的TAC范围是0x20000x2FFF

运营商会在李想的USIM卡EFOPL中预置如下记录:

  • 记录1 (北京区域):
    • PLMN: 460-00
    • TAC范围: 0x1000 - 0x1FFF
    • PNN指针: '01' (指向EFPNN第1条记录)
  • 记录2 (上海区域):
    • PLMN: 460-00
    • TAC范围: 0x2000 - 0x2FFF
    • PNN指针: '02' (指向EFPNN第2条记录)

当李想在北京(假设当前基站TAC为0x1005)时,手机读取当前TAC,遍历EFOPL,发现0x1005落在记录1定义的[0x1000, 0x1FFF]范围内。于是,手机确定应该使用EFPNN的第1条记录来显示名称。


2. “名称数据库”:4.2.72 EFPNN (PLMN网络名称)

EFPNN是真正存储那些显示在屏幕上的字符串的地方。

If service n° 45 is “available”, this file shall be present. This EF contains the full and short form versions of the network name…

EFPNN不仅存储全称,还可以存储简称,以适应不同屏幕尺寸的显示需求。

EFPNN文件结构与编码剖析

EFPNN也是一个线性固定文件,每条记录存储一个网络名称信息。

表 4.2.72-1: EFPNN 文件结构

属性
Identifier’6FC5’
StructureLinear Fixed
Record lengthX bytes
Update activityLow
Access ConditionsREAD: ALWAYS, UPDATE: ADM

记录内容 (X bytes)

字节描述M/O长度
1 to XNetwork name TLV objectsMX bytes

编码核心:网络名称 TLV

EFPNN的记录内容由一个或多个TLV对象组成,主要包括:

  • Full Network Name TLV (Tag ‘43’): 网络全称,如“China Mobile Beijing”。
  • Short Network Name TLV (Tag ‘45’): 网络简称,如“CM BJ”。

每个名称字段内部还可以包含编码信息(如指明是使用英语ASCII还是中文UCS2编码),以支持国际化显示。

场景化举例(续):

接上例,EFPNN文件中的记录内容如下:

  • 记录1 (对应北京):
    • Full Name: “北京移动” (UCS2编码)
    • Short Name: “北京移动”
  • 记录2 (对应上海):
    • Full Name: “上海移动” (UCS2编码)
    • Short Name: “上海移动”

当李想在北京时,手机通过EFOPL的指引找到EFPNN的记录1,最终在屏幕上显示出“北京移动”。


3. EFOPL/EFPNNEFSPN 的协同与优先级

我们现在有了两套显示机制:基于HPLMN/VPLMN判断的EFSPN,和基于精细位置判断的EFOPL/EFPNN。它们如何共存?

3GPP定义了一套复杂的优先级规则(TS 22.101),简而言之:

  1. EFSPN (服务提供商名称): 代表了用户的签约品牌。如果EFSPN的显示条件满足(例如,要求在归属网络也显示SPN),它通常具有最高优先级或者会与网络名称组合显示
  2. EFOPL/EFPNN (精细化网络名称): 代表了当前实际物理网络的定制化名称。它的优先级高于手机内置的默认网络名称列表。
  3. 默认名称: 如果以上文件都不存在,手机才会使用自己固件里预存的“MCC/MNC 网络名称”映射表(例如显示最基础的“China Mobile”)。

组合显示效果: 很多时候,手机会将两者组合。例如,虚拟运营商用户可能看到“谷粒移动 | 联通 4G”。这里“谷粒移动”来自EFSPN,而“联通”可能就来自通过EFOPL/EFPNN匹配到的当前网络名称。

总结:方寸屏幕上的“地理与人文”

EFOPLEFPNN这对文件,是运营商精细化运营在USIM卡上的体现。它们不仅是一个技术实现,更是一种商业和文化策略的载体。

  • 实现精细化运营: 允许运营商根据行政区划(省、市)甚至更小的校园、园区(通过特定的TAC规划),向用户展示定制化的网络名称,增强用户的在地感和归属感。
  • 灵活的解耦设计: EFOPL负责“划地盘”,EFPNN负责“起名字”。这种解耦设计使得一个名称(如“中国移动”)可以被多个不同的区域记录所共享,节省了存储空间,也便于维护。
  • 提升漫游体验: 在国际漫游场景下,运营商也可以通过预置国外的区域信息,将合作伙伴的网络名称显示为更友好、更易懂的中文名称。

对于李想来说,当他下飞机看到手机上自动跳出的“欢迎来到上海”以及左上角变成“上海移动”的那一刻,他感受到的是一种无缝衔接的、贴心的服务体验。而这一切,都是手机在后台默默地查阅EFOPL这张精密地图,并从EFPNN这个丰富的名称库中找到了准确答案的结果。


FAQ环节

Q1:EFOPL是只能用TAC(4G/5G)吗?LAC(2G/3G)能用吗? A1:都能用。EFOPL的记录结构设计得非常灵活。它定义的区域范围是基于LAC/TAC的。在2G/3G网络中,手机获取的是LAC(Location Area Code);在4G/5G网络中,手机获取的是TAC(Tracking Area Code)。EFOPL中的范围比对逻辑对两者都适用,手机会根据当前注册的网络类型,自动选择使用LAC还是TAC去和列表中的值进行比对。

Q2:如果我所在区域的TAC不在任何EFOPL记录的范围内,手机显示什么? A2:这称为“未匹配”状态。此时,手机会回退到下一级显示策略。

  1. 它可能会去检查是否有一个“通配符”记录(例如,TAC范围是0000FFFF的记录),作为该PLMN的默认名称。
  2. 如果没有通配符记录,它可能会直接显示该PLMN的默认名称(可能存储在手机固件中,或EFPNN的某条默认记录中)。

Q3:运营商修改了网络名称(例如从“中国网通”变成了“中国联通”),需要换卡才能更新显示吗? A3:不需要。EFPNNEFOPL都是可以通过**OTA(空中下载)**进行远程更新的。运营商只需要在后台系统发起一个OTA任务,向所有受影响用户的USIM卡推送新的EFPNN记录内容,手机在接收并刷新后,屏幕上的显示就会自动变为新的名称。

Q4:EFPNN里的名称支持Emoji表情吗? A4:技术上取决于编码方式和手机的支持程度。EFPNN支持UCS2(Unicode)编码,理论上可以包含Emoji字符。如果运营商在名称字符串中编入了Emoji的Unicode码,且用户的手机字库支持显示该Emoji,那么屏幕上就可以显示出来。不过出于兼容性和严肃性的考虑,运营商很少在正式的网络名称中使用Emoji。

Q5:为什么有时候手机显示的名称和EFPNN里定义的不一样? A5:这可能是手机操作系统(OS)的覆盖行为导致的。一些手机厂商为了统一用户体验,可能会在操作系统层面对特定的MCC/MNC强制显示内置的名称,而忽略USIM卡中的EFPNN设置。或者,手机当前处于Wi-Fi通话(VoWiFi)状态,此时显示的名称可能会遵循另一套基于Wi-Fi的命名规则。3GPP标准虽然定义了USIM的行为,但最终的屏幕显示权掌握在手机OS手中。