博客文章

文章详情

博客文章
SMPP协议详细解析:工作原理、核心指令与企业短信接入指南
author By Samuyl Joshi

2026-09-16

SMPP协议详细解析:工作原理、核心指令与企业短信接入指南

在国际短信业务中,企业通常需要通过标准化通信协议,将自身业务系统与云通信平台、短信网关或运营商网络连接起来。

SMPP协议就是短信通信领域应用较为广泛的一种协议。

对于需要处理大量验证码、通知短信、营销短信的企业而言,SMPP不仅关系到短信系统如何接入,还涉及并发能力、消息回执、连接稳定性以及系统扩展能力。

那么,SMPP是什么?SMPP协议如何工作?SMPP和HTTP API有什么区别?企业接入SMPP时需要注意哪些问题?

SMPP并不是简单的短信API,而是一套用于短信系统之间进行标准化通信的协议。

短信提交成功,并不等于短信最终送达。

一、SMPP是什么?

SMPP,全称为 Short Message Peer-to-Peer Protocol,中文通常称为“短消息点对点协议”。

简单来说,SMPP是一种用于短信实体之间进行消息交换的通信协议,常见于企业短信系统、云通信平台、短信网关以及运营商短信中心之间的数据通信。

在典型的国际短信架构中,企业系统可以通过SMPP与云通信平台建立TCP长连接,再由平台将短信提交到对应的运营商网络。

典型通信链路如下:

企业业务系统 → SMPP客户端 → 云通信平台 → 短信网关 → 运营商 → 用户手机

从技术实现角度来看,SMPP与普通HTTP短信接口存在明显区别。

HTTP API通常采用请求—响应模式,开发相对简单;而SMPP通常基于TCP长连接,通过二进制PDU持续进行消息交换,因此更适合高吞吐量、长连接以及通信平台之间的系统互联。

TCP连接建立
      ↓
Bind认证
      ↓
建立SMPP会话
      ↓
submit_sm提交短信
      ↓
submit_sm_resp返回提交结果
      ↓
deliver_sm返回状态报告
      ↓
DLR更新最终短信状态

对于搜索“SMPP是什么”或者“SMPP协议详解”的企业技术人员而言,理解这一点非常重要:

SMPP并不是简单的短信API,而是一套用于短信系统之间进行标准化通信的协议。

SMPP并不是简单的短信API,而是一套用于短信系统之间进行标准化通信的协议。

二、SMPP协议是如何工作的?

SMPP通常基于TCP进行通信。

客户端与服务器建立TCP连接之后,通过Bind操作进行身份认证,认证成功后即可提交短信。

一个完整的SMPP通信流程大致如下:

TCP连接建立
      ↓
Bind认证
      ↓
建立SMPP会话
      ↓
submit_sm提交短信
      ↓
submit_sm_resp返回提交结果
      ↓
deliver_sm返回状态报告
      ↓
DLR更新最终短信状态

这里需要特别注意:短信提交成功,并不等于短信最终送达。

例如企业发送一条验证码:

企业系统
   ↓
submit_sm
   ↓
短信平台
   ↓
运营商
   ↓
目标手机

平台返回:

submit_sm_resp = OK 通常只能说明短信提交请求已经被平台接受。

短信提交成功,并不等于短信最终送达。

后续还需要根据运营商返回的Delivery Receipt,即短信投递状态报告(DLR)判断最终结果。因此,在采购SMPP短信服务时,不能只关注接口是否能够成功提交,更应该关注:是否支持真实DLR、DLR是否可追踪、是否能关联Message ID,以及不同失败原因是否可以区分。

三、SMPP协议中的核心PDU是什么?

SMPP采用PDU(Protocol Data Unit)进行数据通信。

一个典型的SMPP PDU结构可以理解为:

command_length
command_id
command_status
sequence_number
command_body

1. command_length

表示整个PDU的长度。

SMPP客户端或服务器在读取TCP数据时,需要根据该字段确定完整PDU的边界。因此,开发SMPP客户端或服务器时,还需要正确处理TCP的粘包和拆包问题。

2. command_id

command_id用于表示当前PDU的类型。SMPP常见指令包括:

