织梦CMS - 轻松建站从此开始!

罗索

MSN Media协议分析

jackyhwei 发布于 2011-10-11 10:20 点击:次 
本文档建立在另一篇文章——《MSNP15(MSN8.1)协议分析》的基础上。因此MSNP的一些基础知识请参考该文,而本文的重心是进一步分析MSN Media所用的协议。
TAG:

版本

时间

内容

整理人

V1.0

2008-04-09

MSN Media协议分析初稿

彭令鹏

第1章.     文档说明

本文档建立在另一篇文章——《MSNP15(MSN8.1)协议分析》的基础上。因此MSNP的一些基础知识请参考该文,而本文的重心是进一步分析MSN Media所用的协议。

第2章.     通信过程

2.1.  概述

MSN Media的通信过程将分音频通信过程和视频通信过程两部分来讲解。音频和视频的通信过程同即时消息的通信过程(《MSNP15(MSN8.1)协议分析》中已讲述)很类似。只是音频通信和视频通信不经服务器中转,一般是点对点的UDP通信,而且为了保证实时性和服务质量,UDP之上还使用了RTP/RTCP协议(请参看《RTP协议分析》)。

2.2.  音频通信过程

msn单纯语音聊天时,建立连接用的是STUN协议,数据传输使用RTP协议。示意性的过程如下。

1)        本机客户端向NS服务器(Notification Server,假设其IP:端口为64.4.13.195:1863)请求两个新SB 服务器地址(Switchboard Server),其中一个用于发送请求,另一个用于接受回复。如下面表格所示:

secondary connection port range protocol type direction info

6891-6900 tcp inbound sending

6891-6900 tcp outbound receiving

客户端通过tcp向服务器发送xfr命令,参数为sb。NS服务器收到请求后,同样以xfr命令返回,参数中包含SB服务器的ip地址和端口号,以及SB服务器的cki安全序号。如下例所示:

>>> xfr 10 sb

<<< xfr 10 sb 64.4.12.193:1863 cki 16925950.1016955577.17693

2)        客户端根据返回的ip地址和端口好,通过tcp协议连接两SB服务器。

3)        连接成功后,客户端分别向两SB服务器发送usr命令,第一个参数为实际连接的电子邮件地址,第二个参数为第二步骤返回SB服务器cki安全序号。如果发送成功,SB服务器返回usr命令,第一个参数为ok。如下例所示:

>>> usr 1 example@passport.com 16925950.1016955577.17693

<<< usr 1 ok example@passport.com mike

4)        当邀请对方对话时,把对方的注册的电子邮件地址作为参数传递到cal命令中,然后发送SB服务器,收到该请求后,服务器返回一个id号。同时服务器又向客户端发送joi命令,把被请求方的电子邮件地址作为第一个参数。如下例所示:

>>> cal 2 name_123@hotmail.com

<<< cal 2 ringing 11752099

<<< joi name_123@hotmail.com name_123

以上步骤都是本机客户端与两SB服务器之间同时进行,都执行了以上所有的步骤。

5)        当客户要进行语音对话时,本机客户端向发送请求SB服务器发送一个请求(假设SB服务器的ip地址:64.4.12.192,端口:1863)。该请求的格式如下例所示:

msg 4 n 277

mime-version: 1.0

content-type: text/x-msmsgsinvite; charset=utf-8

application-name: 请求服务类型

application-guid: {5d3e02ab-6190-11d3-bbbb-00c04f795683}

session-protocol:sm1

context-data:

requested:sip_a; capabilities: sip_a,sip_v

invitation-command: invite

…………

6)        服务器64.4.12.192收到该请求后,回复ack,表示确定已收到该请求。

7)        当被请求方接受你的语音对话邀请后,回复SB服务器(假设为ip地址:64.4.12.159,端口:1863)向本机客户端发送回复,其回复格式如下:

msg name_123@hotmail.com name_123

mime-version: 1.0

content-type: text/x-msmsgsinvite; charset=utf-8

invitation-command: accept

…………

ip-address:返回被请求方的ip地址。

8)        当本机收到该回复后,向服务器64.4.12.159发送一个消息,其格式如下:

msg 4 a 237

mime-version: 1.0

content-type: text/x-msmsgsinvite; charset=utf-8

invitation-command: accept

…………

ip-address:本机的ip地址和端口。

9)        服务器64.4.12.159收到该消息后,返回一个ack命令,表示确认已收到。

10)     然后由被请求方根据本机客户端的ip地址和端口进行udp连接,进行数据传递。

2.3.  视频通信过程

视频通信过程与语音通信相同,同样申请两个SB服务器,最后通过udp进行连接,进行数据传送。当然视频通信也可以使用TCP通信,这种情况下MSN视频聊天时,先用TCP建立连接,然后用HTTP传输数据。

第3章.     RTP封装

关于RTP的详细介绍,请参考《RTP协议分析》。在这里我们主要关注RTP头部的3个字段:Payload Type、Sequence Number和Time Stamp。

Payload Type:长度为7比特,该区域的数值标识了载荷所承载的内容的数据类型。如果此RTP流是用来传输语音或者视频数据的,此区域的数值是具体的载荷数据的编码类型。这些具体的数值所对应的编码由IETF的其他RFC规定,但是现存的大量的应用程序使用的是自己定义的标识符,MSN同样是这样的。例如对于音频通信,MSN的音频通信一般使用自定义类型114(对应的十六进制为0x72)。

Sequence Number和Time Stamp则用来实现RTP信息的排序和同步。

第4章.     实现方案

ID

Protocol

Captured contents

Local account

Opponents account

Audio/video

39

msn media 8.1

1协议分析要求

表 1给出了协议分析要求。音视频连接开始建立时,客户端和服务器的交互信息中有双方的信息(账号、IP地址和端口等),我们提取这些信息就能获得Local account和Opponents account。

至于Audio和Video信息的还原可这样来做。

1)        首先客户端会向服务器发送一个操作请求数据包,包中存在一项数据指明了请求的操作类型,其关键字以application-name开头,随后为相关数据以ascii 码表示。语音对话和视频对话ascii 码相同,都为3a 20 e8 af ad e9 9f b3 e5 af b9 e8 af 9d 0d 0a。我们可以提取此关键字段来判断当前是否出现了Audio和Video,当然我们也可以根据客户端与服务器端的交互过程来判断。

2)        然后,我们可以根据RTP包中Payload Type中来判断当前的包是音频包还是数据包,并且得到这个包的相应解码方式。我们可以根据RTP包中的Sequence Number和Time Stamp对RTP包排序和同步,并利用相应的解码方法对其解码,从而还原出音频和视频。解码方法的设计可以在参考现有的解码器的实现。

第5章.     参考资料

[1]      《MSNP15(MSN8.1)协议分析》。

[2]      《RTP协议分析》。

[3]      http://bbs.intercn.net/viewthread.php?tid=34,该文较好地讲述MSN的各中通信过程。

[4]      http://www.cncert.net/tec/ours/2007-7-18/114.html, 该文以实例的形式较好地分析了MSNP15的通信过程。

[5]      bingwen0210/archive/2007/03/30/1546475.aspx,该文较好地讲述了MSNP9/MSNP10。

[6]      http://msnpiki.msnfanatic.com/index.php/MSN_Protocol_Version_15,该英文网站有很多MSNP8-MSNP15的资料。

[7]      http://www.hypothetic.org/docs/msn/index.php,该英文网站算得上MSNP的官方网站了,但是目前提供的资料还只到MSNP10。

(彭令鹏)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201110/15115.html]
本文出处:blog.csdn.net/bripengandre 作者:彭令鹏
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容