更新时间: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.