一、 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 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: 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。
分享到:
相关推荐
**MMS消息的封装与实现** MMS,全称Multimedia Messaging Service,即多媒体信息服务,是一种允许用户在移动设备之间发送和接收包含文本、图片、音频、视频等多媒体内容的通信方式。MMS的出现扩展了传统的短信服务...
为了节约无线领域的带宽资源,表中分配数值即为每个域名关键字使用预定义的二进制编码,MMS PDU封装的二进制编码的基本编码机制来源于WAP/WSP,最优化在空中传播的数据量。MMS PDU生成及翻译是MMS客户机程序的重要...
the java mms library implements the multimedia messaging service stack necessary for communicating with an MMSC (via the jWap stack) and implements the client transactions necessary for transmitting ...
**MMS(多媒体消息服务)**是移动通信领域中一种用于发送包含文本、图片、音频、视频等多媒体内容的消息服务。这项技术允许用户通过手机发送和接收丰富的信息,类似于电子邮件,但无需互联网连接,而是利用运营商的...
MMS系统中媒体的封装和集成
开发者需要理解MMS协议规范,以便正确封装和解封装MMS消息。此外,还需要处理网络连接,可能包括GPRS或EDGE等无线数据通信技术。 4. **硬件接口**: 单片机与外部设备,如SIM卡模块、GSM/GPRS模块,需要通过串行...
发送MMS时,MmsService首先创建MMS消息对象,然后通过WAP Push技术将消息封装成二进制数据,通过网络发送。接收方的设备会监听WAP Push服务,接收到MMS通知后,再通过MmsService和Mms类进行解析并存储。 7. **MMS...
IEC61850 MMS 协议解析 IEC61850 MMS 协议是一种用于电力系统自动化领域的通用标准,旨在实现不同制造设备之间的互操作。MMS(Manufacturing Message Specification)是一种制造报文规范,用于在设备或程序之间传送...
2. **编码与打包**:文件经过编码后,会被封装成MMS消息结构,这个结构通常包括消息头和消息体。消息头包含了收件人信息、主题、发送者信息等元数据,而消息体则包含编码后的多媒体数据。 3. **传输**:打包好的MMS...
这种二进制数据表示方法在处理MMS报文时需要特别注意,因为它决定了如何正确解读报文中的数值。 总结来说,MMS协议报文分析涉及对报文结构的详细理解,包括包头的各个字段、序列号、时间戳以及命令和方向信息。在...
在发送MMS时,手机会先将多媒体内容压缩,然后使用WAP协议封装成适于网络传输的数据格式。这个过程中,可能需要通过HTTP或WAP Push协议将消息推送到MMSC。如果接收方的手机不在线,MMS会暂存在MMSC中,直到手机联网...
为了使这些消息能够在不同的网络和终端设备之间进行传输,MMS消息被封装成特定的数据包格式——PDU(Protocol Data Unit)。每个PDU都包含了必要的控制信息和用户数据。 - **PDU结构**:PDU主要由头部(Header)和...
3. **数据流处理**:MMS协议传输的数据通常包含音频和视频流,Python-MMS可能封装了处理这些流的方法,如解码、缓冲、同步等。 4. **错误处理与重试机制**:在网络环境中,连接可能会断开,数据传输可能出现问题。...
2. **MMSToWapTransmitter**:这个组件负责将MMS消息转换成WAP封装格式,以便通过WAP网络传输。它处理编码、解码以及错误恢复等过程。 3. **MMS协议栈**:MMS协议栈定义了MMS消息的结构和交换规则,包括MMS协议的...
开发者通常需要创建UI元素让用户选择和上传媒体文件,然后利用WMA API将这些文件封装成MMS消息并发送出去。 6. **MMSMIDlet.zip的解析**:这个压缩文件的解压和分析可以帮助我们理解实际的MMS发送应用是如何工作的...
MMS(Multimedia Messaging Service,多媒体消息服务)是一种在移动通信网络中用于发送和接收包含文本、图片、音频、视频等多媒体内容的消息服务。MMS协议是基于WAP(无线应用协议)和HTTP(超文本传输协议)的,它...
《MMS_Ethereal软件详解及其安装步骤》 MMS_Ethereal,全称为MMS Ethereal,是一款功能强大的网络分析工具,专为对网络数据包进行捕获和解析而设计。这款软件在电力系统自动化领域,特别是符合IEC61850标准的智能...
根据提供的文档信息,我们可以从中提炼出与MMS相关的知识点,并结合描述中的协议层(WTP、WSP、WDP)进行详细的阐述。 ### MMS分析 #### 1. 多媒体简讯服务(MMS)简介 多媒体简讯服务(Multimedia Messaging ...