现在的位置: 首页 > 综合 > 正文

MSN Media协议分析

2012年08月27日 ⁄ 综合 ⁄ 共 2677字 ⁄ 字号 评论关闭

整理记录

版本

时间

内容

整理人

V1.0

2008-04-09

MSN Media协议分析初稿

彭令鹏

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MSN Media协议分析

第1章.     文档说明

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

第2章.     通信过程

2.1.  概述

MSN Media的通信过程将分音频通信过程和视频通信过程两部分来讲解。音频和视频的通信过程同即时消息的通信过程(《MSNP15MSN8.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命令,参数为sbNS服务器收到请求后,同样以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 TypeSequence NumberTime Stamp

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

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

第4章.     实现方案

ID

Protocol

Captured contents

Local account

Opponents account

Audio/video

39

msn media 8.1

抱歉!评论已关闭.