Chinaunix首页 | 论坛 | 博客
  • 博客访问: 537801
  • 博文数量: 120
  • 博客积分: 3030
  • 博客等级: 中校
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-05 01:00
文章存档

2011年(1)

2009年(2)

2008年(32)

2007年(33)

2006年(52)

我的朋友

分类: LINUX

2007-10-30 17:28:33

==== 原创,转载请注明转自 BoyTNT@x2blog ====

    今天开始要分析msn的数据包了,为了少走弯路,还是先去找一找相关资料,然后再比对自己抓到的数据包进行分析。

    在网上讲msn协议的文章比较少,有一个网站不错,,讲得很多也很细,可惜是英文的,看得好费劲,对照着自己抓的包把内容看了一遍,现在根据自己的理解把内容整理一下,当然,只是整理与即时消息有关的部分,有时间的话单独整理完整版吧。

    [概要介绍 Overview]
    MSN Messenger Service Protocol是微软提出的通讯服务协议,1999年微软向IETF提交1.0版草案,此后再没有公开过后续版本的细节。目前各类文章都是基于大家自己做协议分析得来的,针对MSNP8、MSNP9、MSNP10比较多。

    [连接 Connections]
    协议建立在TCP/IP上,除了文件传输与语音聊天是p2p外,其它全都通过服务器进行。
    服务器主要有3种:
    1、Dispatch Server,派遣服务器,简称DS,客户端最初连接的服务器,负责给客户端分配合适的通知服务器。有固定的域名与端口。完成派遣任务后切断TCP连接。(似乎现在已经没有DS了)
    2、Notification Server,通知服务器,简称NS,客户端需要一直保持连接的服务器,很多任务都在这个会话内完成,但其不负责传输与消息实体相关的数据。
    3、Switchboard Server,接线服务器,简称SB,客户端之间聊天使用的中转服务器,每开一个聊天窗口,客户端和服务器就建立一个TCP会话。开始聊天前,发起方必须先申请并连接这个服务器。

    [命令 Commands]
    MSN的命令使用ASCII码,遇到非ASCII码字符就使用URL编码。格式基本是这样的:

    XXX TrID Param1 Param2 ... \r\n

    命令以三个字符的命令标识符开头,比如CAL、USR。对TrID要特别说明一下,全称Transaction ID,用于匹配客户端的命令与服务端的响应。这是一个介于0到4294967295之间的整数,跟在每个命令与消息后面,服务端收到并做出处理后,要回复客户%

阅读(1668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~