基本信息
CMPP的中文名稱是中國移動通信網際網路
簡訊網關接口協定。為中國移動通信集團公司企業規範。規範中描述了中國移動簡訊業務中各網元(包括ISMG、GNS和SP)之間的相關訊息的類型和定義。規範中定義了以下三方面的內容:(1)信息資源站實體與網際網路
簡訊網關之間的
接口協定;(2)網際網路簡訊網關之間的接口協定;(3)網際網路簡訊網關與匯接網關之間的接口協定,適用於各SP和ISMG的開發廠商。
詳細信息
編制說明
略縮語
ISMG Internet Short Message Gateway網際網路短訊息網關
SMPP Short Message Peer to Peer短訊息點對點協定
TLS Transport Layer Security傳輸層安全
SMC Short Message Center短訊息中心
網路結構
網際網路
SC業務中心即ISMG記錄了全網的SMC的位置,要求
ICP的功能實體向ISMG發CMPP_SUBMIT訊息,由ISMG將訊息轉發到某SMC上。同時,SMC也可向ISMG傳送短訊息,由ISMG傳送給相應的ICP。維護管理中心對ISMG進行管理。
1. CMPP功能
CMPP用以建立短訊息中心和ICP之間的
通路,業務和信息的提供由ICP完成。可以為實現移動數據增值業務提供服務,例如以下業務:Email通知、語音信箱通知、Internet發短訊息、移動台發Email、催費通知、自動綜合業務信息台(信息點播業務,主要有:天氣預報、股票信息、航班信息等)。
以下以Email通知業務為例,講述信息的流程:某網際網路的用戶向ICP的EmailServer傳送一封Email。ICP的POP3SERVER激活過濾進程,如果該用戶申請了Email通知業務,則過濾進程將用戶登記的手機號碼取出,將Email的標題取出,綁定在CMPP_SUBMIT訊息中,傳送給ISMG。ISMG將檢查CMPP_SUBMIT訊息中“接收業務的手機號碼”欄位,則在ISMG中查詢該手機用戶歸屬的SMC的地址,然後傳送給SMC。ISMG得到確認訊息後,將訊息轉換成CMPP_SUBMIT_REP,發回給ICP。SMC收到該訊息後,對該訊息進行處理,並向ISMG傳送確認訊息。
由上述流程可見,對於ICP來講,要做的工作主要集中在第二步,即在EMAILSERVER中做一個過濾程式,實現上述功能即可。
從協定上說,ICP只要具備CMPP中實現的接口,就可以實現對應於控制層的功能,至於對於具體的ICP功能實體,比如EmailServer、WebServer等,尚需做一些
套用層的工作。
2. 接口
CMPP協定以TCP/IP作為底層通信承載。在有較高的安全性需要時,可選用TLS層進行安全傳輸。
3. 訊息流程
ICP與ISMG之間進行信息互動時,可以採用
長連線方式,也可以採用
短連線方式。所謂
長連線,指在一個連線上可以連續傳送多個
數據包,然後下線,在連線保持期間,如果沒有數據包傳送,需要雙方發鏈路檢測包。
短連線是指通訊雙方有數據互動時,就建立一個連線,數據傳送完成後,則斷開此連線,即每次連線只完成一項業務的傳送。
4. 長訊息
ICP與ISMG以Client—Server方式建立TCP連線,用於雙方信息的相互提交。TCP/IP連線建立後,由Client發起建立
套用層的連線,這時如果ICP或ISMG認為需要建立TLS連線,則在傳輸的數據包中置TLS欄位,從而在雙方建立TLS連線。
在
套用層連線建立後的數據傳輸過程中,如果ICP或ISMG需要向對端傳送加密信息,也可建立TLS連線,這時只需要置相應的訊息體中Tls_available(是否使用TLS層)屬性欄位,且應的本條訊息的訊息體中的其他屬性不傳送。
訊息採用並發方式傳送,加以流量控制,即接收方在應答前一次收到的訊息多於10條將予以拒絕。
訊息類型
1) CMPP_Connect請求套用層連線
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路由請求應答
1. 短訊息
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的連線請求。
2. 訊息定義
CMPP連線
連線埠號定義為7890。位元組採用在網路中通用的
網路序,逾時時長間隔採用斐波那契數列,重發次數動態可調,最好不少於3次。
C-OctetString:變長
字元串,以空字元表示字元串結束
OctetString:定長字元串,位數不足時,右補空
訊息
1.訊息結構
項目說明
MessageHeader訊息頭(所有訊息公共包頭)
MessageBody訊息體
2.訊息頭格式(MessageHeader)
欄位名位元組數類型描述
Total_Length4Integer訊息總長度(含訊息頭及訊息體)
Command_ID4Integer命令或回響類型
Sequence_ID4Integer訊息流水號,順序累加,步長為1,循環使用
3.訊息體格式(MessageBody)
1.CMPP_Connect請求連線
欄位名位元組數屬性描述
Source_Addr6OctetStringICP_ID
AuthenticatorICP16OctetStringICP
認證碼[1]
Reverse8OctetString保留項(暫不用)
2.CMPP_Connect_REP請求連線應答
欄位名位元組數屬性描述
Status1Integer狀態(0:正確1:訊息結構錯2:非法ICP_ID
3:ICP認證錯4~:其他錯誤)
AuthenticatorISMG16OctetStringISMG
認證碼[2]
Tls_available1Integer是否使用TLS協定層
3.CMPP_Terminate終止連線
訊息體為空。
4.CMPP_Terminate_Rep終止連線回響
訊息體為空。
5.CMPP_Submit傳送簡訊
欄位名位元組數屬性描述
Msg_id4Integer信息標識:1~FFFFFFFFH,順序累加,步長為1,循環使用.
Pk_total1Integer相同Msg_id的訊息總條數
Pk_number1Integer相同Msg_id的訊息序號
Msg_level1Integer信息級別
Service_id10OctetString業務類型
Tls_available1Integer是否使用TLS協定層
Msg_Fmt1Integer信息格式0:ASCII串3:簡訊寫卡操作4:二進制信息
8:UCS2編碼15:含GB漢字
Msg_src6OctetString信息內容來源(ICP_ID)
FeeType1Integer資費類別
FeeCode1Integer資費代碼
Valid_Time1或17C-OctetString存活有效期(位元組數為1時:不指定存活期,置為NULL)
At_Time1或17C-OctetString定時傳送的時間(位元組數為1時:不指定傳送時間,置為NULL)
Src_terminal_id21OctetString源終端標識(沒有可以為空)
DestUsr_tl1Integer接收訊息的
用戶數量(小於100個用戶)
Dest_terminal_id21*DestUsr_tlOctetString接收業務的手機號碼
Msg_Length1Integer訊息長度(1-70或140)
Msg_ContentMsg_lengthC-OctetString訊息內容
Reserve8OctetString保留
6.CMPP_Submit_REP傳送簡訊回響(出錯要求ICP全部重發Msg_Id信息)
欄位名位元組數屬性描述
Msg_Id4Integer訊息標識
Tls_available1Integer是否使用TLS協定層
Result1Integer結果0:正確1:訊息結構錯2:命令字錯3:訊息序號重複
4:訊息長度錯5:資費代碼錯6:超過最大信息長
7:業務代碼錯8:流量控制錯9~:其他錯誤
信息級別
信息級別從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。其值通過單向MD5hash計算得出,表示如下:
AuthenticatorICP=MD5(Source_Addr+9zeroint+ConnectType+sharedsecret)
Sharedsecret由中國移動與ICP事先商定。
[2] 用於鑑別ISMG。其值通過單向MD5hash計算得出,表示如下:
AuthenticatorISMG=MD5(Status+AuthenticatorICP+Tls_available+sharedsecret)
Sharedsecret由中國移動與ICP事先商定,AuthenticatorICP為ICP傳送給ISMG的上一條訊息CMPP_Request_Connect中的值。
[3] 當Query_Type為0時,此項無效;當Query_Type為1時,此項填寫業務代碼Service_id.