欢迎来到天天文库
浏览记录
ID:30780685
大小:1.28 MB
页数:26页
时间:2019-01-03
《mms协议报文实例分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、通amms://220.194.63.17/cebeijing8,我们可以看到交通部门设置在北京西直门上的摄像头的实时录像,从而了解西直门的交通状况。但是,要是想下载这个流媒体到本地的话,我试验了asfr+、ASFRecorder以及StreamBoxver,均无法下载。又找了一个mimms-0.0.9白勺linux版木,也就是以前的mmsclient,将其依赖于Linux的某些函数库换成Windows版本的对应包,编译Z后,可以下载mms://220.194.63.17/cebeijing8的数据,但是用WindowsMediaPlayer9播放的时候,却
2、报告错误“无法播放,因为此文件己损坏”。只有SDP2.0(StreamingDownloadProject)可以正常下载并播放它。为了改造mimms,我分析了SDP和流媒体服务器的来往包,看看我和他的实现到底存在哪些差异。如果你也廿发流媒体下载应用,希望这个分析对你理解''MicrosoftWindowsMediaServices”协议有帮助。对了,编码格式是“LittleEndian”,也就是Of000000的实际值是0x0仁下面是每一个数据包。我们对每一个"包头”和“包体”的每一个字节都做了尽可能详细的分析。第一对包:clienttoserver告知Pl
3、ayer版本号第一回合之第一个包:toserver;Len=104:003001000000cefa0bbO5800X.004000004d4d53200b00000000000000000000500000000000000900000001000300fOfO0060f0fO0b000400lc0003004e005300500000706c0061007900650072002f0037002e00008031002e0030002e003100390035003600…MMS1.a.y.e.r./•7…1・・・0...1.9.5.6.N.S.P009
4、03b()0200000000000000000000000“包头”解释:•“01000000”是客户端向服务器端发包的固定开头。以后你会看到每一个包都是如此幵头的。4字节。•“ccfaObb0”,这也是固定不变的。通常被人称为“BOOBFACE”。他可能是一个版木号或者序列号。以后你会看到客户端和服务器端发出的每一个包都是如此开头的。4字节。•“58000000”,表明在“协议类型(也就是接下来的4d4d5320)”后面的所有数据的长度。4字节。•“4d4d5320”,表明协议类型,就是“MMS〈space>”的ASCII码。4字节。•"Ob000000”
5、,Lengthunt订endofpacketin8byteboundarylengths.Includingowndatafield。4字节。•“00000000”,Sequencenumbero4字节。•"0000000000000000”,8字节。Doubleprecisiontimestamp(seenotes)usedfornetworktiming。•"09000000”,Lengthuntilendofpacketin8byteboundarylengths.Includingowndatafield。4字节。•"01000300",指的是"Co
6、mm2bytes
7、Dir2bytos”。0100是Command数值。0300是Direction数值,这里的0x03指明客户端发往服务器。4字节。在"Comm2bytes
8、Dir2bytes”之后,就是这个包的Body了。“包体”解释:“fOfOfOfO”MMS协议标志I-“Ob000400”不知道。“1c000300”,不知道。“4c00530050006c0061007900650072002f0037002c0031002e0030002e0031003900350036003b002000”,其实就是“NSPlayer/7.1.0.1956;9、ace>”的ASCII码。这是向服务器说明客户端的播放器的版木名。值得注意的是,这个版木名字必须以“NSPlaycr"开头,否则MMS服务器将不管你的请求是什么,强制返冋给客户端一个巧秒的电影文件“UpgradeYourPlayer",用來展示如何升级你的播放器。“NSPlayet”后面跟随的版本号无所谓是什么,比如mimms的是"9.0.0.2800”。•“00000000000000000000”,补零的部分。实际上,上面第一个包体应该是类似于这样的格式:NSPlayer/版本号;〈space〉{128位的客户端GUID};Host:10、ace>服务器的IP地址举一个实际的例子:NSPla
9、ace>”的ASCII码。这是向服务器说明客户端的播放器的版木名。值得注意的是,这个版木名字必须以“NSPlaycr"开头,否则MMS服务器将不管你的请求是什么,强制返冋给客户端一个巧秒的电影文件“UpgradeYourPlayer",用來展示如何升级你的播放器。“NSPlayet”后面跟随的版本号无所谓是什么,比如mimms的是"9.0.0.2800”。•“00000000000000000000”,补零的部分。实际上,上面第一个包体应该是类似于这样的格式:NSPlayer/版本号;〈space〉{128位的客户端GUID};Host:10、ace>服务器的IP地址举一个实际的例子:NSPla
10、ace>服务器的IP地址举一个实际的例子:NSPla
此文档下载收益归作者所有