您好,欢迎访问三七文档
MMS协议概述MMS是(MultimediaMessagingService)的缩写,中文意为多媒体短信服务,它最大的特色就是支持多媒体功能。多媒体信息使具有功能全面的内容和信息得以传递,这些信息包括图像、音频信息、视频信息、数据以及文本等多媒体信息,可以支持语音、因特网浏览、电子邮件、会议电视等多种高速数据业务,在GPRS网络的支持下,以WAP无线应用协议为载体传送视频片段、图片、声音和文字。多媒体信息业务可实现即时的手机端到端、手机终端到互联网或互联网到手机终端的多媒体信息传送。MMS信息是以标准方式压缩的,因此,接收一方可以确认它不支持的内容格式,并以控制方式进行处置。这也是互联网上解决内容交互问题所用的方法。MMS标准推荐支持的媒体类型有:JPEG、GIF、TEXT、AMR语音和其他一些非主流格式。为了获得更好的交互性,诺基亚和其他一些制造商已共同拟就了“MMS一致性文件”,列出了MMS手机能支持的最小一组内容类型//MMS–PCMMS协议解析1(原创)1.简介可以传输音、视频的通用服务器有两种,都有各自的优缺点。分别是:标准WEB服务器和流媒体服务器。标准WEB服务器使用HTTP协议。流媒体服务器使用两种协议提供媒体服务。这两种协议分别是HTTP1.0或1.1以及MMS(MultiMediaServer)协议。流媒体服务器使用的HTTP协议是经过修改的版本,扩展了语法命令以支持实时传输。这是普通HTTP所不支持的。使用两种协议提供媒体服务和WEB服务器有着显著区别。一个区别是在WEB服务器上使用标准HTTP协议的数据不需要一个特殊的服务器和软件进行浏览甚至下载。另外一个区别是使用MMS(例如MicrosoftWindowsMediaServices)的流媒体服务器通过流形式提供媒体给使用者。流媒体服务器可以处理大量数据。1.MMS是什么MMS是微软的私有流媒体协议。它的最初目的是通过网络传输多媒体广播、视频、音轨、现场直播和一系列的实时或实况材料。使用这个协议的观众可以通过电脑观看电视图像或音轨。微软为有网络连接的家用电脑使用者开发了免费软件。MMS建立在UDP或TCP传输/网络层上,是属于应用层的。使用TCP的MMS上URL是MMS://或者MMST://,如果是UDP的MMS使用MMSU://。在低带宽的情况下推荐使用UDP连接。HTTP带有大量的头信息,UDP一般不能通过防火墙,在有防火墙的情况下使用HTTP。TCP的无差错特性是非常诱人的,它的吞吐量比UDP小,但是在下载MMS的时候TCP是不二的选择。2.哈!看起来开始有趣了!到目前为止还没有关于MMS协议的任何有效的细节。网络搜索和库阅读也是徒劳无功的。微软不打算就MMS的内容发表任何看法。这真是水到山前疑无路,从使用HTTP协议的流媒体服务器上下载流信息已经成为了可能,使用MMS协议的服务器还只能‘在线观看‘,事实上,也只是目前为止!3.让我们从这里开始--包和流MMS协议是以包和数据块的形式从服务器向使用者发送数据到你的计算机上。服务器上的媒体文件是以ASF或WMA形式存在。直播通过流媒体服务器组装成数据包。如果是TV/视频的话,一个包可能会由多个流组成,但是语音广播就只有一个流。可以认为多个流是被混合到了一个实际的包中。包中发送的流取决于媒体类型。下面会涉及到更多关于流的内容。MMS协议包有两种:命令包和数据包。4.首先,让我们来处理命令包MMS协议使用一段命令来完成多种人物,比如:连接到流服务器、请求文件、丢包重传请求及类似事宜。这是应用层协议,在这一层上媒体使用者和服务器进行通讯。这些都要传输到使用者。5.MMS命令包头下面分析MMS包头结构。以下是小端格式。左边=LSB,右边=MSB。0f000000就相当于0f。开始----4bytes=010000[00]从client发出的格式是固定的。[00]域从服务器发出的时候是可以发生变化的。现在不能理解这个比特的含义--总是0,可能是版本号。4bytes=CEFA0BB0命令ID值,或许是版本或者序列号。这总是固定的。如果你按照大端来读就是“BoobFace”.可能是巧合吧。4bytes命令数据包长度,计算到全部数据末尾。单位为比特,从协议类型域之后开始计算。4bytes=4D4D5320协议类型,固定值为MMS空格的ASCII。4bytes直到包尾的长度,8比特为单位。包含自身数据域。例如,8bytes,value=1。4bytes序列号。命令是由客户端发向服务器的,序列号的计数从0开始。命令的响应拥有同样的序列号。也就是说序列号就是ECHO。客户端总是发起命令。8bytes双精度时间戳,用于网络时序。4bytes到包尾的长度,单位为8比特。包括自身。例如,8bytes,value=1。Comm2bytes|Dir2bytes标志命令方向流的值。命令值含义参考MMS命令列表。对于方向域,0x03=向服务器,0x02=向客户端。----长度为40比特的命令头到此为止。命令包长度跟在其后,先是‘prefix1’然后是‘prefix2’,接下来直到命令包结束都是‘commandspecificdata’。命令指定数据可以是字符串文本‘Unicode16bit’,或者是raw8位数据。在prefix数据解说之后可以看到命令特定数据段含义。命令包通常都包括上述内容,最小字节是40。命令包头是作为命令发送的最小包。注意:包长域包括到包末尾所有的padding。01至ServerPrefix1f0f0f0f0-标志(见标志段)Prefix20b000400Then1c000300结构题定义如下。功能:发送初始链接信息,包含播放器的版本号、客户端GUID(随机产生)和要连接的服务器地址。这个命令是在协议初始化之初发送的。它发送本地信息给服务器。Unicode数据字符串由以下信息组成:“NSPlayer/7.0.0.1956;{128比特16进制文本客户端GUID};Host:The.Host.Net”+0x00+全零隐藏数据域(可选项)。注意:客户端GUID是随机生成的,具体内容见'locallygeneratedGUIDs'.'Host'域为可选字段。只在MediaPlayer7.0及后续版本中使用。播放器名称必须以“NSPlayer”开始,如果服务器收到其他名称,将会自动发送名为'UpgradeYourPlayer'缺省的电影。这是一个15秒的教你如何升级的电影。在NSPlayer之后可以接任意的东西。例如像/7.0.0.1956的版本号。MediaPlayer7.0及后续版本才支持'MMSProxyServer'选项。'Host'域指明实际流媒体服务器的域名或者IP地址,这同是否使用代理并不相关。代理服务器使用这个主机地址连接到流媒体服务器。这就是在7.0以前版本里面没有'host'域的原因。01至ClientPrefix100000000-错误码Prefix2f0f0f0f0-标志(详见标志段)结构体定义如下:服务器返回诸如服务器软件版本等信息。0b000400??1c000300??000000000000f03f双精值为1内容不详01000000??01000000??00800000??0000a000??时有为80969800=10000000字符串长度在结构体中给出。当域不需要时length=0。长度的统计是以两个byte为单位。有趣的是服务器版本低于3.0时,不接受0x32命令。媒体播放器也不会发送这个命令给服务器。准确的说,这个特征在那个版本里还没有实现。02至ServerPrefix1f1f0f0f0-标志(见标志段)Prefix2ffffffffThen00000000Then0000a000-未知Then02000000–映射包头ID类型(HeaderPacketIDType)发送传输协议、客户端地址和客户端套接字端口号到服务器。Unicode字符串格式如下:“\\123.456.789.012\TCP\1234”+null+可选Unicode数据,如“0”。可选数据:当传输协议使用UDP时可以显示10Bytes的未知数据。Where:123.456.789.012是客户端IP地址,TCP(或UDP)标志欲是用的传输协议。1234是客户端TCP或UDP套接口端口号。02至ClientPrefix100000000-错误码Prefix2f1f0f0f0-标志Thennnnnnnnn-4bytes数据长度长度计数单位是4字节,也包括了Length域,所以4Bytes就是1。ThenUnicode字符串数据这是协议选择命令0x02的响应数据。文本“FunnelOfThe”或'Funnelofthegods'是常见的数据。这说明协议的选择已经生效。03至ClientPrefix100000000-错误码Prefix200000000由服务器返回,指明协议选择的错误。同时也表示从服务器发向客户端的关闭套接字连接的请求。在这个命令之后连接中断。05至ServerPrefix101000000-命令级别Prefix2ffffffffThen8zeros(未知)或许是双精值ThenUnicode数据,下文解析。这条命令请求位于服务器上的文件路径和文件名。这不包含IP或DNS信息,只有媒体的路径和文件名。Unicode数据字符串格式如下:“this/is/the/file/path/on/server/with/filename.ext”+null+未知可选数据如“2C3”注意:文件名后,例如…/filename.asf可以跟随数字签名管理数据。传到服务器的字符串形如:…/filename.asf?parameter1,parameter2。就像其他人和.ASP或.JSPActive输入的字符串参数一样,parameter1可以为0,parameter2可以是32bytes的16进制字符串数据。如果媒体文件需要DRM数据,而你并未提供有效的授权字符串,那么访问将被拒绝。在这种情况下,服务器会向客户端发送命令03报告断开连接。并附带'licencerequired'错误码.05至ClientPrefix100000000-错误码Prefix204000000-响应MediaPacketIDType值Then下述结构体现在发送媒体数据,包括媒体的播放时间。01000000未知但是可以改为0或100000000可能是偏移时间,例如00000040为2秒00000000??00000000??00000000??Xxxxxxxx单精浮点值,显示文件时间减去缓冲区时间,仅在seek模式有效,其他情况下总为1。06至ClientPrefix100000000-错误码Prefix201000000Then结构体如下功能:答复文件名和路径请求。包括文件数据的包数,包长度和文件播放时间。06命令的数据类似于ASF文件的头信息。一旦媒体在服务器上定位,媒体流的细节和包便被返回。下面是prefix后的结构体信息:01000000结果标志00000000000000000000xxyy广播标志Tttttttttttttttt双精度文件时间点Llllllll回放文件的长度(秒为单位),实时则为000000000000000000000000000000000Pppppppp媒体包长度,单位byteNnnnnnnn媒体总包数,实时为0x00或0xffffffff00000000Ssssssss最高流比率值Hhhhhhhh头大小,单位bytesZeros数据结构末尾的40个bytes零数据07至ServerPrefix101000000-命令级别Prefix2ffff0100-或76040000#Then结构题描述如下功能:从包xx开始文件播放。这条命令也
本文标题:MMS协议概述
链接地址:https://www.777doc.com/doc-2882935 .html