SMPP-对等短消息协议

你好 尽管信使和社交网络每天都在挤出传统的通信方法,但这并不会影响SMS的普及。 在热门网站上进行验证或交易通知可以证明它们存在并且将会存在。 您是否想过一切如何运作? SMPP通常用于发送大量消息,这将在猫的讨论下进行。

在Habr上已经有关于smpp, 1,2的文章,但是它们的目的不是描述协议本身。 当然,您可以立即从主要来源- 规范开始 ,但是我认为最好有一个简短的摘要。 我将以v3.4为例来解释,我很高兴您的客观批评。

SMPP是对等消息传递协议。 这意味着每个对等/集线器服务器均相等。 在最简单的情况下,SMS消息传递方案如下所示:

图片

但是,如果国家运营商没有通往某个偏远地区的路线,他会要求该中介机构-SMS集线器。 有时,要发送一条SMS,您需要在多个国家甚至大陆之间建立一条链。

关于协议


SMPP是基于PDU交换的应用层协议,通过TCP / IP或X25会话传输,用于发送sms和usd消息。 通常,SMPP以恒定连接模式使用,这有助于节省时间。 SMPP使用客户端-服务器通信模型。

通讯方式


图片

发送方和SMSC之间通过SMPP进行的消息交换可以通过以下方式进行:

发射器(发射器)-交替在一个方向上传输消息
接收方(接收方)-仅从SMSC接收消息。
收发器(收发器)-SMSC和用户之间的消息传递

结构形式


图片

讯息长度


一次输入西里尔字母时,一条SMS消息可以包含70个字符,并且不超过157个拉丁字符+ 3个UDH(如果已发送)。 具有大量字符的SMS,它将分为几个部分并组合在接收设备中。 在分段的情况下,由于在消息的标头中指示了消息的一部分,因此减少了字符数。 因此,当发送大的SMS消息时,它最多包含153个拉丁字符或67个非典型字符。

数据编码方案


但是,必须对字符进行编码才能传输消息。 在SMPP协议中,一个特殊字段负责编码-数据编码方案或DCS。 这是一个字段,指示应如何识别消息。 另外,DCS字段包括:

  • 定义编码的字符集;
  • 课堂留言
  • 阅读后要求自动删除;
  • 消息压缩指示;
  • 广播语言;

标准7位字母(GSM 03.38)。 它是为GSM消息系统开发的。 这种编码适用于英语和某些拉丁语言。 每个字符由7位组成,并以八位字节编码。

UTF-16(在GSM UCS2中)为了将丢失的字符包含在7位编码中,开发了UTF-16编码,它通过将消息大小从160减少到70,添加了其他字符(包括西里尔字母),这种编码几乎完全重复统一码

8位用户定义数据。 这些包括KOI8-R和Windows-1251。 尽管与相同的UTF-1相比,此解决方案似乎更经济,但要使用此类编码,需要在接收和发送设备上进行初步配置。 如果其中某些编码数据不受支持,则该消息将无法正确显示。 由于在这种情况下,必须预先配置两个设备。

类消息


  • 根据用户的要求,Class0(即Flash)存储在手机内存中的消息;
  • Class1,或存储在手机中的那些;
  • Class2,必须确保该消息存储在移动终端的内存中,否则必须向SMSC发出有关无法保存的警报;
  • 类别3-在这种情况下,无论设备内存大小如何,手机都应发送一条消息,告知您可以保存该消息。 这种消息意味着消息已到达其目的地。

讯息类型


静默消息(SMS0)不带内容的SMS消息的类型。 此类SMS不会另行通知,并且不会显示在设备屏幕上。

PDU


每个pdu操作都是成对的,由一个请求和一个响应组成。 例如:一条关于建立连接的命令(bind_transmitter / bind_transmitter_resp),或者消息已发送(deliver_sm / liver_sm_resp)

图片

每个pdu软件包都包括两部分-标头和主体。 标头结构对于任何pdu数据包都是相同的:命令长度是数据包的长度,id是数据包的名称,状态命令显示成功传输的消息,或有错误。

高级TLV选项


TLV(标签长度值)或可选字段。 此类参数用于扩展协议的功能,并非必需。 该字段显示在pdu字段的末尾。 例如,使用TLV dest_addr_np_information,您可以组织有关移植号码的信息的传输。

吨和Npi


TON(数字类型)参数,通知SMSC有关寻址格式和网络类型。
指示编号计划的NPI(编号计划标识)参数。

图片

消息源地址或字母名称


发送到电话的消息有两种:数字和字母。 数字可以很长(类似于电话号码),也可以很短。 有时,操作员在从中性名称发送时受到限制,例如Infosms,Alert等。 如果名称未在其网络上注册,则运营商有时会禁止流量。 但是,它只是操作员的功能。

运输阶段


图片

SMS-SUBMIT正在发送MO FSM消息(来自移动终端的短消息)
SMS-SUBMIT REPORT-确认消息是由SMSC发送的
SRI SM (SendRoutingInfo)-SMSC从HLR接收有关订户位置的MSC / VLR的信息
SRI SM RESP -HLR关于订户位置肉的响应
MT-FSM-接收到位置后,使用“转发短消息”操作发送消息
MT-FSM ACK -SMSC回复已发送消息
SMS状态报告 -SMSC发送消息传递状态。

邮件传递状态


SMS状态报告可以采用多个值:
DELIVRD消息已成功传递
拒绝-短信中心拒绝了该邮件
EXPIRED -TTL结束后,邮件将从发送队列中删除(邮件生存期)
UNDELIV-其他未送达案例
未知-未收到发送回复。

传输错误


有时消息未传递。 结果,发生错误。 错误返回到PDUs_sms_resp。 所有错误都可以分为临时(临时)和永久(永久)错误。

例如,临时用户是absent_subscriber,该用户不可用或不在网络上,并且永久用户不存在。 根据发生的错误,形成转发这些消息的策略。

例如,如果用户忙于通话并且收到MT手机忙错误,则可以在几分钟内再次发送该消息,但是,如果该用户的消息服务被阻止,则重新发送将没有意义。 您可以在SMSC页面上找到错误列表,例如this

Source: https://habr.com/ru/post/zh-CN452842/


All Articles