简介:围绕短信发送流程的教学演示文稿,面向通信工程、网络运维等专业人员及高校相关专业学生,用于梳理短信从发送方到接收方所经过的移动通信网络节点、网元职责与信令交互逻辑。资源为单个演示文稿文件,压缩包约158千字节,共八页内容,系统拆解漫游用户移动发起流程、省内互通短信移动发起流程、省内用户移动接收流程、漫游用户移动接收流程、省外用户移动接收流程,并补充本地互通与异地互通短信移动接收流程等场景。每个流程均按步骤标注基站控制器、移动交换中心、本地信令转接点、归属信令转接点、短消息服务中心、系统间消息网关、归属位置寄存器等网元之间的请求、转发与应答关系,同时给出用户侧显示成功或失败的最终结果,便于读者对照学习短信中心号码鉴权、用户归属查询、跨省信令转接、互通计费话单生成等关键机制。已有六十七人学习下载,可作为通信网络基础培训、考试复习或日常排障对照的参考教案。
1. 短信发不出去的时候,你查过信令流程吗
做通信的人多半有过这种经历:用户投诉短信发不出,第一反应是查基站、查告警,折腾一圈发现无线侧一切正常,最后翻信令追踪才定位到是 SMSC 鉴权超时或者 HLR 返回了错误码。短信这东西看着简单,一条消息从手机出发到对方手机落地,中间要过 BSC、MSC、LSTP、HSTP、SMSC、HLR、ISMG 七个环节,每一跳都有应答,每一跳都可能丢包。这份《短信发送流程学习教案.pptx》就是把这套信令流程按 MO(Mobile Originated,移动发起)和 MT(Mobile Terminated,移动接收)拆开,覆盖漫游、省内、省外、互通四类场景。对刚入行的网优、核心网工程师,以及做运营商接口开发的从业者来说,它是建立短信全链路认知的最短路径。下面我把这套流程拆开讲,每一跳干什么、哪里容易出问题,一次说清。
2. 短信网络的全貌:七个网元各管一段
2.1 从手机到短信中心:MO 路径上的角色分配
一条短信从发送方手机出去,第一个接住它的是 BSC(基站控制器)。BSC 只做无线资源管理和信道分配,它不关心短信内容,也不做任何业务判断,把数据原封不动交给 MSC(移动交换中心)。MSC 是移动域的核心交换节点,它干的第一件事是查用户签约和位置信息,然后根据手机里配置的短信中心号码做路由。
这里的关键点是:短信中心号码不是网络下发的,是写在手机 SIM 卡里的。MSC 拿到这个号码后,把它当作一个普通的 E.164 号码去寻址。号码段如果是本地的,MSC 直接把消息交给 LSTP(本地信令转接点);如果对端在省外,就要通过 HSTP(归属信令转接点)层级转发。LSTP 和 HSTP 在信令网里只做消息路由,不修改消息内容,相当于邮政系统里的分拣中心。
短信真正落地的节点是 SMSC(短消息服务中心)。SMSC 负责三件事:鉴权、存储转发、计费触发。教案里写的“对用户号段鉴权”,实际是判断这个发送方号码是否属于本 SMSC 的服务范围、是否被列入黑名单、余额是否足够。鉴权通过后才继续走后续流程,失败则直接返回失败应答,一路原路返回。
提示:BSC、MSC、LSTP、HSTP 都属于承载和信令层,SMSC 才是业务层。排障时先分清故障在信令链路还是在业务节点,能少走很多弯路。
2.2 MO 与 MT 的本质区别
MO 和 MT 不只是方向相反,处理逻辑差异很大。MO 的特点是目标明确——手机里存了短信中心号码,MSC 只需要按号码寻址,路径是固定的。MT 则相反,SMSC 收到短信后第一件事是问 HLR(归属位置寄存器):“这个用户现在登记在哪个 MSC 下?”
HLR 是用户数据的权威来源,存着用户的位置信息、签约业务、补充业务设置。SMSC 向 HLR 发查询请求(MAP 操作里的 SendRoutingInfo),HLR 返回用户当前登记的 MSCID。注意,这里有个细节:SMSC 查询 HLR 之前,并不知道用户在本地还是漫游、在本省还是外省。HLR 返回的 MSCID 决定了后续信令路径往哪个方向走。
MT 流程里最关键的是定时器。SMSC 下发短信后不会无限等应答,教案里写到“SMSC 终止/重发短信,产生计费话单”,这是 MAP 协议里规定的超时重发机制。短信中心的默认重发次数一般设置 3 到 5 次,间隔从 1 分钟到 30 分钟不等。理解了这个机制,就能解释为什么手机飞行模式一天后重新开机,能收到一堆之前“发不出”的短信——那不是网络延迟,是 SMSC 一直在按策略重发。
2.3 ISMG 的角色:运营商之间怎么对账
ISMG(互联网短消息网关)是运营商互通短信的关口设备。教案里互通流程涉及的 ISMG、对端 ISMG、对端 SMSC 这三层结构,实际上是两个运营商短信网对接的标准模型。
本端 SMSC 把短信交给本端 ISMG,本端 ISMG 通过运营商间协议把消息转发给对端 ISMG,对端 ISMG 再把消息送进对端 SMSC。为什么要绕这么一圈?因为运营商之间不能直接互相访问对方的 SMSC,必须通过网关隔离。ISMG 在这里还干了一件重要的事:生成计费话单和对帐话单。
教案里第 2 页写到“在 ISMG 生成互通短信计费话单”“对端 ISMG 产生互通短信计费话单”,这是运营商间结算的依据。实际工程中,ISMG 的话单比对是财务对账的重要数据源。如果 ISMG 转发的消息和对端 ISMG 回执的话单时间不一致,就会产生结算争议——这是我实际处理过的故障类型,后面避坑章节会详细讲。
3. MO 流程实战拆解:两条路径的每一跳
3.1 漫游用户 MO 流程:为什么多绕两级
教案第 1 页的漫游用户 MO 流程,是理解整个 MO 路径的模板。我按信令走向重新梳理一下:
MS → 外省BSC → 外省MSC → 归属LSTP → HSTP → 目标LSTP → SMSC漫游用户开机注册时,外省 MSC 会向用户的归属 HLR 发位置更新请求,HLR 记录下这个用户当前在哪个 MSC 下。用户发短信时,外省 MSC 知道这个用户是漫游过来的,但 SMS 消息仍然要先送到归属地的 LSTP,因为短信中心号码是用户归属地的。
完整流程是这样的:
- MS 提交 MO 短信到外省 BSC
- 外省 BSC 将短信提交给外省 MSC
- 外省 MSC 根据短信中心号码,转发到归属 LSTP
- 归属 LSTP 转发到 HSTP
- HSTP 按短信中心号码转发到对应的 HSTP(跨省域时)
- 目标 HSTP 转发到归属 LSTP
- 归属 LSTP 转发到 SMSC
- SMSC 对用户号段鉴权,返回成功或失败应答 9-14. 应答消息逐级原路返回:LSTP → HSTP → HSTP → LSTP → MSC → BSC → MS
注意第 5 步,同一个省内的 HSTP 是一个层级,跨省才会有两级 HSTP 转发。如果用户归属地和短信中心在同一个省,第 5 步可能被跳过,直接从 LSTP 到 HSTP 再到目标 LSTP。
这个流程里最容易出问题的环节是第 8 步的鉴权。SMSC 鉴权慢,前端的每一跳都卡在等应答,用户看到的现象就是“发送中”转圈很久,最后提示发送失败。排查时抓 SMSC 的接口日志,看鉴权响应时间,如果 P99 超过 500ms,基本可以定位是 SMSC 侧处理性能问题。
3.2 省内互通 MO 流程:两段式的消息接力
教案第 2 页的互通短信 MO 流程,适用场景是用户发送短信给异网用户,比如移动用户给联通用户发短信。这个流程分成两段:第一段是从发送方手机到本端 SMSC,第二段是从本端 SMSC 经过 ISMG 到对端 SMSC。
MS → BSC → MSC → LSTP → SMSC → 本端ISMG → 对端ISMG → 对端SMSC第二段的信令走向:
- SMSC 按目的用户号码判断是异网用户,将短信转发到本端 ISMG
- 本端 ISMG 返回接收应答
- 本端 ISMG 将短信转发到对端 ISMG
- 对端 ISMG 返回应答
- 对端 ISMG 将短信转发到对端 SMSC
- 对端 SMSC 返回成功或失败应答
这里有个容易误读的地方:教案里第 2 页的编号顺序是乱的——1、2、4 出现在一条线上,3、5、6 在另一条线上。实际工程里的顺序是:先 1 到 2 完成本端 ISMG 接收确认,再 3 到 4 完成对端 ISMG 转发确认,最后 5 到 6 完成对端 SMSC 投递确认。
两段式的设计不是多余的。ISMG 在对端不可达时可以做缓存重发,避免短信直接丢失。本端 SMSC 只要收到 ISMG 的接收应答就算流程结束,后续投递状态由 ISMG 链路保障。这就解释了为什么有时候发送方显示“已发送”,但接收方没收到——SMSC 已经把消息交给 ISMG 了,问题是出在 ISMG 到对端 SMSC 这一段。
提示:MO 流程的排障顺序是“查到哪一跳断了”。常见做法是在信令监测系统上按 MSISDN 或 IMSI 过滤,看 Signaling 到哪一级没继续往下走。
3.3 MO 流程必要条件:短信中心号码与号段配置
MO 流程跑通有一个隐含前提:短信中心号码在网络上正确配置,且 SMSC 里维护了有效的号段表。
短信中心号码的格式是国际 E.164 格式,例如 +8613800100500。MSC 拿到这个号码后,通过号码分析表判断路由方向。如果 MSC 的号码分析表里没有配置这个号码段,会直接返回“号码不可用”错误。我遇到过 MSC 升级后号码分析表被初始化,导致大量用户发不出短信的情况——所有短信卡在 MSC 侧,信令监测上一片红色。
SMSC 的号段表是鉴权的依据。上线新号段时,如果只做了 HLR 和 MSC 的号段配置,漏了 SMSC,就会出现短信提交到 SMSC 后被直接拒绝,错误码通常是“拒绝发送”。排查手段是看 SMSC 日志里是否有“invalid subscriber”的记录,有的话去对号段表。
4. MT 流程全解:从短信中心到用户手机的最后一公里
4.1 省内用户 MT 流程:HLR 查询是关键分水岭
教案第 3 页的省内用户 MT 流程,核心是理解 SMSC 如何找到用户当前的位置。
流程拆解:
- SMSC 向 LSTP 发起 HLR 查询请求
- LSTP 将查询信息送到用户归属 HLR
- HLR 返回应答,包含用户当前登记的 MSCID
- LSTP 返回应答消息给 SMSC
- SMSC 向用户登记的 MSCID 下发短信
- LSTP 将 MT 短信转发到用户归属 MSC
- MSC 将 MT 短信转发到 BSC
- BSC 将短信下发给用户
- 用户返回接收应答 10-12. 应答消息逐级返回,SMSC 终止/重发短信,产生计费话单
步骤 1 到 4 用的是 MAP 信令的 SendRoutingInfo 操作,步骤 5 之后用的是 MT-ForwardShortMessage 操作。这两类操作走的信令路径不同:SRI 查询走的是 SMSC → LSTP → HLR,MT 转发走的是 SMSC → LSTP → MSC。
整个流程最耗时的是第 1 到 4 步的 HLR 查询。HLR 响应时间直接决定了短信下发的时延。工程经验值:省内 HLR 查询 P95 应该在 200ms 以内,超过 500ms 就属于异常。HLR 慢的原因通常是数据库性能问题或者 HLR 到 SMSC 之间信令链路拥塞。
4.2 漫游用户 MT 流程:外省 BSC/MSC 怎么接住短信
漫游用户 MT 流程(教案第 4 页)和省内流程的区别在于,HLR 查询后返回的 MSCID 是外省的 MSC。SMSC 下发的短信走不到用户,必须经过两级 HSTP 转发。
SMSC → LSTP → HSTP → 外省HSTP → 外省LSTP → 用户登记MSC → 用户登记BSC → MS关键路径:
- SMSC 到 HLR 查询用户信息(经 LSTP)
- LSTP 将查询信息送到用户归属 HLR
- HLR 返回应答,包含用户漫游地的 MSCID
- LSTP 返回应答
- SMSC 向用户登记的 MSCID 下发短信
- LSTP 转发短信到 HSTP
- HSTP 转发短信到外省 HSTP
- 外省 HSTP 转发到外省 LSTP
- 外省 LSTP 转发到用户登记 MSC
- MSC 转发到用户登记 BSC
- BSC 给用户下发短信 12-18. 应答逐级返回
这个流程里最值得关注的是:SMSC 只和归属 LSTP 通信,它不关心用户漫游到哪。漫游路径的寻址完全依赖 HLR 返回的 MSCID。如果 HLR 里的位置信息过期——用户已经漫游到另一个 MSC 但位置更新失败——短信就会下发到用户之前的登记 MSC,那个 MSC 会返回“用户不在”错误码。
实际工程里,跨省漫游 MT 的超时重发率明显高于省内。原因之一是两个省之间信令链路的中继段多,每一跳都要处理 SCCP 寻址和 GT 翻译,时延叠加后可能触发 SMSC 的超时定时器。遇到这种情况,优先检查 SMSC 到对端省份的信令链路质量,而不是怀疑 SMSC 本身有问题。
4.3 省外用户 MT 流程:两级 HSTP 的完整链路
教案第 5 页的省外用户 MT 流程,比漫游 MT 多了一层复杂性:HLR 查询本身就要经过外省 HSTP,因为用户的归属 HLR 在外省。
这个流程一共 24 步,是所有流程里最长的。我把关键信令段拆开看:
查询段(步骤 1-6): SMSC → LSTP → HSTP → 外省 HSTP → 外省 LSTP → 外省 HLR
下发段(步骤 11-17): SMSC → LSTP → HSTP → 外省 HSTP → 外省 LSTP → 用户登记 MSC → 用户登记 BSC → MS
应答段(步骤 18-23): MS → BSC → MSC → LSTP → HSTP → HSTP → LSTP → SMSC
省外用户 MT 最容易翻车的地方在查询段。HSTP 做 GT 翻译时,如果被叫号码的号段前缀没有被正确翻译成外省 HSTP 的信令点编码,SRI 查询消息会在本省 HSTP 处被丢弃。现象是 SMSC 里看到 SRI 查询超时,没有收到 HLR 的任何应答。
这里有个实用经验:先 ping 通 对端省份 HSTP 的信令点(用信令仪或者网管工具的 MTP 层测试),排除链路层问题;再跟踪 SRI 消息的 GT 翻译结果,看消息是不是被正确送到了外省 HSTP。两步下来基本能定位。
4.4 互通 MT 流程:本地和异地两条路径对比
教案第 6、7 页分别画了本地互通 MT 和异地互通 MT。它们的共同点是:短信的源头是异网用户的对端 SMSC,经过对端 ISMG 转过来,进入本端 SMSC 后按普通省内 MT 流程下发。
本地互通 MT 的关键路径:
对端ISMG → 本端ISMG → SMSC → LSTP → 用户登记MSC → 用户登记BSC → MS异地互通 MT 的区别在于:对端 ISMG 在别的省份,短信从外省 ISMG 传过来时,要先进入外省 SMSC,再由外省 SMSC 通过信令网送到本省 LSTP。链路变成:
外省对端ISMG → 外省ISMG → 外省SMSC → 本省LSTP → 用户登记MSC → MS这个流程里有一个计费相关的细节。教案写“外省 ISMG 产生对帐话单,外省对端 ISMG 产生互通短信计费话单”——对帐话单是 ISMG 之间核对消息数的依据,计费话单是运营商之间结算的依据。两张话单的生成时点不同:对帐话单在 ISMG 收到对端下发应答时生成,计费话单在 ISMG 收到短信中心回送的下发状态时生成。
做互通业务的人一定要理解这个区别。用户投诉“我发了短信扣了费但对方没收到”,排查顺序是:先查本端 SMSC 话单,有没有记录;再查外省 ISMG 话单,转发有没有成功;最后查 ISMG 对帐话单,消息是不是丢在对端侧。实践中我处理过这样的情况:本端 SMSC 话单有记录、外省 ISMG 对帐话单有记录,但结算话单缺失,最后定位是外省 ISMG 在回送状态应答时超时,触发 SMSC 重发导致重复扣费。
| 流程 | 发起方 | 路径核心 | 最易出错的环节 |
|---|---|---|---|
| 省内用户 MT | 本端 SMSC | LSTP → MSC → BSC | HLR 查询超时 |
| 漫游用户 MT | 本端 SMSC | LSTP → HSTP → 外省 HSTP → MSC | 漫游位置信息过期 |
| 省外用户 MT | 本端 SMSC | 两级 HSTP + 外省 HLR | GT 翻译错误 |
| 本地互通 MT | 对端 ISMG → 本端 ISMG | SMSC → LSTP → MSC | 互通话单生成异常 |
| 异地互通 MT | 外省 ISMG → 外省 SMSC | 跨省信令寻址 | 对端 SMSC 转发超时 |
5. 避坑指南:短信信令流程里的四类经典故障
5.1 现象:漫游用户短信发不出,无线侧一切正常
原因是位置更新失败导致 MSC 对用户的漫游状态判断错误。解决方法是查 HLR 里的用户位置信息和 MSC 里的漫游号码(MSRN)。常见做法是在 HLR 侧执行位置注销操作,强制用户重新注册。
实际案例:外省漫游用户到本省后,注册时 MSC 向 HLR 发位置更新请求,HLR 返回“参数缺失”。原因是 HLR 里用户签约数据里没有配置漫游业务——这个概率极低,但一旦出现,所有这个号码的漫游短信全挂。
5.2 现象:短信提交到 SMSC 后不往下走,日志显示“消息等待”
原因是 SMSC 的定时器等待 MT 流程的最终状态报告,而这个报告回不来。多跳信令链路上,只要有一级节点没有把应答传回来,SMSC 就会一直等。
排查思路是沿着 MT 流程逐级看应答:HLR 有没有回 SRI 应答 → MSC 有没有回 ForwardMT 应答 → BSC 有没有回 Deliver 报告。停在 HLR 基本是 SS7 链路或 HLR 数据库故障。停在 MSC 要查 MSC 到 BSC 的寻呼策略,有些 MSC 配置了二次寻呼,第一次寻呼无响应会等几秒再试——这不是故障,但会造成短信时延偏高。
5.3 现象:短信显示发送成功,但接收方没收到,计费话单里却有记录
原因是 SMSC 把消息交给 ISMG 后,ISMG 到对端 SMSC 这一段丢失。SMSC 只要收到 ISMG 的接收应答就认为消息已发出,后续状态对发送方不可见。
这种问题的功劳不在 SMSC,在 ISMG 侧。查 ISMG 日志里对端 SMSC 的应答消息,如果一直没有成功应答,说明对端 SMSC 拒绝接收。常见原因是:号码为空号、对端 SMSC 黑名单、对端网关路由表不完整。整条链路检查完,才能确定责任方。
常见的错误做法是发送方用户反复重发短信,实际上是 ISMG 在没收到对端应答前,自己也在按策略重发,两边一起重发会导致下行业务量翻倍。正确做法是先停掉 ISMG 重发,再人工触发一次对端 SMSC 的投递测试。
5.4 现象:两条 HSTP 信令链路时延不对称,导致短信乱序
原因是 HSTP 采用负荷分担方式在两个信令点之间分配消息,同一用户的 MT 消息可能走了两条不同的路径。如果两条链路的时延差超过 100ms,用户会先收到后发的短信。
这种情况在核心网排障里是出名的“玄学”——无线、SMSC、HLR 全看过了都说自己没问题,但用户就是反馈短信到达顺序不对。实际上就是 HSTP 链路层的时延抖动导致的。解决办法是在 HSTP 上配置基于 SLS(Signalling Link Selection)的负荷分担规则,把同一个用户的信令消息约束在同一条链路上。
我遇到过一例:用户投诉短信乱序长达一个月,最终定位是 HSTP A 链路到 SMSC 的光模块光衰异常,导致时延从 20ms 涨到 180ms。换掉光模块后乱序消失。
5.5 现象:互通短信话单出现大量对帐差异
原因是 ISMG 生成对帐话单和计费话单的时点不同,对端网关的应答消息在传送过程中丢失,导致两边的消息计数不一致。
排查方法是拉出 ISMG 的对帐日志,按小时统计收发消息数,找到差异时间段;再到对端 ISMG 侧拉同一时间段日志做对比。实践中这种问题大多是走廊网关设备(前置机)的转发漏发导致的,在 ISMG 与对端 ISMG 之间加一层消息缓存可以缓解。
注意:话单对账差异不是小问题,涉及运营商间结算。遇到先暂停对该对端网关的自动结算,人工核对后再恢复。
6. 进阶用法:把信令流程当诊断工具,快速定位“哪一跳断了”
熟悉 MO/MT 流程之后,最大的收益不是看懂 PPT,而是能基于一条失败短信的消息记录,倒推出故障点在哪个网元。
我的做法是:拿到一条“发送失败”的短信记录后,先画一条垂直的流程时间线——从 MS 提交开始,到最终失败应答返回结束,把每一次信令交互的发起时间和应答时间标出来。然后沿着下列顺序做二分定位:
- 先看 MS 有没有提交到 BSC。终端侧无提交记录,直接定位手机或 SIM 卡问题,和网络无关。
- BSC 提交到 MSC 成功,但 MSC 没有转发到 LSTP,问题出在 MSC 的路由分析表或到 LSTP 的信令链路。
- MSC 已转发但 SMSC 没有收到,问题出在 LSTP/HSTP 的 GT 翻译寻址。用信令仪的 MTP 层 Trace 能直接看到消息停在哪一级。
- SMSC 收到消息但返回失败应答,查 SMSC 鉴权和号段配置,这一步是业务层的。
- 如果 SMSC 已把消息经 ISMG 送出,用户侧依然没收到,问题出在 ISMG 和对方 SMSC 的互通链路。
这套“逐层向下、先看有无、再看时延”的诊断顺序,比盲目抓包高效得多。教案里这八页流程图,拆开看是八个独立的信令序列,合并看其实就是一个完整的排查地图。
学这套东西还有个取巧的方式:不用死记每一步的编号,而是记住“谁把消息交给谁”的链条。MO 方向是 MS 交 BSC、BSC 交 MSC、MSC 交检查点(LSTP/HSTP)、转接点交 SMSC;MT 方向是 SMSC 问 HLR“他在哪”、按地址交 MSC、MSC 交 BSC、BSC 交 MS。链条上任何一环的下游没有应答,就锁定那一环去查。
从那以后,每次处理短信投诉,我都强制自己先按 MO/MT 流程把消息完整走一遍,标出断点再下手。这种习惯帮我避开过很多次“无线侧查半天结果是核心网问题”的冤枉路。希望帮到你。
本文还有配套的精品资源,点击获取