PDU即协议数据单元,对应前面每种消息的消息格式。彩信的PDU和HTTP协议极为类似,当然相对来说要简单多了。它定义了一些常用的消息域,有的消息域是公有的,每种消息都可以使用,有的消息域是专用的,只有特定的消息才能使用。除了常用的消息域外,也可以自定义消息域,自定义消息域以X-打头,但不能以X-Mms-打头。常用的消息域如:
l X-Mms-Message-Type
l X-Mms-Transaction-ID
l X-Mms-MMS-Version
l Date
l From
l To
l Cc
l Bcc
l Subject
l X-Mms-Message-Class
l X-Mms-Expiry
l X-Mms-Delivery-Time
l X-Mms-Priority
l X-Mms-Sender-
l Visibility
l X-Mms-Delivery-Report
l X-Mms-Read-Reply
l Content-Type
PDU的类型有:
l 发送请求。m-send-req(终端<发送方>->彩信中心)
l 发送确认。m-send-conf(彩信中心->终端<发送方>)
l 彩信通知。m-notification-ind(发送PUSH:彩信中心<通过PUSH协议>->终端<接收方><特殊短信,包含URL>)
l 通知回应。m-notifyresp-ind(收到PUSH回应:终端<接收方>->彩信中心)
l 获取彩信回应。m-retrieve-conf(彩信中心->终端<接收方>)
l 接收确认。m-acknowledge-ind(终端<接收方>->彩信中心)
l 彩信回执。m-delivery-ind(彩信中心->终端<发送方>)
获取彩信只是一个普通的HTTP GET请求,而没有专门的PDU。
彩信的PDU编码:彩信PDU在语义上与HTTP协议类似,但是其编码方式并不一样,为了充分利用带宽,彩信PDU采用二进制方式编码。其编码规则很简单,预定义的消息域的KEY都有唯一的单字节编码,如:
而消息域的Value部分,如果只有几个固定的可选值,这几个值也用单子节的编码,由于这些值只出现在特定的上下文中,所以无需要全局唯一。