您的位置:首页 > 移动开发 > Android开发

MMS消息格式及封装

2013-10-11 10:12 323 查看
转自: http://www.iteye.com/topic/618885 在以上业务模型的介绍中,通讯流程中的主体是用于承载业务数据的PDUs(Protocol Data Units),本节将关注这些数据单元的基本机构、内容组成、封装编码等几个方面。MMS PDU的内容类型(content-type)必须被指定为
application/vnd.-wap.mms-message
,用于被客户端准确识别。

基本结构

MMS PDU由消息头(Header)和消息体(Body)组成。Header具体描述了PDU的特定信息,Body是消息的具体内容(Body体是可选的)。大多数MMS PDU只含有Header域,用于建立和维持通信,Body体只用在M-Send.req
和 M-Retrieve.conf 两个数据包中。下图是MMS PDU基本结构的示意图:



消息头(Header)由一系列的域组成,包括PDU类型,接受方,发送方,发送时间等等。Header域中的项分为可选项和必选项,并且在编码MM头域时,X-Mms-Message-Type,X-Mms-Transaction-ID 和X-Mms-MMS-Version必须位于MM头的最开始,而且要严格按照所列顺序,Content-Type头域必须在MMS头域的最后,其后为消息体,其它域的顺序可以随意安排。

消息体(Body)是多个不同类型的多媒体对象组成的,每个对象占据一个部分——Part(参见RFC2387标准),根据各个部分是否有序,消息的组装方式分为:

.application/vnd.wap.multipart.mixed:所有的消息内容混合在一起,没有时间上的顺序,终端同一时间一次就把所有的消息内容显示出来。
.application/vnd.wap.multipart.related:消息内容的各部分之间有一定的关系,该关系可能是显示时间上的先后,或者显示位置的不同,等等。这使得消息能够像“幻灯片”一样的显示。
消息体的内容组成

 

在application/vnd.wap.multipart.mixed类型的PDU中,仅包含有组成MM的所有多媒体内容,而在application/vnd.wap.multipart.related类型的PDU中还会包括Presentation——即消息内容的显示控制部分,该部分使用SMIL标记语言编写,用来描述MM中各部分的播放次序,显示/播放时间,结束时间以及在屏幕中的显示位置,等控制信息。

通常,Presentation部分是消息体的第一个part,若不是则必须使用start字段指出其所在位置,Presentation部分并不会被显示出来,而仅仅是让终端根据它获取一些控制信息,这些信息决定了其它内容的显示大小、先后顺序、位置等。

 

最后采用MIME标准(Multipurpose Internet Mail Extensions-多用途互联网邮件扩展)将完整的MM(包括:SMIL、文本、图像、声音、视频等各个独立部分)打包封装在一起,并发送。MIME标准定义在RFC2045RFC2046RFC2047RFC2048RFC2049等多个RFC标准之中。

 

MM的二进制编码封装

大多数情况下,MM都基于WAP协议进行传输,它将MMS PDU被封装在WSP/PDU之中 作为WSP的消息体进行传输,并采用WAP/WSP协议作为传输内容的二进制编码(binary encoding)机制,进行消息的封装(Encapsulation)。

在OMA-TS-MMS-ENC-V1_3-20080128-C.pdf文档所在规范中,详细定义了每个PDU所涉及的Header域和值,以及为它们分配的二进制码的一一对应关系。采用此二进制编码规范,节约了无线领域的带宽资源,并最优化其在空中传播的数据量。

具体对应关系请参阅相关文档。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android mms