CMPP說明,1.1、CMPP來歷,1.2、編制說明,1.3、略縮語,1.4、網路結構,CMPP功能,2.1、功能簡介,2.2、實例,2.3、接口,2.4、訊息流程,2.5、長訊息,2.6、短訊息,2.7、訊息定義,2.8、訊息結構,2.9、訊息頭格式(Message Header),2.10、訊息體格式(Message Body),2.11、UCS2編碼 15:含GB漢字,2.12、訊息序號重複,
CMPP說明
1.1、CMPP來歷
中國移動通信信息資源站實體與網際網路
短訊息網關(ISMG)
V1.1
中國移動通信集團公司
2000/11/29
--------------------------------------------------------------------------------
1.2、編制說明
1.3、略縮語
ISMG Internet Short Message Gateway 網際網路
短訊息網關SMPP Short Message Peer to Peer 短訊息點對點協定
CMPP China Mobile Peer to Peer 中國移動點對點協定
TLS Transport Layer Security
傳輸層安全SMC Short Message Center 短訊息中心
1.4、網路結構
網際網路SC業務中心即ISMG記錄了全網的SMC的位置,要求ICP的功能實體向ISMG發CMPP_SUBMIT訊息,由ISMG將訊息轉發到某SMC上。同時,SMC也可向ISMG傳送短訊息,由ISMG傳送給相應的ICP。
維護管理中心對ISMG進行管理。
CMPP功能
2.1、功能簡介
CMPP用以建立短訊息中心和ICP之間的通路,業務和信息的提供由ICP完成。可以為實現移動數據增值業務提供服務,例如以下業務:Email通知、語音信箱通知、Internet發短訊息、移動台發Email、催費通知、自動綜合業務信息台(信息點播業務,主要有:天氣預報、股票信息、航班信息等)。
2.2、實例
以下以Email通知業務為例,講述信息的流程:某網際網路的用戶向ICP的Email Server傳送一封Email。ICP的POP3 SERVER激活過濾進程,如果該用戶申請了Email通知業務,則過濾進程將用戶登記的手機號碼取出,將Email的標題取出,綁定在CMPP_SUBMIT訊息中,傳送給ISMG。ISMG將檢查CMPP_SUBMIT訊息中“接收業務的手機號碼”欄位,則在ISMG中查詢該手機用戶歸屬的SMC的地址,然後傳送給SMC。ISMG得到確認訊息後,將訊息轉換成CMPP_SUBMIT_REP,發回給ICP。SMC收到該訊息後,對該訊息進行處理,並向ISMG傳送確認訊息,
由上述流程可見,對於ICP來講,要做的工作主要集中在第二步,即在EMAIL SERVER中做一個過濾程式,實現上述功能即可。
從協定上說,ICP只要具備CMPP中實現的接口,就可以實現對應於控制層的功能,至於對於具體的ICP功能實體,比如Email Server、Web Server等,尚需做一些
套用層的工作。
2.3、接口
CMPP協定以TCP/IP作為底層通信承載。在有較高的安全性需要時,可選用TLS層進行安全傳輸。
2.4、訊息流程
ICP與ISMG之間進行信息互動時,可以採用
長連線方式,也可以採用
短連線方式。所謂
長連線,指在一個連線上可以連續傳送多個
數據包,然後下線,在連線保持期間,如果沒有數據包傳送,需要雙方發鏈路檢測包。
短連線是指通訊雙方有數據互動時,就建立一個連線,數據傳送完成後,則斷開此連線,即每次連線只完成一項業務的傳送。
2.5、長訊息
ICP與ISMG以Client—Server方式建立TCP連線,用於雙方信息的相互提交。TCP/IP連線建立後,由Client發起建立
套用層的連線,這時如果ICP或ISMG認為需要建立TLS連線,則在傳輸的
數據包中置TLS欄位,從而在雙方建立TLS連線。
在
套用層連線建立後的數據傳輸過程中,如果ICP或ISMG需要向對端傳送加密信息,也可建立TLS連線,這時只需要置相應的訊息體中Tls_available(是否使用TLS層)屬性欄位,且應的本條訊息的訊息體中的其他屬性不傳送。
訊息採用並發方式傳送,加以流量控制,視窗大小可調,暫定為10條訊息,即接收方在應答前一次收到的訊息多於10條將予以拒絕。
ICP向ISMG傳送的訊息類型包括:
2) CMPP_Terminate 終止
套用層連線
3) CMPP_Terminate_REP 終止
套用層連線應答
4) CMPP_Deliver_REP 下發簡訊應答
5) CMPP_Submit 提交簡訊
6) CMPP_Query 傳送簡訊狀態查詢
7) CMPP_Cancel 刪除簡訊
8) CMPP_Active_Test 激活測試
9) CMPP_Active_Test_REP 激活測試應答
ISMG向ICP傳送的訊息類型包括:
1) CMPP_Connect_REP 請求連線應答
2) CMPP_Deliver 簡訊下發
3) CMPP_Submit_REP 提交簡訊應答
4) CMPP_Query_REP 簡訊狀態查詢結果
5) CMPP_Cancel_REP 刪除簡訊應答
6) CMPP_Active_Test_REP 激活測試應答
7) CMPP_Active_Test 激活測試
8) CMPP_Terminate 終止
套用層連線
9) CMPP_Terminate_Rep 終止套用層連線應答
ISMG之間傳送的訊息類型包括:
1) CMPP_Fwd 訊息前轉
2) CMPP_Fwd_REP 訊息前轉應答
3) CMPP_Route 路由請求
4) CMPP_Route_REP 路由請求應答
一次操作流程
2.6、短訊息
ISMG與ICP之間的通訊採用TCP/IP協定,雙方互為client和server端。傳送與接收單獨進行,每項業務建立一個連線,通訊採用應答方式,應答與請求在同一個連線中完成。由於系統採用互為
客戶端/伺服器模式,操作以客戶端驅動方式發起連線請求,完成一次操作後關閉此連線。傳輸過程中,如果ICP或ISMG認為需要建立TLS連線,則在傳輸的數據包中置TLS欄位,並建立雙方的TLS連線。
連線中對ICP的認證採用階段性認證方式,當ICP首次與IMSG交換信息時,ICP首先傳送身份認證包,IMSG對ICP進行身份認證後,記錄ICP的IP位址等相關信息,在以後的數據互動時,IMSG把ICP的IP位址作為認證條件,即對沒有註冊的ICP的相關信息不予處理。當ICP想斷開此邏輯上的套用層連線時,傳送下線請求包,ISMG接受下線請求後,清除掉與此ICP相關的信息,即對MO到此ICP或ICP的MT信息均不予處理,但保存MO的信息,直到ICP再次與ISMG建立邏輯上的套用層連線,即身份認證。也允許ISMG發起斷開ICP的連線請求。
ICP向ISMG傳送的訊息類型包括:
1) CMPP_Connect 請求套用層連線
2) CMPP_Terminate 終止套用層連線
3) CMPP_Terminate_REP 終止套用層連線應答
4) CMPP_Deliver_REP 下發簡訊應答
5) CMPP_Submit 提交簡訊
6) CMPP_Query 傳送簡訊狀態查詢
7) CMPP_Cancel 刪除簡訊
ISMG向ICP傳送的訊息類型包括:
1) CMPP_Connect_REP 請求連線應答
2) CMPP_Deliver 簡訊下發
3) CMPP_Submit_REP 提交簡訊應答
4) CMPP_Query_REP 簡訊狀態查詢結果
5) CMPP_Cancel_REP 刪除簡訊應答
6) CMPP_Terminate 終止套用層連線
7) CMPP_Terminate_Rep 終止套用層連線應答
ISMG之間傳送的訊息類型包括:
1) CMPP_Fwd 訊息前轉
2) CMPP_Fwd_REP 訊息前轉應答
3) CMPP_Route 路由請求
4) CMPP_Route_REP 路由請求應答
一次操作流程(MO和MT)
2.7、訊息定義
CMPP連線
連線埠號定義為7890。位元組採用在網路中通用的
網路序,逾時時長間隔採用斐波那契數列,重發次數動態可調,最好不少於3次。
Integer
C-Octet String
Octet String
定長字元串,位數不足時,右補空
2.8、訊息結構
項目 說明
Message Header 訊息頭(所有訊息公共包頭)
Message Body 訊息體
2.9、訊息頭格式(Message Header)
Total_Length 4 Integer 訊息總長度(含訊息頭及訊息體)
Command_ID 4 Integer 命令或回響類型
Sequence_ID 4 Integer 訊息流水號,順序累加,步長為1,循環使用
2.10、訊息體格式(Message Body)
⒈ CMPP_Connect 請求連線
欄位名 位元組數 屬性 描述
Source_Addr 6 Octet String ICP_ID
AuthenticatorICP 16 Octet String ICP
認證碼[1]
Reverse 8 Octet String 保留項(暫不用)
⒉ CMPP_Connect_REP 請求連線應答
欄位名 位元組數 屬性 描述
Status 1 Integer 狀態 (0:正確 1:訊息結構錯 2:非法ICP_ID
3:ICP認證錯 4~ :其他錯誤)
AuthenticatorISMG 16 Octet String ISMG
認證碼[2]
Tls_available 1 Integer 是否使用TLS協定層
⒊ CMPP_Terminate 終止連線
訊息體為空。
⒋ CMPP_Terminate_Rep 終止連線回響
訊息體為空。
⒌CMPP_Submit 傳送簡訊
欄位名 位元組數 屬性 描述
Msg_id 4 Integer 信息標識 :1~FFFFFFFFH,順序累加,步長為1,循環使用.
Pk_total 1 Integer 相同Msg_id的訊息總條數
Pk_number 1 Integer 相同Msg_id的訊息序號
Msg_level 1 Integer 信息級別
Service_id 10 Octet String 業務類型
Tls_available 1 Integer 是否使用TLS協定層
Msg_Fmt 1 Integer 信息格式 0:ASCⅡ串 3:簡訊寫卡操作 4:二進制信息
2.11、UCS2編碼 15:含GB漢字
Msg_src 6 Octet String 信息內容來源(ICP_ID)
FeeType 1 Integer 資費類別
FeeCode 1 Integer 資費代碼
Valid_Time 1或17 C-Octet String 存活有效期(位元組數為1時:不指定存活期,置為NULL)
At_Time 1或17 C-Octet String 定時傳送的時間(位元組數為1時:不指定傳送時間,置為NULL)
Src_terminal_id 21 Octet String 源終端標識(沒有可以為空)
DestUsr_tl 1 Integer 接收訊息的
用戶數量(小於100個用戶)
Dest_terminal_id 21*DestUsr_tl Octet String 接收業務的手機號碼
Msg_Length 1 Integer 訊息長度(1-70或140)
Msg_Content Msg_length C-Octet String 訊息內容
Reserve 8 Octet String 保留
⒍CMPP_Submit_REP 傳送簡訊回響(出錯要求ICP全部重發Msg_Id信息)
欄位名 位元組數 屬性 描述
Msg_Id 4 Integer 訊息標識
Tls_available 1 Integer 是否使用TLS協定層
Result 1 Integer 結果 0:正確 1:訊息結構錯 2:命令字錯
2.12、訊息序號重複
4:訊息長度錯 5:資費代碼錯 6:超過最大信息長
7:業務代碼錯 8: 流量控制錯 9~ :其他錯誤
……
8FeeType & FeeCode 資費類別和資費代碼(待定)
一、信息級別
信息級別從1--9,“9”最高,“0”最低
二、資費代碼
具體定義為:
“00”:免費
“99”:包月
“98”:封頂
“01”--“10”:0.01元--0.10元
“11”--“50”:以0.05元遞增
“51”--“80”:以0.10元遞增
“81”--“97”:保留
[1]用於鑑別ICP。其值通過單向MD5 hash計算得出,表示如下:
AuthenticatorICP =MD5(Source_Addr+9 zero int+ConnectType+shared secret)
Shared secret 由中國移動與ICP事先商定。
[2]用於鑑別ISMG。其值通過單向MD5 hash計算得出,表示如下:
AuthenticatorISMG =MD5(Status+AuthenticatorICP+ Tls_available+shared secret)
Shared secret 由中國移動與ICP事先商定,AuthenticatorICP為ICP傳送給ISMG的上一條訊息CMPP_Request_Connect中的值。
[3]當Query_Type為0時,此項無效;當Query_Type為1時,此項填寫業務代碼Service_id.
參考資料:http://www.simpleteam.com/simpleteam/sms/cmpp1_1.htm