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" mce_SRC="fiction1/fiction2"> ... ... ... ... <IMG SRC="cid:[email protected]" mce_SRC="http://mce_host/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 From: [email protected] To: [email protected] 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" mce_src="Cid:image" region="region1_2"/> </par> <par dur="2000ms"> <img src="Cid:txt" mce_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"

 

你可能感兴趣的:(MMS是怎样炼成的(二)封装)