bind_transmitter
bind_transmitter_resp

bind_receiver
bind_receiver_resp

bind_transceiver
bind_transceiver_resp

submit_sm
submit_sm_resp

deliver_sm
deliver_sm_resp

unbind
unbind_resp

其中,企业短信发送过程中最重要的几个指令,就是:bind_transceiver、submit_sm、deliver_sm。

3. command_status

command_status表示当前操作的状态。例如:

ESME_ROK
ESME_RINVSYSID
ESME_RINVPASWD
ESME_RSYSERR
ESME_RTHROTTLED

其中ESME_ROK通常表示操作成功。而ESME_RTHROTTLED则通常代表请求受到流控限制。对于高并发短信系统而言,错误码不能简单归类为“成功/失败”,而应该根据错误类型设计:重试、限流、降级以及故障转移机制。

错误码不能简单归类为“成功/失败”,而应该根据错误类型设计重试、限流、降级以及故障转移机制。

对于高并发短信系统而言,错误码不能简单归类为“成功/失败”,而应该根据错误类型设计:重试、限流、降级以及故障转移机制。

4. sequence_number

Sequence Number是SMPP协议中的关键字段。

客户端发送:submit_sm sequence_number = 10001,服务端返回:submit_sm_resp sequence_number = 10001,客户端就可以通过Sequence Number将响应和原始请求进行匹配。

在高并发环境中,Sequence Number生成和请求匹配机制必须保证可靠,否则可能出现响应错配。

四、SMPP的Bind模式有哪些?

SMPP协议提供了多种连接模式,其中企业短信系统最常见的是以下三种。

bind_transmitter

bind_transmitter主要用于发送。企业建立SMPP连接之后,可以通过该模式向短信平台提交短信。

典型结构:

企业系统
   ↓
bind_transmitter
   ↓
短信平台

适用于只需要发送消息的场景。

bind_receiver

bind_receiver主要用于接收消息。根据具体平台实现,可以用于接收Deliver_SM消息,例如短信状态报告或上行消息。

bind_transceiver

bind_transceiver同时具备发送和接收能力。对于需要:发送短信 + 获取DLR的企业来说,这种方式非常实用。

例如:

企业系统
    │
    │ bind_transceiver
    ↓
SMPP Server
   ↙     ↘
发送       接收
submit_sm  deliver_sm

因此,在选择SMPP短信平台时,企业需要提前确认供应商支持哪种Bind模式,以及单账户允许建立多少条连接。

五、SMPP如何发送短信?

SMPP发送短信最核心的PDU是:submit_sm。企业系统通过该PDU向SMPP Server提交短信。其中通常会涉及以下字段:

submit_sm

字段说明:

字段 作用
source_addr 短信发送号码或Sender ID
destination_addr 接收短信的手机号
esm_class 消息类型及相关标识
data_coding 短信编码方式
short_message 短信内容
registered_delivery 是否请求状态报告

例如企业发送一条OTP验证码:

source_addr
        ↓
YaningAI

destination_addr
        ↓
+***********

short_message
        ↓
Your verification code is 328914.

registered_delivery
        ↓
Request DLR

服务端接收到submit_sm之后,会返回:submit_sm_resp,其中通常还会返回Message ID。

这个Message ID对于后续查询短信状态、关联DLR非常重要。

六、SMPP中的DLR是什么?

DLR,全称 Delivery Receipt,即短信投递回执。它用于反馈短信进入运营商网络之后的处理和投递结果。常见状态可能包括:

常见状态:

DELIVRD
UNDELIV
EXPIRED
REJECTD
UNKNOWN

不同服务商和运营商具体返回格式可能存在差异。最值得企业注意的是:submit_sm成功 != 手机收到短信。

submit_sm成功 != 手机收到短信。

完整的短信状态链路应该理解为:

业务订单 → 提交短信 → submit_sm_resp → Message ID → 运营商处理 → DLR → 最终状态

  • 业务订单
  • 提交短信
  • submit_sm_resp
  • Message ID
  • 运营商处理

这也是企业采购国际短信服务时,需要重点考察的技术能力之一。

