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



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

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

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

因此,有关发件人号码的信息从另一个称为VLR/MSC的节点进入SMSC,并附有一条消息,告诉它"哟,一个人想向另一个人发送短信。所以这是关于这些家伙的消息和信息。请转发"。

以下是用户 A向用户B发送短信的场景:

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

短信IMSC是网络与SMSC之间扮演接口角色的节点

  1. SMS IMSC在收到转发SM消息时向SMSC发送TPDU(传输协议数据单元)消息,其中包含发送的SMS和路由信息的文本

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

因此,您要查找的消息是来自第 3 点TPDU消息。根据TPDU类型,此消息的类型为SMS 提交

编辑

身份验证是单独的操作,当用户开始其活动(例如打开手机)或漫游到另一个VLR/MSC正在服务的另一个区域时发生。无论如何,VLR/MSC将此用户视为该领域的新手。如果您知道什么是VLR/MSC,请跳过此部分:

HLR是一个节点,用于存储有关运营商网络中每个订阅者的所有信息。所以基本上它是一个数据库,其中包含整个运营商网络中每个用户的所有信息。

网络覆盖了巨大的地理区域,所以它被划分为称为细胞的较小区域。VLR/MSC是一个类似于HLR的节点(它也存储用户的数据)。但它负责某个单元,因此它存储当前在该特定单元中操作的用户的数据。因此,当新用户来到其区域时,VLR/MSC会从HLR下载他的数据。当用户离开该区域时,VLR/MSC会删除他的数据。

如果某个节点需要获取用户的数据,它不会"要求">HLR,而是会"询问">VLR/MSC用户当前处于活动状态的区域。

因此,当VLR/MSC看到新订户来到其区域时,在从HLR下载其数据之前,它会触发身份验证过程以检查此用户是否有效,并且其他人是否假装是该用户:

  1. VLR/MSC发送身份验证信息MAP 消息与IMSI(由其 SIM 卡唯一标识的移动用户号码)一起发送到HLR
  2. HLR检查给定的IMSI并验证订阅者。如果订户存在并且他没有问题,则HLRIMSI发送到AUC(身份验证中心)
  3. IMSI接收时,AUC生成一个包含SRESRANDKc值的三元组(用户识别所需的一些加密密钥),并将此数据发送回HLR
  4. HLR将此数据转发回触发身份验证过程的VLR/MSC
  5. VLR/MSC在接收SRES、RAND 和Kc后将收到的RAND发送给移动用户
  6. 移动用户收到RAND后,他使用给定的RANDKi(写入用户 SIM 卡中的某个值)计算SRES,并将计算出的SRES发送回VLR/MSC
  7. 在最后一步中,VLR/MSCAUC生成的SRES与用户生成的SRES进行比较。如果它们匹配,则成功识别用户,VLR/MSCHLR获取用户的数据并完成身份验证过程。

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

因此,当用户 A 向用户B发送短信时,有关用户 A 的数据(例如他的号码)已经存储在 VLR/MSC 中,并且它与发送的短信用户 A一起从VLR/MSC到达SMSC

最新更新