MMS封装详解

【MMS是怎样炼成的2——封装】- -

                                      

 

一、           MMS的封装(Encapsulation)——MIME
对于使用SMIL语言描述的MMS,在通过无线网络发送的时候,我们必须通过某种方式把SMIL和附属的内容包装在一起,一边能够以一个unit(整体)的形式发送出去,以便SMIL文件各个部分内容的reference变得有效。

这个解决的办法就是MIME(Multipart Internet Mail Extensions)规范,这个规范的最初作用是在email的plain text的主体中加入不同的内容。比如说,发送带有附件的email,这个时候你就使用了MIME的规范。MIME负责把所有的独立的文本、图像、声音、视频内容以及SMIL文件本身捆绑在一起,这个规范称为MIME Encapsulation Aggregate Documents,用于告诉接受的终端这个MMS的内容是相互相关(related to one another)并且相互参考的(referenced to one another)。

1.        MIME封装示例
下面是根据RFC文档给出的MIME的封装示例:

Content-Type: multipart/related; boundary="boundary-example";

       type="text/html"

 

--boundary-example

 

Content-Type: text/html; charset="US-ASCII"

 

... ... <IMG SRC="fiction1/fiction2"> ... ...

... ... <IMG SRC="cid:97116092811xyz@foo.bar.net"> ... ...

 

--boundary-example

 

Content-Type: image/gif

Content-ID: <97116092511xyz@foo.bar.net>

Content-Location: fiction1/fiction2

--boundary-example

Content-Type: image/gif

Content-ID: <97116092811xyz@foo.bar.net>

Content-Location: fiction1/fiction3

 

--boundary-example--

 

 

 

 

 

 

 

 

 

 

 

 

§           Content-type

位于信息头部的content-type用于通知接收的终端消息的各个不同部分的内容是相互关联的、并且可能是相互索引的(refer to one another)。

§           Boundary

Boundary用于分割各个不同的消息part。第一个部分是一个html类型的消息,这里只是取得了相关的部分。第二和第三部分省略了实际的images图像的实体。

§           Location and ID

HTML文本部分我们可以看到,我们可以利用两种方式来索引消息内容的不同部分。这两种不同的方式是 content-ID content – Location

如果一部分的消息体想通过content-ID指向(refer to)另外一部分的消息体,可以使用“CID”.

关于MIME的部分的信息可以参考附录中列出的RFC文档(RFC2387和RFC2357)。
2.        利用MIME封装MMS的示例
下面给出一个利用MIME封装MMS的示例:

Content-Type: multipart/related;

Type="application/smil"; Start="<AAAA>";boundary="----=_Part_24362_271418.1110357304160"

 

------=_Part_24362_271418.1110357304160

content-type: text/x-vCalendar;Charset=UTF-8;Name="slide1.vcs"

content-id: <slide1.vcs>

content-location: slide1.vcs

Content-Transfer-Encoding: base64

 

QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjEuMA0KQkVHSU46VkVWRU5UDQpEVFNUQVJUOjIwMDUw

MzA4VDA5MDAwMFoNCkRURU5EOjIwMDUwMzA4VDEwMDAwMFoNClNVTU1BUlk7Q0hBUlNFVD1VVEYt

ODtFTkNPRElORz1RVU9URUQtUFJJTlRBQkxFOuaYr+WQpg0KQ0FURUdPUklFUztDSEFSU0VUPVVU

Ri04O0VOQ09ESU5HPVFVT1RFRC1QUklOVEFCTEU6QVBQT0lOVE1FTlRTDQpFTkQ6VkVWRU5UDQpF

TkQ6VkNBTEVOREFSDQo=

 

 

------=_Part_24362_271418.1110357304160

content-type: application/smil;Charset=UTF-8;Name="20050309163706.smil"

content-id: <AAAA>

Content-Transfer-Encoding: base64

 

PHNtaWw+PGhlYWQ+PGxheW91dD48cm9vdC1sYXlvdXQgd2lkdGg9IjE3NiIgaGVpZ2h0PSIxNzQi

Lz48cmVnaW9uIGlkPSJmdWxsIiB3aWR0aD0iMTc2IiBoZWlnaHQ9IjE3NCIgbGVmdD0iMCIgdG9w

PSIwIiAvPjwvbGF5b3V0PjwvaGVhZD48Ym9keT48cGFyIGR1cj0iNXMiPjx0ZXh0IHNyYz0ic2xp

ZGUxLnZjcyIgcmVnaW9uPSJmdWxsIiAvPjwvcGFyPjwvYm9keT48L3NtaWw+

 

