好的,我们继续接续上一篇文章,对 3GPP TS 31.102 规范进行深度拆解。
深度解析 3GPP TS 31.102:4.2.27 EFSMSP (短信业务参数)
本文技术原理深度参考了3GPP TS 31.102 V18.8.0 (2025-03) Release 18规范中,关于“4.2.27 EFSMSP (Short message service parameters)”的核心章节,旨在为读者深入剖析在发送短信这一简单动作的背后,USIM卡是如何通过
EFSMSP文件,像一个智能“邮局”,为手机预设好“信封格式”、“邮寄路线”和“回执选项”等一系列默认参数的。
在之前的章节中,我们已经探讨了EFSMS如何像一个仓库一样存储短信。但发送一条短信,不仅仅是把内容写好就行了,还需要一系列的“打包”和“投递”参数。比如:
-
这条短信应该通过哪个短信中心(SMSC)发送?
-
短信内容的编码格式是什么?
-
如果对方手机暂时无法接收,这条短信应该在网络上保留多久?
虽然这些参数大部分都可以由网络默认提供,但为了给用户和运营商提供更大的灵活性和便利性,3GPP规范设计了EFSMSP文件。
EFSMSP,全称 Short Message Service Parameters,即“短信业务参数”。它的核心使命,就是在USIM中预存一个或多个“短信发送模板”。当我们的主角“李想”编写完一条新短信点击发送时,如果他没有手动设置所有高级参数,手机就会自动从EFSMSP中读取这些默认值,来“填充”短信的技术头部信息(TPDU),然后再将其发送出去。
1. “智能短信模板”:EFSMSP的核心价值
EFSMSP的核心价值在于简化用户的发送操作,并为运营商提供一个标准化的短信业务参数配置入口。
If service n° 12 is “available”, this file shall be present.
This EF contains values for Short Message Service header Parameters (SMSP), which can be used by the ME for user assistance in preparation of mobile originated short messages. For example, a service centre address will often be common to many short messages sent by the subscriber.
这段原文非常清晰地阐述了EFSMSP的用途:辅助用户准备待发送的短信 (user assistance in preparation of mobile originated short messages)。
它的主要作用体现在:
-
预设关键参数: 最常见的应用就是预设短信服务中心地址 (Service Centre Address, SCA)。SCA是所有短信收发的必经之路,相当于“邮政总局”的地址。这个地址通常对一个运营商的所有用户都是固定的。将其预存在USIM中,手机就无需在每次发送时都向网络查询或让用户手动输入。
-
提供多套模板:
EFSMSP是一个线性固定文件,可以存储多条记录。这意味着运营商可以预设多个不同的“发送模板”。例如,记录1是用于发送普通文本短信的模板,记录2可能是用于发送彩信通知或WAP Push的特殊格式短信的模板。 -
用户自定义: 用户也可以通过手机的短信高级设置菜单,编辑或添加自己的发送模板。
场景化举例:
李想的手机中EFSMSP文件被运营商预置了一条记录,其中包含了中国移动的短信中心号码 +8613800XYZ500。
当李想写完一条短信点击“发送”时,手机的短信应用会执行以下流程:
-
构建短信的TPDU(传输协议数据单元)。
-
应用发现李想没有手动指定要使用哪个短信中心。
-
手机自动读取
EFSMSP的第一条记录(默认模板)。 -
从该记录中,手机提取出短信中心地址
+8613800XYZ500,以及其他预设参数(如协议标识符、数据编码方案等)。 -
用这些参数填充TPDU的相应字段。
-
最终将这个完整的“数据包裹”发送给网络。
整个过程对李想完全透明,他只关心短信内容,而所有复杂的后台参数都由EFSMSP提供的模板自动完成了。
2. 精巧的“参数集装箱”:EFSMSP文件结构与编码剖析
EFSMSP的每一条记录都是一个包含了所有核心短信参数的“集装箱”。其设计的巧妙之处在于,它不仅存储了参数值,还通过一个“参数指示器”字节,来标明哪些参数是有效的。
2.1 文件结构
表 4.2.27-1: EFSMSP 文件结构
| 属性 | 值 |
| :--- | :--- |
| Identifier | ‘6F42’ |
| Structure | Linear Fixed |
| Record length| 28+Y bytes |
| Access Conditions| READ: PIN, UPDATE: PIN, … |
记录内容 (28+Y bytes)
| 字节 | 描述 | M/O | 长度 |
| :--- | :--- | :--- | :--- |
| 1 to Y | Alpha-Identifier (模板别名) | O | Y bytes |
| Y+1 | Parameter Indicators (参数指示器) | M | 1 byte |
| Y+2 to Y+13 | TP-Destination Address (目标地址) | M | 12 bytes |
| Y+14 to Y+25 | TS-Service Centre Address (服务中心地址) | M | 12 bytes |
| Y+26 | TP-Protocol Identifier (协议标识符) | M | 1 byte |
| Y+27 | TP-Data Coding Scheme (数据编码方案) | M | 1 byte |
| Y+28 | TP-Validity Period (有效期) | M | 1 byte |
逐项解读:
-
Alpha-Identifier: 模板的名称,如“默认设置”、“彩信通知”。这个字段是可选的,长度为Y字节。
-
Parameter Indicators: 这是记录的**“目录”**。一个1字节的位图,每一位对应后续的一个参数字段。如果该位为
0,表示对应的参数字段是有效的;如果为1,则表示该参数字段无效,应被忽略。
Coding: allocation of bits:
bit number Parameter indicated.
1 TP-Destination Address.
2 TS-Service Centre Address.
3 TP-Protocol Identifier.
…
Bit value Meaning.
0 Parameter present.
1 Parameter absent.
这种设计极大地提高了存储的灵活性。一个模板可以只定义短信中心地址,而将其他参数留空,由手机或网络提供默认值。
2.2 核心短信参数详解
EFSMSP中存储的,都是定义在 TS 23.040 和 TS 24.011 中的核心TPDU参数。
-
TP-Destination Address (目标地址): 这个字段比较特殊,它允许模板预设一个“默认收件人”。例如,可以创建一个专门用于“发送给客服”的模板,其中就预置了客服的号码。
-
TS-Service Centre Address (服务中心地址): 这是
EFSMSP最重要的字段,定义了短信的“投递路径”。 -
TP-Protocol Identifier (协议标识符): 1字节,用于告知接收方手机,这条短信的上层协议是什么。例如,普通短信、SIM卡数据下载、语音信箱通知等都有不同的PID。
-
TP-Data Coding Scheme (数据编码方案): 1字节,定义了短信内容的编码格式。如7-bit、8-bit或UCS2(用于中文等非ASCII字符)。它还包含了“消息等级”(如普通、闪信)和消息类型的指示。
-
TP-Validity Period (有效期): 定义了如果短信无法立即送达,它应该在短信中心(SMSC)保留多久。可以设置从几分钟到几周不等。超过这个期限,如果短信仍未送达,就会被SMSC丢弃。
场景化举例(深入编码):
运营商希望为李想预设一个默认模板,只包含短信中心地址,其他参数由手机自行决定。
-
Alpha-Identifier: 不需要,长度Y=0。
-
Parameter Indicators: 只有“服务中心地址”(bit 2)是有效的。根据规则,有效为0,无效为1。所以这个字节的二进制是
1111 1101(只有b2为0),十六进制为'FD'。 -
TP-Destination Address: 无效,用
'FF'填充12个字节。 -
TS-Service Centre Address: 包含运营商的短信中心号码,经过BCD编码后存入这12个字节。
-
其他参数: 均无效,用
'FF'填充。
最终,手机读取这条记录时,首先解析“参数指示器”为'FD',立刻明白只有“服务中心地址”字段是需要关心的,其他字段都可以直接跳过,大大提高了处理效率。
3. EFSMSP 与 EFSMS 的关系
EFSMSP和EFSMS在短信发送流程中扮演着“模板”和“成品”的关系。
-
EFSMSP提供了默认参数(模板)。 -
用户在手机上编写短信,提供了核心内容(用户数据)和收件人号码(目标地址)。
-
手机在发送时,将用户输入的内容与
EFSMSP提供的默认参数进行合并,构建出完整的、待发送的短信PDU。 -
这个最终的“成品”PDU,如果需要保存草稿或已发送记录,就会被存入
EFSMS的“仓库”中。
EFSMSP是“菜谱”,EFSMS是“做好的菜”。
总结:看不见的便利,短信发送的“默认项”
EFSMSP文件通过在USIM中预设短信参数模板,极大地简化了用户的操作,并为运营商提供了一个标准化的配置入口。它虽然不像EF_IMSI那样事关身份根本,也不像EF_Keys那样直接参与加密运算,但它在提升用户体验和保障业务基础配置方面,发挥着不可或缺的作用。
-
简化用户操作: 将复杂的短信技术参数后台化、模板化,让用户只需专注于内容和收件人。
-
灵活的参数配置: 通过“参数指示器”位图,实现了对参数集的高度灵活组合,既节省了空间,又提高了解析效率。
-
多模板支持: 允许为不同的短信业务(如普通短信、MMS通知、设备管理短信)配置不同的发送参数,为业务的差异化和扩展提供了支持。
对于李想而言,他每次轻松地点击“发送”短信,背后都有EFSMSP这个“智能助手”在为他默默地填写着各种复杂的“技术表格”。这份看不见的便利,正是EFSMSP存在的价值,也是3GPP标准在细节处优化用户体验的体现。
FAQ环节
Q1:EFSMSP中的参数和手机短信设置里的“高级选项”有什么关系?
A1:EFSMSP提供了默认值。手机短信设置里的“高级选项”(如“有效期”、“请求发送报告”、“服务中心号码”)则是让用户可以覆盖这些默认值。当用户发送短信时,手机的逻辑是:优先使用用户在“高级选项”中手动设置的参数;如果用户没有手动设置,则回退到使用EFSMSP中对应模板的默认参数;如果EFSMSP中该参数也未定义(被标记为absent),则可能使用手机内置的默认值或由网络提供。
Q2:我可以有多张EFSMSP模板吗?如何选择使用哪个?
A2:可以。EFSMSP是线性固定文件,可以存储多条记录,每一条就是一个模板。规范规定,第一条记录是默认模板。在没有特殊指定的情况下,手机会使用第一条记录。一些功能更丰富的手机或短信应用,可能会读取EFSMSP中的所有模板(通过Alpha-Identifier来区分),并在发送时提供一个下拉菜单,让用户选择使用哪个“发送配置文件”。
Q3:EFSMSP中的“协议标识符 (TP-PID)”有什么具体作用?
A3:TP-PID非常重要,它告诉接收方的手机应该“如何处理”这条短信。例如:
-
PID为普通短信:手机直接存入收件箱。
-
PID为“替换旧短信”类型:手机会用新短信覆盖掉之前发送的某条同类短信。
-
PID为“SIM卡数据下载”:手机不会显示短信,而是将其内容传递给USIM卡。
-
PID为“语音信箱状态”:手机会根据短信内容,点亮或熄灭语音信箱的提示图标。
EFSMSP可以为特定业务(如语音信箱)预设好专门的PID,确保相关短信能被正确处理。
Q4:为什么EFSMSP的更新权限是PIN,而不是更安全的PIN2?
A4:这是一个在便利性和安全性之间的权衡。短信参数(尤其是短信中心号码)有时确实需要用户根据所处地区或网络进行修改。使用PIN码作为保护,在提供了基本安全保障(确认是机主本人操作)的同时,降低了用户的操作门槛。相比之下,FDN/BDN等强管控功能,其修改权限更为严格,因此使用了更高级别的PIN2码。
Q5:如果EFSMSP文件损坏或为空,我还能发短信吗?
A5:很可能可以。在这种情况下,手机在构建短信PDU时会发现无法从USIM获取默认参数。此时,它会启用备用方案:1) 使用手机内置的默认参数:手机厂商通常会在软件中预置一套标准的短信参数。2) 向网络查询:在某些情况下,手机可以通过信令向网络查询必须的参数,如短信中心地址。所以,EFSMSP的缺失通常不会导致短信功能完全瘫痪,但可能会导致某些特殊业务(如WAP Push)的默认参数丢失,或者在初次使用时需要一个向网络查询的过程。