MMS协议解析2(zz)

来源:互联网 发布:现流行的8位单片机 编辑:程序博客网 时间:2024/04/30 10:08

转自

http://publishblog.blogchina.com/blog/tb.b?diaryID=5401347 

01 Server

Prefix 1 f0 f0 f0 f0 - 标志 (见标志段)

Prefix 2 0b 00 04 00

Then 1c 00 03 00

结构题定义如下。

功能:发送初始链接信息,包含播放器的版本号、客户端GUID(随机产生)和要连接的服务器地址。这个命令是在协议初始化之初发送的。它发送本地信息给服务器。Unicode数据字符串由以下信息组成:

NSPlayer/7.0.0.1956; {128比特16进制文本客户端GUID }; Host: The.Host.Net” + 0x00 + 全零隐藏数据域 (可选项)

注意:

客户端GUID是随机生成的,具体内容见'locally generated GUIDs'.

'Host' 域为可选字段。只在Media Player 7.0及后续版本中使用。播放器名称必须以 “NSPlayer”开始,如果服务器收到其他名称,将会自动发送名为'Upgrade Your Player'缺省的电影。这是一个15秒的教你如何升级的电影。在NSPlayer之后可以接任意的东西。例如像

/7.0.0.1956的版本号。MediaPlayer7.0及后续版本才支持'MMS Proxy Server'选项。'Host'域指明实际流媒体服务器的域名或者IP地址,这同是否使用代理并不相关。代理服务器使用这个主机地址连接到流媒体服务器。这就是在7.0以前版本里面没有'host'域的原因。



01 Client

Prefix 1 00 00 00 00 - 错误码

Prefix 2 f0 f0 f0 f0 - 标志 (详见标志段)

结构体定义如下:

服务器返回诸如服务器软件版本等信息。

0b 00 04 00 ??

1c 00 03 00 ??

00 00 00 00 00 00 f0 3f 双精值为1内容不详

01 00 00 00 ??

01 00 00 00 ??

00 80 00 00 ??

00 00 a0 00 ?? 时有为 80 96 98 00 = 10000000

Ww ww ww ww 服务器版本字符串长度

Xx xx xx xx 工具版本字符串长度

Yy yy yy yy 播放器下载链接长度

Zz zz zz zz 加密方式字符串长度

Unicode字符串长度在结构体中给出。当域不需要时length=0。长度的统计是以两个byte为单位。有趣的是服务器版本低于3.0时,不接受0x32命令。媒体播放器也不会发送这个命令给服务器。准确的说,这个特征在那个版本里还没有实现。



02 Server

Prefix 1 f1 f0 f0 f0 - 标志 (见标志段)

Prefix 2 ff ff ff ff

Then 00 00 00 00

Then 00 00 a0 00 - 未知

