3.1SMPP規範簡介
SMPP接口協議最初由ETSI納入GSM03.39規範,描述短消息中心和短消息實體之間通信交互的協議關系和數據傳輸格式。本規範中對SMPP接口協議的描述主要面向簡單的通信交互,制定規範的廠商將其協議版本號設為V3.30;後來,SMPP開發者論壇將協議版本演進到V3.40,SMPP V3.40協議規範完全兼容GSM 03.39協議標準。本規範中,短信中心設備與短信股票交易業務處理平臺之間的接口采用GSM03.39 V3.30協議規範,除非另有規定,否則以本協議規範為準。SMPP協議可以使用TCP/IP或X.25作為底層通信承載。
與SMPP協議規範相關的參考資料如下:
1、《GSM 03.39(5 . 0 . 0版)》:歐洲數字蜂窩電信系統(第二階段);短消息服務中心(SMSCs)與短消息實體(SMEs)連接的接口協議;
2、《GSM 03.39(版本6.0.0)》:歐洲數字蜂窩電信系統(階段2+);短消息服務中心(SMSCs)與短消息實體(SMEs)連接的接口協議;
3、《GSM 03.40(版本4.8.1):歐洲數字蜂窩電信系統(第二階段);點對點短消息業務的技術實現》
4、《GSM 03.38(版本5.2.0):數字蜂窩電信系統(階段2+);字母和語言特定信息》
5、《GSM 03.47(版本5.0.0):數字蜂窩電信系統;用於互連服務中心(SC)和移動服務交換中心(MSC)的示例協議棧》
6.900/1800 MHz數字蜂窩移動通信系統短消息中心設備規範(第壹卷點對點短消息業務)。
縮寫
中小企業短信實體
SMPP短消息點對點協議
SMSC短信服務中心
擴展短消息實體
3.2系統結構和功能概述
通過SMPP、ESME(如尋呼臺、語音郵件系統、股票交易業務處理平臺等。)可以綁定或解除綁定短消息中心,提交短消息或從短消息中心發送。
本協議由以下兩部分組成:
*(協議)從ESME到SMSC的消息
*(協議)從SMSC到擴展ESME的消息
其中,用戶管理部分僅適用於有用戶數據庫支持的SMSC。
下圖顯示了SMSC和ESME之間的關系:
圖3-1:SMSC和ESME連接的短信網絡
3.3消息協議
根據短信信息的流向,ESME與SMSC之間的短信信息可以分為兩類:1,SMSC到ESME的消息;2.埃斯梅給SMSC的信。對於所有請求消息,無論是來自ESME還是SMSC,都必須生成確認消息。
對於ESME提交給SMSC的信息,可能有兩種回應:
*SMSC收到消息的響應(ACK)
*如果為該短消息設置了狀態報告,則在該短消息到達目的地後,SMSC將向ESME生成狀態報告消息。
. 1從SMSC到ESME的消息
以下是SMSC給埃斯梅的信息。
命令
形容
綁定_接收方_響應
bind_receiver的響應,狀態指示連接是否成功。
綁定_發送器_響應
bind_transmitter的響應,狀態指示連接是否成功。
解除綁定_resp
解除綁定響應,狀態指示斷開是否成功。
提交_sm_resp
submit_sm,status的響應表示短消息是否提交成功。
deliver_sm
SMSC給埃斯梅發短信
enquire_link_resp
Enquire_link的響應
通用_nak
指示消息頭有錯誤的響應。
. 2從esme到SMSC的消息
以下是埃斯梅給SMSC的信息。
命令
形容
綁定_接收方
作為服務器,短消息實體(ESME/SME)與短消息中心(SMSC)建立連接。該連接建立後,允許短消息實體接受短消息中心發送的短消息。
綁定_發送器
作為客戶端,短消息實體(ESME/SME)與短消息中心(SMSC)建立連接。該連接建立後,允許短消息實體向短消息中心提交短消息。
解放
短消息實體(ESME/SME)從短消息中心系統(SMSC)斷開。
提交_短信
ESME將短消息提交給SMSC,以便SMSC可以將短消息發送到指定的移動站。
交付_sm_resp
deliver_sm的響應。狀態指示分發是否成功。
查詢_鏈接
短消息實體向短消息中心發起的連接維護查詢請求保證了通信鏈路的暢通。壹般來說,ENQUIRE_LINK消息大約每5秒發送壹次。
通用_nak
指示消息頭有錯誤的響應。
3.4消息語法
3.4.1語法定義規則
在以下語法描述中,遵循以下規則:
A.根據類型,未使用的字段必須設置為0或NULL。
b、消息由消息頭和消息體組成。
C.命令語法中未指定狀態。
0:表示成功。
非0:表示失敗。
& lt0x80000000:未定義值保留。
在類型中,可以使用以下定義。
L integer:由壹定數量的字節組成的整數,高位在前,低位在後。例如:1字節(byte),2字節(WORD),4字節(DWORD)。
L C_String:以NULL結尾的ASCII字符串。
L C_DecString:以NULL結尾的ASCII字符串,由壹系列10二進制字符(“0”-“9”)組成。
L C_OctetString:由任意8位字節組成的數據流字符串。
L C_HexString:以NULL結尾的ASCII字符串,由壹系列16個十六進制字符(' 0'-'9 ',' a' ('a')-'f' ('f '))組成。
L C_StringTime:表示時間的字符串,格式如下“YYMMDDhhmmsstnnp”格式如下。
解釋
YY的
年份的最後兩位數(00-99)
abbr. 毫米(millimeter)
月份(01-12)
直接傷害
日(01-31)
倍硬
小時(00-23)
毫米
分數(00-59)
懸浮物
秒(00-59)
T
十分之壹秒(0-9)
神經網絡
UTC(通用時間常數)和UTC (00-48)之間的差距。
+'(p)
時間早於UTC時間。
-'(p)
時間落後於UTC時間。
unicode字符串:unicode編碼的字符串。
消息頭的語法
領域
長度(字節)
類型
指令長度
四
整數
命令ID
四
整數
命令_狀態
四
整數
序列號
四
整數
可選消息正文
可變的
混合
特定字段的描述:
l命令長度:整個包的長度(包括字段本身)。
l命令ID:該字段指示短消息的類型,相當於標識符。例如,ESME_SUB_SM表示該消息是由ESME提交給SMSC的短消息。當標識符指示消息是請求消息時,標識符的保留值範圍是0h到FFh。當標識符指示消息是響應消息時,標識符的保留值範圍從080000000h到0800000FFh。壹般來說,回復消息的類型對應於相應的請求消息的類型,但不同的是,回復消息的類型被設置為比特31。
命令ID命令值:
命令ID編碼
命令ID
形容
命令ID值
ESME_BNDRCV
綁定_接收方
ESME要求您作為接收者連接到SMSC。
0X00000001
RESP埃斯梅
綁定_接收方_響應
綁定接收方的響應
0X80000001
ESME_BNDTRN
綁定_發送器
ESME要求作為發送方連接到SMSC。
0X00000002
RESP埃斯梅
bind_transmitrer_resp
綁定發送器的響應
0X80000002
UBD埃斯梅
解放
埃斯梅要求與SMSC斷交。
0x 000000006
RESP UBD埃斯梅
解除綁定_resp
解除綁定響應
0X80000006
ESME_SUB_SM
提交_短信
埃斯梅給SMSC發短信。
0x 000000004
RESP
提交_sm_resp
submit_sm的響應
0X80000004
SMSC交貨
Deliver_sm
SMSC給埃斯梅發短信
0x 000000005
SMSC交貨RESP SM
交付_sm_resp
deliver_sm的響應
0X80000005
ESME_QRYLINK
查詢_鏈接
埃斯梅詢問了與SMSC的關系。
0X00000015
RESP埃斯梅
Enquire_link_resp
enquire_link的響應
0X80000015
NACK埃斯梅
納克
指示消息頭有錯誤的響應。
0X80000000
l命令狀態:該字段指示請求消息的成功或失敗,例如失敗,指示導致失敗的錯誤類型和其他信息。該字段僅在回復消息中使用,在請求消息中必須為空。
命令狀態值描述:
錯誤代碼
錯誤的值
形容
e _成功
0X00000000
成功
其他錯誤
0X00000001
其他錯誤
0x 000000002–0x 0000000 f
為SMSC制造商定義預留時出錯。
E_MSGLENERR
0X00000010
消息長度錯誤
E _ CMDLENERR
0X00000011
命令長度誤差
E_INVLDCMDID
0X00000012
無效的消息ID。
E_NORIGHT(0X00000013)
0X00000013
您沒有執行此命令的權限。
0x 00000014–0x 0000001F
保留
E_INVLDSYSTEMID
0X00000020
無效的SYSTEMID。
E_INVLDPASSWORD
0X00000021
無效密碼。
E_INVLDSYSTEMTYPE
0X00000022
無效的系統類型。
0x 00000023–0x 0000003 f
保留
電子地址
0X00000040
地址錯誤
電動自行車
0X00000041
超過了提交的最大數量。
E_MTEXCEED
0X00000042
超過最大分配數。
E_INVLDUSER
0X00000043
無效用戶。
E_INVLDDATAFMT
0X00000044
無效的數據格式。
e _創建失敗
0X00000045
無法創建消息。
E_INVLDMSGID
0X00000046
無效的短信ID
e _數據庫故障
0X00000047
數據庫故障
取消失敗
0X00000048
取消消息失敗。
E _ MSGSTATEERR
0X00000049
短信狀態錯誤
E_REPLACEMSGFAILURE
0X0000004A
無法替換消息。
E_INVLDRPLADDR
0X0000004B
替換消息的源地址中有錯誤。
0x 0000004 c–0x 0000005 f
保留
E_INVLDORGTON
0X00000060
無效的源地址TON。
E_INVLDORGNPI
0X00000061
無效的源地址NPI。
E_ORGADDRERR
0X00000062
源地址錯誤
E _ INVLDDESTTON
0X00000063
無效的目的地址TON。
E_INVLDDESTNPI
0X00000064
無效的目標地址NPI。
E _ DESTADDRERR
0X00000065
目的地址錯誤
電子發票計劃
0X00000066
無效的計時時間。
E _ INVLDEXPIRE
0X00000067
無效超時。
E_INVLDESM
0X00000068
無效的ESM_CALSS。
E_INVLDUDLEN
0X00000069
無效的UDLEN。
E_INVLDPRI
0X0000006A
無效優先級
E_INVLDRDF
0X0000006B
無效的註冊交貨標誌。
E_INVLDRPF
0X0000006C
Replace_if_present_flag無效。
0x 0000006d–0x 0000007 f
保留
用戶管理部分(可選)
e _用戶已存在
0X00000080
指定的用戶已經存在。
E _ CREATEUSERERR
0X00000081
無法創建用戶。
E _ USERIDERR
0X00000082
用戶ID錯誤
e _用戶不存在
0X00000083
指定的用戶不存在。
0x 00000084–0x 0000008 f
保留
0x 00000090–0x 00000 fff
為SMSC制造商定義預留時出錯。
其他的
保留
順序號。:該字段表示報文的序列號,由ESME生成,是報文與其回復之間的對應標誌,取值在01h和07FFFFFFFh之間。對於每個請求消息,該字段的值必須嚴格單調遞增。當序列號達到最大值時,返回將從01h繼續。
l可選消息體:該字段表示短消息的消息體部分,攜帶移動股票交易應用中的STK卡應用協議內容。
3.4.3每個命令消息體的具體格式
1,泛型_Nak命令
該命令用於在收到的消息報頭中有錯誤時做出響應。此響應只能由接收方發送。該命令只有消息頭,沒有消息體。
2.綁定接收器命令
在擴展短消息實體和短消息中心之間建立虛擬連接,接收SMSC轉發的短消息。
領域
長度(字節)
類型
系統標識
最大16
c _字符串
密碼
最多9個
c _字符串
系統類型
最大13
c _字符串
接口版本
1
整數
地址噸
1
整數
Addr_npi
1
整數
地址範圍
最大值41
C_DecString
特定字段的描述:
System_id:該字段是系統登錄短消息中心時使用的接口號。
密碼:該字段是系統登錄短消息中心時使用的密碼。
System_type:該字段指示登錄的接口類型。
Interface_version:該字段指示登錄接口的版本號。
Addr_ton:該字段指示編碼類型。如果沒有,可以設置為空。值描述:
當用戶或網絡不包含關於編碼方案的早期信息時,0是未知的。
1國際號碼,
2國內號碼
3網絡特殊號碼
4用戶號碼
5個字符的數字
6縮寫數字
7預訂
Addr_npi:該字段指示編碼方案。如果沒有,可以設置為空。值描述:
0未知
1 ISDN或電話號碼編碼方案(E164/E163)對任何實體SC、MSC或MS有效。
2預訂
3數據編碼方案(X121)
4電報編碼方案
5-7預訂
8國內編碼方案
9私有編碼方案
10 ERMES編碼方案(ETSI DE/PS 3 01-3)
11-15保留
Address_range:該字段用於指示短消息的路由,並將狀態報告轉發給ESME。如果沒有,可以設置為空。
3.綁定接收方RESP語法
該命令用於響應MI_BIND_RECEIVER。
領域
大小(字節)
類型
系統標識
最大16
c _字符串