CMPP 和 SMPP 协议比较
并非同类型协议
CMPP 和 SMPP 都是短信协议中的一种,但它们不是同一类型的协议。 SMPP 和 ESME 和 SMC (短信中心)之间的协议,而 CMPP 是 SP 和中国移动 ISMG 之间的通讯协议。
以下是 CMPP 3.0 文档中的图示。
与 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 是一个国际标准,不同的 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 模式。