例如企业需要统计某个国家当天的短信成功率,那么只有完整的DLR体系,才能帮助技术团队分析:提交成功率、运营商接受率、最终投递率以及失败原因。

七、SMPP TPS是什么?

TPS是企业评估SMPP接入性能时非常重要的指标。TPS通常表示:Transactions Per Second,即每秒事务处理数量。例如供应商提供:100 TPS,表示系统理论上可以处理约100个事务/秒。

但是需要特别注意:

100 TPS

TPS并不一定等于最终短信到达量。

TPS并不一定等于最终短信到达量。

实际吞吐能力还会受到很多因素影响,包括:

  • 单连接限速
  • 账户级限速
  • 国家级限速
  • 运营商限制
  • Window Size
  • 网络延迟
  • 短信长度
  • 长短信拆分
  • 通道实际容量

因此,对于高并发国际短信业务,建议在技术测试阶段进行实际压测,而不是仅根据供应商宣传页面上的TPS参数进行判断。

八、SMPP Window Size是什么?

Window Size可以理解为:客户端在等待响应期间,可以同时保持多少个未完成请求。例如:Window Size = 5,客户端可以连续提交:

连续提交示例:

submit_sm 10001
submit_sm 10002
submit_sm 10003
submit_sm 10004
submit_sm 10005

随后再接收:

响应示例:

submit_sm_resp 10001
submit_sm_resp 10002
submit_sm_resp 10003
...

相比每次只发送一条短信、等待响应后再发送下一条,Window机制能够提高通信链路的利用率。因此,在设计SMPP高并发短信系统时,TPS和Window Size通常需要结合起来进行调优。

TPS和Window Size通常需要结合起来进行调优。

九、SMPP短信编码为什么会出现乱码?

短信编码是SMPP开发中一个非常容易踩坑的问题。常见编码方式包括:

常见编码:

  • GSM 7-bit
  • 8-bit
  • UCS2

英文短信通常可以采用GSM 7-bit等方式。中文短信则通常需要使用Unicode相关编码,例如UCS2。

例如:您的验证码是123456,如果data_coding与实际编码方式不匹配,就可能出现:短信乱码,甚至提交失败。

您的验证码是123456

企业开发SMPP接口时,应针对不同内容进行完整测试,包括:

英文、中文、中英文混合、特殊字符、Emoji以及长短信。

因此,测试SMPP短信接口时,不应该只使用简单英文内容进行验证。更完整的测试至少应该包括:普通英文短信、中文短信、中英文混合、特殊字符、Emoji、超长短信、长短信拆分。

十、SMPP长短信是如何实现的?

当短信内容超过单条SMS支持的长度之后,需要进行拆分。例如:

原始短信
↓
短信1/3
短信2/3
短信3/3

终端收到多个短信片段之后,再根据相关信息重新组合。

在SMPP实现中,经常会涉及:UDH(User Data Header)。

因此测试SMPP短信接口时,不应该只使用简单英文内容进行验证。更完整的测试至少应该包括:

普通英文短信
中文短信
中英文混合
特殊字符
Emoji
超长短信
长短信拆分

只有覆盖这些场景,才能确保长短信在不同终端上正常显示。

十一、SMPP与HTTP短信API有什么区别?

这是企业进行短信技术选型时经常遇到的问题。

对比维度 HTTP API SMPP
通信方式 HTTP/HTTPS TCP长连接
数据形式 JSON/XML等 二进制PDU
开发难度 相对较低 相对较高
连接管理 简单 需要维护连接
高并发 依赖API架构 适合持续通信
DLR 取决于平台 协议支持
接入速度 快 相对复杂
适合场景 快速开发、中小规模业务 大规模、高并发通信
运维要求 较低 较高

因此并不能简单认为:SMPP一定比HTTP API好。更准确的判断方式应该是:

如果企业更关注开发效率和快速接入,HTTP API通常更加方便;如果企业需要大规模短信处理、持续连接或通信平台级互联,SMPP则具有明显优势。

对于成熟的云通信平台而言,同时提供:HTTP API + SMPP 能够覆盖更多企业客户的技术架构需求。

因此,企业应根据自身业务规模、技术架构和并发需求,选择适合的接入方式。

