1、中国移动通信信息资源站实体与互联网短消息网关(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 Shor
2、t Message Center 短消息中心 网络结构因特网 SC 业务中心即 ISMG 记录了全网的 SMC 的位置,要求 ICP 的功能实体向ISMG 发 CMPP_SUBMIT 消息,由 ISMG 将消息转发到某 SMC 上。同时,SMC 也可向ISMG 发送短消息,由 ISMG 发送给相应的 ICP。维护管理中心对 ISMG 进行管理。CMPP 功能CMPP 用以建立短消息中心和 ICP 之间的通路,业务和信息的提供由 ICP 完成。可以为实现移动数据增值业务提供服务,例如以下业务:Email 通知、语音信箱通知、Internet发短消息、移动台发 Email、催费通知、自动综合业务信
3、息台(信息点播业务,主要有:天气预报、股票信息、航班信息等)。以下以 Email 通知业务为例,讲述信息的流程:某因特网的用户向 ICP 的 Email Server 发送一封 Email。ICP 的 POP3 SERVER 激活过滤进程,如果该用户申请了 Email通知业务,则过滤进程将用户登记的手机号码取出,将 Email 的标题取出,绑定在CMPP_SUBMIT 消息中,发送给 ISMG。ISMG 将检查 CMPP_SUBMIT 消息中“接收业务的手机号码”字段,则在 ISMG 中查询该手机用户归属的 SMC 的地址,然后发送给SMC。ISMG 得到确认消息后,将消息转换成 CMPP_S
4、UBMIT_REP,发回给 ICP。SMC收到该消息后,对该消息进行处理,并向 ISMG 发送确认消息,由上述流程可见,对于 ICP 来讲,要做的工作主要集中在第二步,即在 EMAIL SERVER 中做一个过滤程序,实现上述功能即可。从协议上说,ICP 只要具备 CMPP 中实现的接口,就可以实现对应于控制层的功能,至于对于具体的 ICP 功能实体,比如 Email Server、Web Server 等,尚需做一些应用层的工作。接口CMPP 协议以 TCP/IP 作为底层通信承载。在有较高的安全性需要时,可选用 TLS 层进行安全传输。消息流程ICP 与 ISMG 之间进行信息交互时,可以
5、采用长连接方式,也可以采用短连接方式。所谓长连接,指在一个连接上可以连续发送多个数据包,然后断开连接,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。长消息ICP 与 ISMG 以 ClientServer 方式建立 TCP 连接,用于双方信息的相互提交。TCP/IP 连接建立后,由 Client 发起建立应用层的连接,这时如果 ICP 或 ISMG 认为需要建立 TLS 连接,则在传输的数据包中置 TLS 字段,从而在双方建立 TLS 连接。在应用层连接建立后的数据传输过程
6、中,如果 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
7、) 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)
8、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 端。发送与接收单独进行,每项业务建立一个连接,通讯采用应答方式,应答与请求在同一个连接中完成。由于系统采用互为客户端/服
9、务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。传输过程中,如果 ICP 或 ISMG 认为需要建立 TLS 连接,则在传输的数据包中置 TLS 字段,并建立双方的 TLS 连接。连接中对 ICP 的认证采用阶段性认证方式,当 ICP 首次与 IMSG 交换信息时,ICP 首先发送身份认证包,IMSG 对 ICP 进行身份认证后,记录 ICP 的 IP 地址等相关信息,在以后的数据交互时,IMSG 把 ICP 的 IP 地址作为认证条件,即对没有注册的 ICP 的相关信息不予处理。当 ICP 想断开此逻辑上的应用层连接时,发送断开连接请求包,ISMG 接受断开连接请求后,
10、清除掉与此 ICP 相关的信息,即对 MO 到此 ICP 或 ICP 的 MT 信息均不予处理,但保存 MO 的信息,直到 ICP 再次与 ISMG 建立逻辑上的应用层连接,即身份认证。也允许 ISMG 发起断开 ICP 的连接请求。消息采用并发方式发送,并加以流量控制,窗口大小可调,暂定为 10 条消息,即接收方在应答前一次收到的消息多于 10 条将予以拒绝。ICP 向 ISMG 发送的消息类型包括:1) CMPP_Connect 请求应用层连接 2) CMPP_Terminate 终止应用层连接 3) CMPP_Terminate_REP 终止应用层连接应答 4) CMPP_Deliver
11、_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)
12、 CMPP_Fwd 消息前转 2) CMPP_Fwd_REP 消息前转应答 3) CMPP_Route 路由请求 4) CMPP_Route_REP 路由请求应答 一次操作流程(MO 和 MT)消息定义CMPP 连接端口号定义为 7890。字节采用在网络中通用的网络序,超时时长间隔采用斐波那契数列,重发次数动态可调,最好不少于 3 次。基本数据类型:Integer 无符号整数C-Octet String变长字符串,以空字符表示字符串结束Octet String定长字符串,位数不足时,右补空7.1 消息结构项目说明Message Header消息头(所有消息公共包头)Message Body消息
13、体7.2 消息头格式(Message Header)字段名字节数类型描述Total_Length 4Integer消息总长度(含消息头及消息体 )Command_ID4Integer命令或响应类型Sequence_ID4Integer消息流水号,顺序累加,步长为 1,循环使用7.3 消息体格式(Message Body)1. CMPP_Connect 请求连接字段名字节数属性描述Source_Addr 6Octet StringICP_IDAuthenticatorICP16Octet StringICP 认证码1Reverse8Octet String保留项(暂不用)2. CMPP_Conn
14、ect_REP 请求连接应答字段名字节数属性描述Status1Integer状态0:正确1:消息结构错2:非法 ICP_ID3:ICP 认证错4 :其他错误AuthenticatorISMG16Octet StringISMG 认证码2Tls_available1Integer是否使用 TLS 协议层3. CMPP_Terminate 终止连接消息体为空。4. CMPP_Terminate_Rep 终止连接响应消息体为空。5.CMPP_Submit 发送短信字段名字节数属性描述Msg_id4Integer信息标识 1FFFFFFFFH顺序累加,步长为 1,循环使用 .Pk_total1Inte
15、ger相同 Msg_id 的消息总条数Pk_number1Integer相同 Msg_id 的消息序号Msg_level1Integer信息级别Service_id10Octet String业务类型Tls_available1Integer是否使用 TLS 协议层Msg_Fmt1Integer信息格式0:ASCII 串3:短信写卡操作4:二进制信息8:UCS2 编码15:含 GB 汉字 Msg_src6Octet String信息内容来源(ICP_ID) FeeType1Integer资费类别 FeeCode1Integer资费代码Valid_Time1 或 17C-Octet String
16、存活有效期(字节数为 1 时:不指定存活期,置为 NULL)At_Time1 或 17C-Octet String定时发送的时间(字节数为 1 时:不指定发送时间,置为 NULL)Src_terminal_id21Octet String源终端标识(没有可以为空)DestUsr_tl1Integer接收消息的用户数量(小于 100 个用户)Dest_terminal_id21*DestUsr_tlOctet String接收业务的手机号码Msg_Length1Integer消息长度(1-70 或 140)Msg_ContentMsg_lengthC-Octet String消息内容Reserve8Octet String保留6.CMPP_Submit_REP 发送短信响应(出错要求 ICP 全部重发 Msg_Id 信息)字段名字节数属性描述Msg_Id4Integer消息标识Tls_available1Integer是否使用 TLS 协议层Result1Integer结果0:正确1:消息结构错2:命令字错3:消息序号重复4:消息长度错5:资费代码错6:超过最大信息长7:业务代码错8: 流量控制错9 :其他错误7.CMPP_Query 发送短信状态查询(查询 Time 属性指定的日期的统计信息 )字段名字节数属性描述Tls_available1