SMSC 检索始发地址(发件人号码)

Retrieval of the originating address (sender's number) by SMSC

我正在尝试在两个 GSM 设备之间实现 SMS 传输。我搜索并阅读了很多标准和文章,但找不到以下问题的答案。有谁知道 SMSC 如何知道发件人的号码并将其插入 SMS-Deliver 数据包堆栈的 TP-OA 字段?

实际上我不确定这是否是您所需要的,或者这对您有帮助,但无论如何..

GSM 网络中有很多节点,每个节点都负责特定的事情。他们通过 消息 相互通信,其中包含处理所需操作所需的某些信息:建立呼叫、发送 SMS、执行更新位置等。

所以关于发件人号码的信息来自另一个名为 VLR/MSC 的节点 SMSC 以及一条消息"Yo, one guy wants to send SMS to another guy. So here is this message and information about these guys. Please, forward it".

这是 用户 A用户 B 发送短信的场景:

  1. 用户 AVLR/MSC 发送 SMS 连同目的地信息
  2. VLR/MSC然后调用MAP消息ForwardSM(转发短消息)通过网络将接收到的数据进一步发送到名为 SMS IMSC
  3. 的节点

SMS IMSC是一个节点,在网络和SMSC

之间起到接口的作用
  1. SMS IMSC 在收到 ForwardSM 消息后发送 TPDU (传输协议数据单元)发送到 SMSC 的消息,其中包含已发送 SMS 的文本和路由信息

  2. 之后SMSC回复用户A收到短信结果。如果成功,则 SMSC 开始通过网络将此 SMS 路由到 用户 B

所以您要查找的消息是来自Point 3TPDU消息。根据 TPDU 类型,此消息的类型是 SMS-SUBMIT

编辑:

Authentication 是单独的操作,当用户开始他的 activity(例如打开他的 phone)或漫游到另一个正在被访问的区域时发生由另一个 VLR/MSC 服务。无论如何,VLR/MSC 将此用户视为此区域的 new。如果您知道什么是 VLR/MSC,请跳过此部分:

HLR is a node that stores all the information about every subscriber in operator's network. So basically it's a database that has all the info about every single subscriber in the entire operator's network.

And network covers huge geographical area so it's divided is smaller areas called cells. VLR/MSC is a node similar to HLR (it also stores subscribers' data). But it is responsible for one certain cell, so it stores data of subscribers who currently operate in this certain cell. So when new subscriber comes to its area VLR/MSC downloads his data from HLR. And when subscriber leaves this area VLR/MSC removes his data.

And if some node would need to get subscriber's data, it won't "ask" HLR for it, but instead it will "ask" VLR/MSC in whose area the subscriber is currently active.

所以当VLR/MSC看到一个新用户来到它的区域时,在从HLR下载他的数据之前触发身份验证 检查此用户是否有效以及其他人是否假冒此用户的过程:

  1. VLR/MSC 发送 Send Authentication Info MAP 消息连同 IMSI ( SIM 卡唯一标识的移动用户号码)到 HLR
  2. HLR 检查给定的 IMSI 并验证订阅者。如果订阅者存在并且他没有问题,那么 HLR 发送 IMSIAUC(认证中心)
  3. IMSI 接收 AUC 生成一个 三元组 (用户识别所需的一些加密密钥) 包含 SRESRANDKc 值并将此数据发送回 HLR
  4. HLR 将此数据转发回 VLR/MSC 触发 身份验证 过程
  5. VLR/MSC 在收到 SRESRANDKc 将收到的 RAND 发送给移动用户
  6. 移动用户收到RAND后,他使用给定的RAND和[=计算SRES 37=]Ki(写入用户 SIM 卡的一些值)并将计算出的 SRES 发送回 VLR/MSC
  7. 在最后一步 VLR/MSCAUC 生成的 SRESSRES 由用户生成。如果它们匹配则用户被成功识别,VLR/MSCHLRauthentication[=137 获取订阅者的数据=] 过程完成。

VLR/MSCHLR下载数据后,所有其他需要该订阅者数据的节点将从VLR/MSC 不是 HLR。之后 身份验证 过程不会在订阅者每次想要做某事(拨打电话、发送短信等)时启动。

所以当用户A用户B发送短信时,关于用户A的数据(例如,他的电话号码)存储在 VLR/MSC already 中,它到达 SMSCVLR/MSC连同短信用户A发送。