并非同类型协议
CMPP和SMPP都是短信协议中的一种,但它们不是同一类型的协议。SMPP和ESME和SMC(短信中心)之间的协议,而CMPP是SP和中国移动ISMG之间的通讯协议。
以下是CMPP 3.0文档中的图示。
<!--[if !vml]-->
<!--[endif]-->
与CMPP对应的协议有,联通的SGIP协议,中国电信的SMGP协议,网通的CNGP协议。
作为SP,只需要了解CMPP,不需要了解SMPP。
最新版本和兼容
SMPP协议是一个国际标准,有SMS论坛制定,官方网址为smsforum.net,截至 2006 年 7 月 2 日 ,最新版本是5.0。曾经流行的版本是3.3、3.4。SMPP协议向后兼容的。
CMPP最新版本似乎是3.0。现在(2006年7月),大多数还是使用CMPP 2.0。CMPP协议没有做到向后兼容,3.0的文档本身也没有讲到兼容的问题,甚至认为,协议制定者压根没想过要兼容。CMPP 3.0没做到向后兼容导致了一个问题,就是SP无法平滑升级。
PDU格式
PDU是协议数据单元的缩写,SMPP和CMPP都使用最先一个4位的长度标志整个PDU的长度。
SMPP Packet
|
消息头 |
必填参数 |
可选参数 |
CMPP Packet
|
消息头 |
消息体 |
<!--[endif]-->
SMPP是一个国际标准,不同的SMC的是实现可能要增加特定参数,为了具备更好的扩展性,SMPP 3.4以上版本,增加了可选参数,在5.0中,可选参数叫做TLVTable。
CMPP是中国移动定义的其内部ISMG之间、ISMG与SP之间的通讯标准,涉及一些具体的计费信息,但没有可选参数。
在SMPP中,消息头包括4部分:PDU长度、Command_Id、Command_Status、Sequence_Id。其中Command_Status字段,只在回应消息中使用,存在冗余。
CMPP中,消息头部包括3部分:PDU长度、Command_Id、Sequence_Id。个人认为,CMPP中的消息头,不包括Command_Status,似乎更好一些。
消息传输模式
SMPP和CMPP都支持异步传输,CMPP中,建议异步传输的窗口大小为16。
CMPP使用一个连接发送短信息和接收短信息。
SMPP支持多种的连接,其中TX类型的连接,只能发送短信息,RX类型的连接只能接收短信息,TRX类型的连接支持接收和发送短信息。
SMPP 3.4中,消息传输模式分三中:Store And Forward、Datagram、Forward。分别用在大吞吐量、可靠性保证等不同的应用场合。
CMPP没有规定其消息传输的模式,根据实际使用的情况看来,华为的网关的消息传输模式类似SMPP协议中规定的Datagram模式。