MMS是怎样炼成的(二)封装

 
一、           MMS的封装(Encapsulation)——MIME
对于使用 SMIL语言描述的 MMS,在通过无线网络发送的时候,我们必须通过某种方式把 SMIL和附属的内容包装在一起,一边能够以一个 unit(整体)的形式发送出去,以便 SMIL文件各个部分内容的 reference变得有效。
这个解决的办法就是 MIMEMultipart Internet Mail Extensions)规范,这个规范的最初作用是在 emailplain 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:[email protected]"> ... ...
 
 
--boundary-example
 
 
Content-Type: image/gif
Content-ID: <[email protected]>
Content-Location: fiction1/fiction2
--boundary-example
Content-Type: image/gif
Content-ID: <[email protected]>
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文档( RFC2387RFC2357)。
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 2001 15:13:21 -0500 (EST)
X-Mms-Expiry: Thu, 20 Dec 2001 21:52:25 -0500 (EST)
X-Mms-Delivery-Time: Wed, 19 Dec 2001 21: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
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
 
 
 
 
二、           MMSMIME结构
综述来说,每个 MMS信息按照 MIME规范的基本结构如下图所示:
 
从图示看出,每个 MMS都是由 MMS HeaderMMS 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/gifimage/jpeg。  

你可能感兴趣的:(html,.net,网络协议,WAP)