我正在尝试在两个GSM设备之间实现SMS传输。我已经搜索和阅读了很多标准和文章,但是找不到以下问题的答案。有谁知道SMSC如何知道发件人的号码并将其插入SMS-Deliver数据包堆栈的TP-OA字段中?
答案 0 :(得分:0)
实际上,我不确定这是否是您所需要的,还是无论如何都会帮助您。
在 GSM 网络中,有许多节点,每个节点都负责某些事情。它们使用消息相互通信,其中包含处理所需操作所需的某些信息:建立呼叫,发送SMS,执行更新位置等。
因此,有关发件人号码的信息从另一个名为 VLR / MSC 的节点发送到 SMSC ,并附有一条消息,告诉它“是的,有人想发送短信给其他人。这是这些消息和有关这些人的信息。请转发“ 。
以下是用户A 向SMS 用户B 发送短信的情况:
SMS IMSC 是在网络与 SMSC
之间起接口作用的节点SMS IMSC 向 SMSC发送 TPDU (传输协议数据单元)消息 strong>以及发送的短信和路由信息的文本
此 SMSC 之后,将答复发送给用户A ,从而收到SMS。如果成功,则 SMSC 开始通过网络将此SMS路由到用户B
因此,您要查找的消息是来自第3点的 TPDU 消息。根据 TPDU 类型,此消息的类型为 SMS-SUBMIT 。
修改:
身份验证是一项单独的操作,它在订户开始其活动(例如打开电话)或漫游到另一个 VLR / MSC 正在服务的另一个区域时发生。无论如何, VLR / MSC 将该用户视为该区域的 new 。如果您知道什么是 VLR / MSC :
,请跳过此部分HLR 是一个节点,用于存储有关运营商网络中每个订户的所有信息。因此,基本上,这是一个数据库,其中包含整个运营商网络中每个订户的所有信息。
并且网络覆盖着巨大的地理区域,因此它被划分为较小的区域,称为“ 小区”。 VLR / MSC 是类似于 HLR 的节点(它还存储订户数据)。但是它负责一个特定的 cell ,因此它存储当前在此某些单元格中运行的订户的数据。因此,当新订户进入其区域时, VLR / MSC 从 HLR 下载其数据。当订户离开此区域时, VLR / MSC 会删除其数据。
如果某个节点需要获取订户的数据,则不会“询问” HLR ,而是会“询问” VLR / MSC 订户当前处于活动状态的区域。
因此,当 VLR / MSC 看到一个新订户进入其区域时,在从 HLR 下载其数据之前,它会触发身份验证流程以进行检查如果此用户有效,并且其他人没有假装为该用户:
从 HLR 下载 VLR / MSC 数据后,需要此订阅者数据的其他所有节点都将从 VLR / MSC 取数据 HLR 。在此之后,身份验证过程将不会在订户每次想要做某事(拨打电话,发送短信等)时启动。
因此,当用户A 发送短信给用户B 时,有关用户A 的数据(例如他的号码)存储在 VLR / MSC 已经,并且它与SMS 用户A 一起从 VLR / MSC 到达 SMSC >已发送。