cmpp

更新时间:2022-08-25 10:15

ChinaMobilePeertoPeer--中国移动点对点协议

基本信息

CMPP的中文名称是中国移动通信互联网短信网关接口协议。为中国移动通信集团公司企业规范。规范中描述了中国移动短信业务中各网元(包括ISMG、GNS和SP)之间的相关消息的类型和定义。规范中定义了以下三方面的内容:(1)信息资源站实体与互联网短信网关之间的接口协议;(2)互联网短信网关之间的接口协议;(3)互联网短信网关与汇接网关之间的接口协议,适用于各SP和ISMG的开发厂商。

详细信息

编制说明

本规范为中国移动通信集团公司企业规范,规定信息资源站实体与互联网短消息网关的应用层接口协议。本协议版本为1.1版。

略缩语

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请求应用层连接

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路由请求应答

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次。

基本数据类型

Integer:无符号整数

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.

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}