十二、企业接入SMPP需要考虑哪些技术问题?

企业选择SMPP短信服务时,不能只看“有没有SMPP接口”。真正需要评估的是整个通信链路。

1. SMPP版本

确认供应商支持:SMPP 3.4 还是其他协议版本。

SMPP 3.4

同时需要确认实际支持的PDU以及扩展字段。

2. TPS和Window Size

重点确认:

单连接TPS是多少?一个账户最多支持多少连接?Window Size是多少?不同国家是否存在不同限速?

3. DLR能力

重点确认:

是否支持真实投递回执?是否返回Message ID?是否可以关联业务ID?是否能够区分不同失败原因?

4. Sender ID支持

国际短信业务通常需要根据目标国家、运营商以及短信类型,确认Sender ID的使用规则。

部分国家或地区可能要求Sender ID提前注册或者进行相关审核。因此企业在进行国际短信接入之前,应当确认目标市场的Sender ID规则。

5. 国际短信线路

SMPP只是技术接入协议。它并不能直接代表短信线路质量。企业真正需要关注的是:运营商覆盖、当地线路、路由质量、峰值容量、DLR完整性以及合规能力。

换句话说:

SMPP连接稳定,只能说明“企业和平台之间的通信正常”,并不能直接代表短信最终送达能力。

十三、企业如何搭建SMPP高可用架构?

对于短信量较大的企业,不建议仅依赖一条SMPP连接。更加合理的架构可以采用:

高可用架构示意:

              企业业务系统
                    │
                    ↓
                API Gateway
                    │
                    ↓
                 消息队列
                    │
          ┌─────────┴─────────┐
          ↓                   ↓
     SMPP Worker A       SMPP Worker B
          ↓                   ↓
     Connection A        Connection B
          │                   │
          └─────────┬─────────┘
                    ↓
                 短信平台
                    │
             ┌──────┴──────┐
             ↓             ↓
          Route A        Route B
             ↓             ↓
           运营商         运营商
             └──────┬──────┘
                    ↓
                  DLR
                    ↓
                状态系统

这样的架构可以实现:业务系统、消息队列、SMPP连接、短信路由、状态回执相互解耦。

当某条连接发生异常时,可以通过连接池、备用连接或者备用路由减少对整体业务的影响。

十四、SMPP开发最常见的几个问题

TCP连接频繁断开

常见原因包括:

  • 网络异常
  • 防火墙策略
  • 心跳超时
  • 服务端主动断开
  • 长时间连接空闲

通常需要设计:心跳检测 + 自动重连 + 连接状态监控。

submit_sm超时

客户端发送请求后,如果没有在规定时间内收到submit_sm_resp,需要及时释放对应请求,否则可能造成Window被长期占用。

Sequence Number错乱

高并发环境下需要保证Sequence Number生成机制可靠,并正确建立请求与响应之间的映射关系。

DLR无法匹配业务订单

建议建立完整的状态关联链:

业务订单号
   ↓
短信任务ID
   ↓
Message ID
   ↓
DLR
   ↓
最终短信状态

只有做到这一层,企业才能真正实现短信链路可追踪。

十五、SMPP协议适合哪些企业?

从实际应用场景来看,以下企业通常更值得考虑SMPP接入:

跨境电商

用于:订单通知、物流提醒、登录验证码、账户安全通知。

金融科技

用于:OTP、支付提醒、交易通知、风险控制消息。

海外游戏平台

用于:注册验证码、登录认证、账户通知。

社交平台

用于:手机号验证、账户登录、密码找回。

大型互联网平台

用于:高并发短信提交、批量消息处理以及通信系统互联。

对于短信发送量较小的企业,可以优先采用HTTP API。而对于每天需要处理大量国际短信的企业,则可以进一步评估SMPP接入。

十六、企业采购SMPP短信服务需要重点问供应商什么?

在技术采购阶段,建议把以下内容纳入供应商测试表:

