MSN Media协议分析
版本 |
时间 |
内容 |
整理人 |
V1.0 |
2008-04-09 |
MSN Media协议分析初稿 |
彭令鹏 |
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 a237
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 9fb3 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。
MSN Media协议分析相关推荐
- MSN协议分析以及Java实现MSN登陆
一.MSN协议分析部分 1.1 基本介绍 MSN是微软推出的IM工具,他的通信协议是微软自己提出的MSNP(即MSN Protocol).当前MSN协议最高版本为MSNP18,但可获取的资料很少.这里 ...
- Skype 协议分析(2006版)
Skype 协议分析(2006版) 整理翻译:袁建明 Angel_YY@126.com 概要: Skype是创建Kazaa的组织在2003年开发的一个基于Peer-to-Peer(对等网络)的VoIP ...
- 飞信的协议分析(转)
飞信的协议分析 转自:http://hi.baidu.com/nathan2007/blog/category/%B7%C9%D0%C5%D0%AD%D2%E9%B7%D6%CE%F6 作者:na ...
- RTSP再学习 -- RTSP协议分析(转载)
最近一直在看 RTSP,但是RTSP协议是个啥?还没有搞清楚. 首先流媒体百度百科上有这样一段,从基本的名字上或多或少可以理解一下这些传输协议的区别.这很重要!! 传输协议 1.RSVP:资源预留协议 ...
- NS2相关学习——可靠的MANET应用程序的Gossip协议分析
好久不写,应该努力啦!老师把这篇论文给了我,现在还不知道它在讲什么,来边翻译边学习吧! 文章链接:https://www.researchgate.net/publication/316844643_ ...
- TLS协议分析 (九) 现代加密通信协议设计
六. TLS协议给我们的启发 - 现代加密通信协议设计 在看了这么多的分析和案例之后,我们已经可以归纳出加密通信协议设计的普遍问题,和常见设计决策, 设计决策点: 四类基础算法 加密/MAC/签名/密 ...
- 计算机网络——Wireshark软件使用与协议分析(ARP协议、IP与ICMP分析)
实验4 Wireshark软件使用与协议分析 4.1-----ARP协议分析 一.实验目的 学习 Wireshark 的基本操作,抓取和分析有线局域网的数据包:掌握以太网 MAC帧的基本结构,掌握 ...
- TLS协议分析 与 现代加密通信协议设计
本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛,读者需要对现代密码学有清晰而系统的理解,建议花精力补足 ...
- MSN Messenger协议 原作:bhw98
前 言 MSN Messenger 是Microsoft开发的聊天工具,目前在国内拥有很大的用户群.使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件 ...
最新文章
- error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法
- 022_jdbc-mysql封装JDBCUtil和抽取数据库配置参数文件
- 基于nginx实现反向代理
- 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串...
- 大数据学习笔记30:搭建高可用Hadoop集群
- 有毒!OPPO Reno证件照曝光:“铡刀式”前置摄像头抢眼
- 去除listView和recyclerview滑动到顶部和底部边界的阴影
- php开发Hive Web查询
- java+jquery实现长轮询案例_网页实时聊天之js和jQuery实现ajax长轮询
- Python之面向对象2
- 在sqlyog中创建MySQL触发器简单实例
- CISSP国际注册信息系统安全专家
- 如何导入JDBC驱动
- SWOT分析思维的一些基本思考与见解
- 未来教育python有错吗_未来教育题库错误大列举,建议不要用它的题库复习了
- 科研论文检索方法入门(计算机领域)
- [4G+5G专题-137]: 终端 - 射频前端(滤波器、功率放大器)详解
- ipad端网页屏幕变小了
- 【微软 Azure 认知服务】零基础搭建微软 Azure AI 认知服务实验分享
- 找出数组中其中最大的数及其下标