PDU

协议数据单元是链路上的一个 SMPP 命令,例如 submit_sm:固定消息头,加上由命令决定的报文体。

仅解释——此处解释的术语不是我们销售的服务。

协议数据单元是某个协议在链路上传输的一条命令:先是固定消息头,后接随命令变化的报文体。SMPP 消息头携带命令长度、命令 ID、命令状态和序列号。

submit_sm 的报文体携带收发双方的地址、数据编码和 short_message 字段。该字段承载用户数据,esm_class 指示时还带 UDH。SMSC 会在无线侧把它映射为 3GPP TS 23.040 的 TPDU。

SMPP 解码器在浏览器中解析粘贴的 PDU,但只能读取交给它的那些字节。

一条 PDU 的逐字段结构

command_length
32
command_id
0x00000004
command_status
0x00000000
sequence_number
1
service_type
source_addr_ton
0
source_addr_npi
0
source_addr
dest_addr_ton
0
dest_addr_npi
0
destination_addr
esm_class
0x00
消息头固定不变,报文体随命令改变。
文字说明

每条 PDU 都以四字节的命令长度、命令 ID、命令状态和序列号开头,之后是报文体。

常见问题

PDU 和数据包是一回事吗?

不是。PDU 属于某个有明确布局的协议。在短信领域,它通常指一条 SMPP 命令或编码后的短消息。

为什么 PDU 解码出来的文字不对?

常见原因出在数据编码和用户数据头上。

不知道方向也能解码 PDU 吗?

不能可靠解码。原始 TPDU(SMS-SUBMIT 与 SMS-DELIVER)在两个方向上的字段顺序不同。SMPP PDU 由 command_id 标明命令,因此命令 ID 就给出了方向。

了解更多

来源

  1. 3GPP TS 23.040: technical realization of the Short Message Service(短消息服务的技术实现)
  2. 3GPP TS 23.038: alphabets and language-specific information for SMS(短信的字母表与语言特定信息)
  3. SMPP v3.4 规范:命令头与 short_message 字段