------=_Part_24362_271418.1110357304160--

 

 

 

 

 

 

 

 

 

 

 

 

下图给出的图示说明各个部分之间的关系:

 

3.        一个完整的MIME封装MMS示例
下表给出了一个完整的MIME封装MMS的示例:

MIME Object

Date: Fri, 14 Dec 200115:13:21 -0500 (EST)

X-Mms-Expiry: Thu, 20 Dec 200121:52:25 -0500 (EST)

X-Mms-Delivery-Time: Wed, 19 Dec 200121:52:25 -0800 (PST)

X-Mms-Priority: Normal

X-Mms-Sender-visibility: Show

X-Mms-Message-Class: Personal

X-Mms-Delivery-report: yes

X-Mms-3GPP-MM3-Version: 4.3.0

From: mms-email-sample@sample-email.ericsson.com

To: +12345@mmc.sample-mms.ericsson.com

Subject: Sample SMIL

Mime-Version: 1.0

Content-Type: multipart/related; boundary="----

=_MIME_Boundary_MMS_Reference_Sample_001"

MIME Headers
"----=_MIME_Boundary_MMS_Reference_Sample_001"

MIME Start boundary

Content-ID: <index.smil>

Content-Type: application/smil; charset="US-ASCII"; name=index.smil

<smil>

<head>

<layout><root-layout/>

<region id="region1_2" top="0" left="0" height="100%" width="100%"/>

<region id="region1_1" top="0" left="0" height="100%" width="100%"/>

</layout>

</head>

<body>

<par dur="2000ms">

<text src="Cid:image" region="region1_2"/>

</par>

<par dur="2000ms">

<img src="Cid:txt" region="region1_1" fit="fill"/>

</par>

</body>

</smil>
SMIL document
"----=_MIME_Boundary_MMS_Reference_Sample_001"

MIME boundary

Content-Type: text/plain; name=mms.txt

Content-Transfer-Encoding: 7bit

Content-ID: <txt>

Content-Disposition: attachment; filename=mms.txt

This is a sample MMS message, for use as a reference.

Text Document

"----=_MIME_Boundary_MMS_Reference_Sample_001"

MIME boundary

Content-Type: image/gif; name=sample.gif

Content-Transfer-Encoding: base64

Content-ID: <image>

Content-Disposition: attachment; filename=sample.gif

 

R0lGODlhZQBQAPcAAOYeAClUpyAtb/XNjlo8RqoUFHSa2ZCKjHiCWrzf/2iQ1J

m66Yeq4cXm/6ys

 

<entire encoded image not shown for the sake of brevity>

kBiJkjiJlFiJlniJmJiJmriJnNiJnviJoBiKogh5AQEAOw==

 

 

 

 
Image
"----=_MIME_Boundary_MMS_Reference_Sample_001"

MIME boundary

 

 

二、           MMS的MIME结构
综述来说,每个MMS信息按照MIME规范的基本结构如下图所示:
从图示看出,每个MMS都是由MMS Header和MMS Body组成,MMS Header根据WAP-209协议和RFC2387的规定,由一系列的域组成,下表列出了部分的域(给出的示范的内容表示),其中有些是强制必须实现的(用黑体表示)。

X-Mms-Message-Type

m-send-req

X-Mms-Transaction-ID

1234

X-Mms-MMS-Version

1.0

Date

星期五, 18 三月 2005 06:43:40 GMT

From

mms-editor@toolkit

To

33333333333333

Cc

33333333333333

Bcc

 

 

Subject

test

X-Mms-Message-Class

Personal

X-Mms-Expiry

星期六, 19 三月 2005 06:43:40 GMT

X-Mms-Delivery-Time

星期五, 18 三月 2005 06:43:40 GMT

X-Mms-Priority

low

X-Mms-Sender-Visibility

Show

X-Mms-Delivery-Report

No

X-Mms-Read-Reply

No

Content-Type

application/vnd.wap.multipart.related; start="<presentation-part>" type="application/smil"

1.        MMS承载的内容elements
MMS只是用于发送消息的载体,根据规范,我们可以发送各种不同类型的内容元素。这些内容元素组成MMS中各个不同的部分。根据元素类型的不容,每个part Header部分的content-type也不尽相同。下面给以示例:
§           文本:
文本包含很多类型,普通文本的类型可以表示为——text/plain,而vcard类型的文本表示为text/x-vCard。
§           静态图像
静态图像存在各种不同的类型,根据不同的编码方式由不同的后缀名表示。如
image/gif 和image/jpeg。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值