你好 尽管信使和社交网络每天都在挤出传统的通信方法,但这并不会影响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 。