我在 SMPP 协议规范中找到了它的定义,但我不明白它的确切含义。我知道要从 SMSC 接收短信,您必须首先初始化连接(绑定请求),然后当 SMSC 需要发送短信时,它会发送发送请求。
SMSC 是否在未建立连接时使用地址范围向 ESME 发送 SMS?
除非在 ESME 和 SMSC 之间建立连接,否则无法传输 SMPP PDU。这通常通过使用 TCP 3 次握手(SYN、SYN-ACK、ACK)来完成。
在 bind_receiver 和 bind_transceiver 命令中使用 address_range 参数来指定由 ESME 客户端服务的一组 SME(MS 或 ESME)地址。发往此范围内任何目的地的消息应路由到 ESME。范围是使用正则表达式指定的,但是,对于 IP 地址,只能指定一个 IP 地址。此外,此版本的协议当前不支持 IPv6。
话虽如此,几乎所有 SMSC 都忽略了 bind 命令中的 addr_range 字段,因为它们不会将路由控制权交给 ESME 以防止错误路由消息。因此,该字段大多设置为 NULL。
SMSC 和 ESME 之间的路由通常使用“短代码”来完成。服务提供商 (SMSC) 为 ESME 分配一个唯一的短代码。SMSC 维护所有绑定的 ESME 地址的列表,并将相应的短代码映射到它们。每当消息被发送到短代码时,目的地,即短代码就会被转换为可以在网络上路由的有效 ESME 地址。
通过查询 MAP/SS7(或 SIGTRAN)接口上的归属位置寄存器 (HLR) 来查找用户的位置,从而执行向蜂窝网络中的 MS-SME 路由 SMS。
如 SMPP v3.4 规范 (p. 5.2.7) 中所述,address_range 参数可用于通知 SMSC 此 ESME 要处理的地址范围。
例如,您可能有两个 ESME 系统:1) 短代码 123 上的语音邮件 2) 短代码 456 上的 SMS Poll
这些系统可能会连接到具有相同 system-id 但具有不同 address_rane 的 SMSC 以分隔 SMS 流量。