技术项目 重点确认内容
SMPP版本 是否支持SMPP 3.4
Bind模式 Transmitter / Receiver / Transceiver
TPS 单连接及账户级TPS
Window Size 最大并发请求数
连接数 单账户最大连接数量
DLR 是否提供真实投递回执
Message ID 是否支持完整追踪
Sender ID 是否需要注册
编码 GSM 7-bit / UCS2等
长短信 是否支持Multipart SMS
IP白名单 是否支持
TLS 是否支持安全连接
国家覆盖 覆盖国家及地区
运营商 是否具备主流运营商资源
路由 直连或聚合线路
故障切换 是否支持备用线路
监控 是否提供实时监控
日志 是否支持SMPP日志追踪
合规 是否支持当地通信规范

十七、SMPP只是接口,线路质量才决定最终通信效果

很多企业第一次采购国际短信服务时,会重点比较:API价格、SMPP价格、TPS以及免费测试额度。这些指标当然重要,但并不能完整反映短信服务质量。

对于国际短信业务而言,更值得关注的是:SMPP接入能力 + 国际运营商资源 + 路由策略 + DLR能力 + 合规能力 + 运维支持。

例如同样都是100 TPS的SMPP接口:

A供应商

具备稳定的当地运营商线路;

B供应商

主要依赖多级聚合路由。

两者在实际短信业务中的表现可能存在明显差异。因此,企业技术采购时不应该只问:

“你们有没有SMPP接口?”

而应该进一步确认:

“SMPP连接能力、TPS、DLR、国家运营商覆盖、线路类型以及故障切换能力分别是什么?”

这才是有实际采购价值的技术评估。

十八、YaningAI国际短信SMPP接入能力

对于需要开展海外业务的企业而言,稳定的国际短信基础设施比单纯拥有一个短信接口更加重要。

YaningAI提供面向企业业务系统的国际短信通信能力,支持企业根据自身技术架构选择合适的接入方式。

针对技术团队和通信平台,可以重点关注:SMPP接入、HTTP API接入、国际短信路由、消息状态追踪以及企业级通信系统集成。

企业可以根据自身业务规模、技术架构以及短信并发需求,选择适合的接入方式。

对于需要进行系统深度集成的企业,建议在上线前进行:接口测试 → 编码测试 → TPS压测 → DLR测试 → 国家线路测试 → 生产环境验证。通过完整测试再进入正式业务阶段。

立即了解国际短信接入方案:

立即了解国际短信接入方案

获取SMPP / API技术接入资料 →

申请国际短信测试 →

联系技术团队评估接入方案 →

联系我们

结语

SMPP协议是短信通信领域的重要技术标准之一。

从表面来看,它只是负责企业与短信平台之间的消息传输;但从完整的企业短信系统架构来看,SMPP实际上涉及:TCP连接、Bind认证、PDU、submit_sm、Sequence Number、TPS、Window Size、编码、长短信以及DLR。

对于企业技术团队而言,掌握这些基础概念,可以帮助开发人员更快完成SMPP系统接入,也能够帮助采购团队更加准确地判断不同国际短信供应商的技术能力。

尤其是在国际短信业务中,不应只比较接口价格。真正决定业务体验的,是:协议接入能力、系统稳定性、并发能力、运营商资源、路由质量、投递回执和合规能力。

因此,企业在选择SMPP短信平台时,应当从完整通信链路出发进行评估。协议是连接方式,线路是交付基础,数据回执则是判断短信业务质量的重要依据。

2026-09-14

API短信接口是什么?核心功能、工作原理与应用场景|YaningAI

API短信接口是什么?本文详细解析API短信接口的定义、工作原理、核心功能、应用场景以及HTTP API与SMPP的区别,帮助企业选择稳定可靠的短信API服务,快速完成业务系统与短信平台对接。

2026-09-11

企业如何低成本搭建云通信触达体系?从短信到邮件的完整方案

从统一通信API到智能路由、消息队列与数据分析,系统梳理企业低成本搭建云通信触达体系的完整方案。

2026-09-09

云通信API对接常见报错处理指南:400、401、429及Webhook排查

云通信API对接报错怎么办?本文系统梳理400、401、403、404、415、429、500、502、503、504等常见错误,并介绍短信API鉴权、参数、Webhook、限流及国际短信发送失败的排查方法,帮助开发者快速定位云通信接口问题。

Telegram
WhatsApp
YANINGAI微信二维码