`
lhx1026
  • 浏览: 306747 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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。

你可以通过这个链接引用该篇文章:http://feelandtech.bokee.com/viewdiary.24493084.html

分享到:
评论

相关推荐

    OMA-TS-MMS-ENC-V1_3-20080128-C.pdf

    为了使这些消息能够在不同的网络和终端设备之间进行传输,MMS消息被封装成特定的数据包格式——PDU(Protocol Data Unit)。每个PDU都包含了必要的控制信息和用户数据。 - **PDU结构**:PDU主要由头部(Header)和...

    MMS.rar_MMS_mms协议文档

    《MMS协议详解——带你深入理解彩信技术》 MMS,全称为Multimedia Messaging Service,中文名为多媒体信息服务,是一种允许用户发送和接收包括文本、图像、音频和视频等多种媒体形式的消息的技术。在移动通信领域,...

    Android Mms专题之:MMS支持.doc

    在Android内部,`com.google.android.mms.*`包下的类专门处理MMS相关操作,它们可以将应用层的数据封装成`Pdu`,或者将`Pdu`解包为媒体文件。`PduBody`是`Pdu`中存储多媒体文件的部分,由`PduPart`对象组成,每个`...

    Android Mms之:深入MMS支持

    `SlideModel`负责管理和布局各个媒体元素,而`SlideshowModel`则负责整体的多媒体管理,如将所有附件转换为Android MMS协议的数据类型——`Pdu`,以及反向从`Pdu`恢复为`SlideshowModel`。 `Pdu`是遵循MMS协议的...

    MTK方案简介——平台软件架构详解

    【MTK方案简介——平台软件架构详解】 MTK(MediaTek)是一家著名的集成电路设计公司,尤其在手机领域有着显著的影响力。自1997年成立以来,联发科已经成为全球第五大集成电路设计公司,同时也是台湾最大的集成电路...

    中国移动mm7api 源代码(中兴)

    《中国移动mm7api源代码(中兴)——深入解析与应用》 中国移动mm7协议,全称为MMS over HTTP (MM7),是基于HTTP协议的一种短消息服务接口,主要用于实现移动终端与服务器之间的多媒体消息传输。这个协议由3GPP(第三...

    mms:用C ++语言编写的媒体服务器

    本文将深入探讨一款使用C++编程语言,并基于Boost库构建的媒体服务器——"mms"。C++作为一种强大且高效的编程语言,因其丰富的库支持和面向对象特性,常被用于开发复杂的系统软件,而Boost库则为C++提供了更多实用...

    MM7接口模拟器.rar

    《MM7接口模拟器——深入理解与应用》 在当今的移动通信领域,MM7接口作为GSM网络中用于多媒体消息服务(MMS)的重要组件,扮演着至关重要的角色。MM7接口允许移动设备和MMS中心(MMSC)之间进行数据交换,包括发送...

    libiec61850.tgz

    《深入理解IEC 61850标准协议栈——基于libiec61850库》 在电力自动化和智能电网领域,IEC 61850标准扮演着至关重要的角色。它定义了一套全面的通信协议,用于实现变电站自动化系统中的设备间互操作性。"libiec...

    vlc 视频播放的基本原理

    Demux模块还需要能够识别出各种不同的封装格式,例如MPEG-1、VCD、MPEG-2、DVD、MPEG-4、H.264、rmvb等。 #### 四、Decode - 解码 解码是将压缩的音视频数据恢复成原始音频或视频帧的关键步骤。VLC支持多种编解码...

    计算机网络应用教学课件计算机网络应用之五.ppt

    《计算机网络应用之五——流媒体技术详解》 计算机网络应用课程涵盖了多种关键技术和应用,其中包括搜索引擎的使用技巧、文件传输共享、FTP服务器配置、电子邮件原理、WWW服务、网页设计基础、WEB服务器配置、...

    PasLibVlc.v1.1.5c.zip

    《PasLibVlc.v1.1.5c.zip——Delphi中的VLC多媒体库》 在编程领域,尤其是在使用Delphi开发应用程序时,经常会遇到处理多媒体文件的需求,比如播放视频或音频。这时,一个强大的多媒体库就显得尤为重要。 PasLibVlc...

    Qt-VLC源代码资源

    Qt-VLC源代码资源是一个集合,主要包含两部分:VLC的Qt接口实现——`vlc-qt-master`,以及VLC媒体播放器的Windows 64位和32位版本——`vlc-3.0.18-win64`和`vlc-3.0.18-win32`。这个资源对于开发者来说非常有价值,...

    sim7000g_spec_20180515.pdf_simcom7000_comfortableb7y_说明文档.zip

    《Sim7000G模块详解——基于20180515规格说明书》 Sim7000G是一款由Simcom公司推出的高性能GSM/GPRS/EGPRS无线通信模块,广泛应用于物联网、M2M(Machine-to-Machine)通信、远程监控等领域。2018年5月15日发布的...

    短信pdu介绍

    PDU模式是处理短信的一种常见方式,特别是在Android系统的MMS应用开发中尤为重要。 PDU全称为Protocol Data Unit,即协议数据单元,它是在网络通信过程中用于封装数据的格式。对于短信来说,PDU包含了完整的短信...

    诺基亚短信API例程

    本文档旨在介绍如何使用无线消息传递API(Wireless Messaging API,简称WMA)和诺基亚短信API(Nokia SMS API)来开发一个简单的聊天应用程序——Chat MIDlet。该示例程序通过这两种API实现短信发送与接收的功能,...

    电信设备-具备短信功能的移动通信终端及其运行方法.zip

    综上所述,《电信设备-具备短信功能的移动通信终端及其运行方法》这一资料深入剖析了移动通信终端的核心功能——短信服务的实现,从硬件设计、软件架构到运行流程,为我们提供了全面的视角来理解和掌握这一关键通信...

    GPRS In Practice : protocol companion

    它通过引入新的节点——SGSN(Serving GPRS Support Node)和GGSN(Gateway GPRS Support Node),以及对现有网络节点进行增强改造,实现了数据业务的快速传输。 #### 二、书籍背景与目的 《GPRS in Practice: A ...

    GOOSE报文 IEC61850

    **GOOSE报文详解——基于IEC61850的电力保护通信** 在现代电力系统中,数据通信网络已经成为电力设备间交换信息的关键部分,其中GOOSE(Generic Object Oriented Substation Event)报文是IEC61850标准下的一个重要...

Global site tag (gtag.js) - Google Analytics