一、
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";<br /> type="text/html"<br />--boundary-example<br />Content-Type: text/html; charset="US-ASCII"<br />... ... <IMG SRC="fiction1/fiction2" mce_SRC="fiction1/fiction2"> ... ...<br />... ... <IMG SRC="cid:97116092811xyz@foo.bar.net" mce_SRC="http://mce_host/cid:97116092811xyz@foo.bar.net"> ... ...<br />--boundary-example<br />Content-Type: image/gif<br />Content-ID: <97116092511xyz@foo.bar.net><br />Content-Location: fiction1/fiction2<br />--boundary-example<br />Content-Type: image/gif<br />Content-ID: <97116092811xyz@foo.bar.net><br />Content-Location: fiction1/fiction3<br />--boundary-example--
位於資訊頭部的content-type
用於通知接收的終端訊息的各個不同部分的內容是相互關聯的、並且可能是相互索引的(refer to one another
)。
Boundary
用於分割各個不同的訊息part
。第一個部分是一個html
類型的訊息,這裡只是取得了相關的部分。第二和第三部分省略了實際的images
映像的實體。
在HTML
文本部分我們可以看到,我們可以利用兩種方式來索引訊息內容的不同部分。這兩種不同的方式是 content-ID
和 content – Location
。
如果一部分的訊息體想通過content-ID
指向(refer to
)另外一部分的訊息體,可以使用“CID”.
關於MIME
的部分的資訊可以參考附錄中列出的RFC
文檔(RFC2387
和RFC2357
)。
2.
利用
MIME
封裝
MMS
的樣本
下面給出一個利用MIME
封裝MMS
的樣本:
Content-Type: multipart/related;<br />Type="application/smil"; Start="<AAAA>";boundary="----=_Part_24362_271418.1110357304160"<br />------=_Part_24362_271418.1110357304160<br />content-type: text/x-vCalendar;Charset=UTF-8;Name="slide1.vcs"<br />content-id: <slide1.vcs><br />content-location: slide1.vcs<br />Content-Transfer-Encoding: base64<br />QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjEuMA0KQkVHSU46VkVWRU5UDQpEVFNUQVJUOjIwMDUw<br />MzA4VDA5MDAwMFoNCkRURU5EOjIwMDUwMzA4VDEwMDAwMFoNClNVTU1BUlk7Q0hBUlNFVD1VVEYt<br />ODtFTkNPRElORz1RVU9URUQtUFJJTlRBQkxFOuaYr+WQpg0KQ0FURUdPUklFUztDSEFSU0VUPVVU<br />Ri04O0VOQ09ESU5HPVFVT1RFRC1QUklOVEFCTEU6QVBQT0lOVE1FTlRTDQpFTkQ6VkVWRU5UDQpF<br />TkQ6VkNBTEVOREFSDQo=<br />------=_Part_24362_271418.1110357304160<br />content-type: application/smil;Charset=UTF-8;Name="20050309163706.smil"<br />content-id: <AAAA><br />Content-Transfer-Encoding: base64<br />PHNtaWw+PGhlYWQ+PGxheW91dD48cm9vdC1sYXlvdXQgd2lkdGg9IjE3NiIgaGVpZ2h0PSIxNzQi<br />Lz48cmVnaW9uIGlkPSJmdWxsIiB3aWR0aD0iMTc2IiBoZWlnaHQ9IjE3NCIgbGVmdD0iMCIgdG9w<br />PSIwIiAvPjwvbGF5b3V0PjwvaGVhZD48Ym9keT48cGFyIGR1cj0iNXMiPjx0ZXh0IHNyYz0ic2xp<br />ZGUxLnZjcyIgcmVnaW9uPSJmdWxsIiAvPjwvcGFyPjwvYm9keT48L3NtaWw+<br />------=_Part_24362_271418.1110357304160--
給出的圖示說明各個部分之間的關係:
3.
一個完整的
MIME
封裝
MMS
樣本
下表給出了一個完整的MIME
封裝MMS
的樣本:
MIME Object<br />Date: Fri, 14 Dec 2001 15:13:21 -0500 (EST)<br />X-Mms-Expiry: Thu, 20 Dec 2001 21:52:25 -0500 (EST)<br />X-Mms-Delivery-Time: Wed, 19 Dec 2001 21:52:25 -0800 (PST)<br />X-Mms-Priority: Normal<br />X-Mms-Sender-visibility: Show<br />X-Mms-Message-Class: Personal<br />X-Mms-Delivery-report: yes<br />X-Mms-3GPP-MM3-Version: 4.3.0<br />From: mms-email-sample@sample-email.ericsson.com<br />To: +12345@mmc.sample-mms.ericsson.com<br />Subject: Sample SMIL<br />Mime-Version: 1.0<br />Content-Type: multipart/related; boundary="----<br />=_MIME_Boundary_MMS_Reference_Sample_001"<br /> MIME Headers</p><p>"----=_MIME_Boundary_MMS_Reference_Sample_001"<br /> MIME Start boundary</p><p>Content-ID: <index.smil><br />Content-Type: application/smil; charset="US-ASCII"; name=index.smil<br /><smil><br /><head><br /><layout><root-layout/><br /><region id="region1_2" top="0" left="0" height="100%" width="100%"/><br /><region id="region1_1" top="0" left="0" height="100%" width="100%"/><br /></layout><br /></head><br /><body><br /><par dur="2000ms"><br /><text src="Cid:image" mce_src="Cid:image" region="region1_2"/><br /></par><br /><par dur="2000ms"><br /><img src="Cid:txt" mce_src="Cid:txt" region="region1_1" fit="fill"/><br /></par><br /></body><br /></smil><br /> SMIL document</p><p>"----=_MIME_Boundary_MMS_Reference_Sample_001"<br /> MIME boundary</p><p>Content-Type: text/plain; name=mms.txt<br />Content-Transfer-Encoding: 7bit<br />Content-ID: <txt><br />Content-Disposition: attachment; filename=mms.txt<br />This is a sample MMS message, for use as a reference.<br /> Text Document</p><p>"----=_MIME_Boundary_MMS_Reference_Sample_001"<br /> MIME boundary<br />Content-Type: image/gif; name=sample.gif<br />Content-Transfer-Encoding: base64<br />Content-ID: <image><br />Content-Disposition: attachment; filename=sample.gif<br />R0lGODlhZQBQAPcAAOYeAClUpyAtb/XNjlo8RqoUFHSa2ZCKjHiCWrzf/2iQ1J<br />m66Yeq4cXm/6ys<br /><entire encoded image not shown for the sake of brevity><br />kBiJkjiJlFiJlniJmJiJmriJnNiJnviJoBiKogh5AQEAOw==<br /> Image</p><p>"----=_MIME_Boundary_MMS_Reference_Sample_001"<br /> MIME boundary<br />
二、 MMS
的MIME
結構
綜述來說,每個MMS
資訊按照MIME
規範的基本結構如所示:
從圖示看出,每個MMS
都是由MMS Header
和MMS Body
組成,MMS Header
根據WAP-209
協議和RFC2387
的規定,由一系列的域組成,下表列出了部分的域(給出的示範的內容表示),其中有些是強制必須實現的(
用黑體表示)
。
X-Mms-Message-Type<br /> m-send-req</p><p>X-Mms-Transaction-ID<br /> 1234</p><p>X-Mms-MMS-Version<br /> 1.0<br />Date<br /> 星期五, 18 三月 2005 06:43:40 GMT<br />From<br /> mms-editor@toolkit<br />To<br /> 33333333333333</p><p>Cc<br /> 33333333333333</p><p>Bcc</p><p>Subject<br /> test</p><p>X-Mms-Message-Class<br /> Personal</p><p>X-Mms-Expiry<br /> 星期六, 19 三月 2005 06:43:40 GMT<br />X-Mms-Delivery-Time<br /> 星期五, 18 三月 2005 06:43:40 GMT</p><p>X-Mms-Priority<br /> low</p><p>X-Mms-Sender-Visibility<br /> Show</p><p>X-Mms-Delivery-Report<br /> No</p><p>X-Mms-Read-Reply<br /> No</p><p>Content-Type<br /> application/vnd.wap.multipart.related; start="<presentation-part>" type="application/smil"