Then 02 00 00 00 – 映射包头ID类型(Header PacketIDType

发送传输协议、客户端地址和客户端套接字端口号到服务器。Unicode字符串格式如下:

//123.456.789.012/TCP/1234” + null + 可选Unicode数据,如“0”

可选数据:当传输协议使用UDP时可以显示10Bytes的未知数据。

Where: 123.456.789.012 是客户端IP地址,

TCP (UDP)标志欲是用的传输协议。

1234 是客户端TCPUDP套接口端口号。

02 Client

Prefix 1 00 00 00 00 - 错误码

Prefix 2 f1 f0 f0 f0 - 标志

Then nn nn nn nn - 4 bytes 数据长度

长度计数单位是4字节,也包括了Length域,所以4Bytes就是1

Then Unicode字符串数据

这是协议选择命令0x02的响应数据。文本“Funnel Of The”'Funnel of the gods'是常见的数据。这说明协议的选择已经生效。

03 Client

Prefix 1 00 00 00 00 - 错误码

Prefix 2 00 00 00 00

由服务器返回,指明协议选择的错误。同时也表示从服务器发向客户端的关闭套接字连接的请求。在这个命令之后连接中断。

05 Server

Prefix 1 01 00 00 00 -命令级别

Prefix 2 ff ff ff ff

Then 8 zeros (未知)或许是双精值

Then Unicode数据,下文解析。

这条命令请求位于服务器上的文件路径和文件名。这不包含IPDNS信息,只有媒体的路径和文件名。Unicode数据字符串格式如下:

this/is/the/file/path/on/server/with/filename.ext” + null + 未知可选数据如“2C3”

注意: 文件名后,例如 …/filename.asf 可以跟随数字签名管理数据。传到服务器的字符串形如:…/filename.asf?parameter1, parameter2

就像其他人和.ASP.JSP Active输入的字符串参数一样,parameter1可以为0parameter2可以是32bytes16进制字符串数据。如果媒体文件需要DRM数据,而你并未提供有效的授权字符串,那么访问将被拒绝。在这种情况下,服务器会向客户端发送命令03报告断开连接。并附带 'licence required'错误码.

05 Client

Prefix 1 00 00 00 00 - 错误码

Prefix 2 04 00 00 00 - 响应Media PacketIDType

Then 下述结构体

现在发送媒体数据,包括媒体的播放时间。

01 00 00 00

未知 但是可以改为01

00 00 00 00

可能是偏移时间,例如00 00 00 40 2

00 00 00 00

??

00 00 00 00

??

00 00 00 00

??

Xx xx xx xx

单精浮点值,显示文件时间减去缓冲区时间,仅在seek模式有效,其他情况下总为1

06 Client

Prefix 1 00 00 00 00 - 错误码

Prefix 2 01 00 00 00

Then 结构体如下

功能:答复文件名和路径请求。包括文件数据的包数,包长度和文件播放时间。06命令的数据类似于ASF文件的头信息。一旦媒体在服务器上定位,媒体流的细节和包便被返回。下面是prefix后的结构体信息:

01 00 00 00 结果标志

00 00 00 00

00 00 00 00

00 00 xx yy 广播标志

Tt tt tt tt tt tt tt tt 双精度文件时间点

Ll ll ll ll 回放文件的长度(秒为单位),实时则为0

00 00 00 00

00 00 00 00

00 00 00 00

00 00 00 00

Pp pp pp pp 媒体包长度,单位byte

Nn nn nn nn 媒体总包数,实时为0x000xffffffff

00 00 00 00

Ss ss ss ss 最高流比率值

Hh hh hh hh 头大小,单位bytes

Zeros 数据结构末尾的40bytes零数据



07 Server

Prefix 1 01 00 00 00 - 命令级别

Prefix 2 ff ff 01 00 - 76 04 00 00 #

Then 结构题描述如下

功能:从包xx 开始文件播放。这条命令也用以恢复下载或请求丢包。在Seek模式下用来发送播放点。

8 bytes 双精格式,Seek秒数。

4 bytes FF

4 bytes 包序列号

ff ff ff ff 从开始播放

注意:v9版本中不可用,任何值都是从头开始播放

3 bytes 最大的流时间限制

1 byte 允许流限制标志

4 bytes Media PacketIDtype

4 bytes 可选数据# ff ff ff 7f

4 bytes 可选数据# 00 00 00 00

4 bytes 可选数据# ff ff ff 7f

4 bytes 可选数据# 00 00 00 00



09 Server

Prefix 1 01 00 00 00 - 命令级别

Prefix 2 ff ff 01 00

停止播放,媒体播放器发送这条命令,流停止,保持套接字连接。

0A Client

Prefix 1 00 00 00 00 - 错误码

Prefix 2 04 00 00 00 - 响应PacketIDType

Data 00 00 00 00 00 00 00 00 - 双精值

此命令在快进/后退中使用。

0D Server

Prefix 1 01 00 00 00 - 命令级别

Prefix 2 01 00 00 00

协议中止。常用在关闭套接字连接时。

11 Client

Prefix 1 00 00 00 00 - 错误码

Prefix 2 02 00 00 00 - 显示头的PacketIDType

Then 00 00 00 00 - ??

Then 00 00 00 00 1c 00 03 00 用法未知。

在播放器请求时发送头或UDP包。  

原创粉丝点击