中国移动通信信息资源站实体与互联网短消息网关(ISMG)
接口协议(CMPP)
V1.1
中国移动通信集团公司
2000/11/29
--------------------------------------------------------------------------------
本规范为中国移动通信集团公司企业规范,规定信息资源站实体与互联网短消息网关的应用层接口协议。本协议版本为1.1版。
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 短消息中心
因特网SC业务中心即ISMG记录了全网的SMC的位置,要求ICP的功能实体向ISMG发CMPP_SUBMIT消息,由ISMG将消息转发到某SMC上。同时,SMC也可向ISMG发送短消息,由ISMG发送给相应的ICP。
维护管理中心对ISMG进行管理。
CMPP用以建立短消息中心和ICP之间的通路,业务和信息的提供由ICP完成。可以为实现移动数据增值业务提供服务,例如以下业务:Email通知、语音信箱通知、Internet发短消息、移动台发Email、催费通知、自动综合业务信息台(信息点播业务,主要有:天气预报、股票信息、航班信息等)。
以下以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等,尚需做一些应用层的工作。
CMPP协议以TCP/IP作为底层通信承载。在有较高的安全性需要时,可选用TLS层进行安全传输。
ICP与ISMG之间进行信息交互时,可以采用长连接方式,也可以采用短连接方式。所谓长连接,指在一个连接上可以连续发送多个数据包,然后断开连接,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
ICP与ISMG以Client—Server方式建立TCP连接,用于双方信息的相互提交。TCP/IP连接建立后,由Client发起建立应用层的连接,这时如果ICP或ISMG认为需要建立TLS连接,则在传输的数据包中置TLS字段,从而在双方建立TLS连接。
在应用层连接建立后的数据传输过程中,如果ICP或ISMG需要向对端发送加密信息,也可建立TLS连接,这时只需要置相应的消息体中Tls_available(是否使用TLS层)属性字段,且应的本条消息的消息体中的其他属性不发送。
消息采用并发方式发送,加以流量控制,窗口大小可调,暂定为10条消息,即接收方在应答前一次收到的消息多于10条将予以拒绝。
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 删除短信
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 路由请求应答
一次操作流程
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)
CMPP连接端口号定义为7890。字节采用在网络中通用的网络序,超时时长间隔采用斐波那契数列,重发次数动态可调,最好不少于3次。
基本数据类型:
Integer
无符号整数
C-Octet String
变长字符串,以空字符表示字符串结束
Octet String
定长字符串,位数不足时,右补空
项目 说明
Message Header 消息头(所有消息公共包头)
Message Body 消息体
字段名字节数 类型 描述
Total_Length 4 Integer 消息总长度(含消息头及消息体)
Command_ID 4 Integer 命令或响应类型
Sequence_ID 4 Integer 消息流水号,顺序累加,步长为1,循环使用
⒈ 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:二进制信息
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:命令字错
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.
参考资料:https://www.simpleteam.com/simpleteam/sms/cmpp1_1.htm