54SA.COM|专注于系统运维管理,为中国SA提供动力!
当前位置: 主页 > Windows > 网络技巧 >

常用IM典型登录方式及原理分析

时间:2010-10-03 23:35来源:未知 编辑:tony
1、典型剖析:MSN登录实例

  一般来说,用户微机上的程序统称为MSN Messenger“客户端”,它通过Internet连接到一个MSN Messenger“服务器”。也就是说,客户端通过服务器与其他客户端交互信息。在大多数时间里,用户的客户端与服务器会话,然后由服务器来处理这些会话信息并通知其他人。了解之前,我们使用Sniffer NT来截获登录时的数据。如图1所示。


图1

  从截获的登录数据中,我们可以看到,在“数据”一栏中,有很多类似CVR、VER、USR等开头的数据,登录连接时还用到了TCP/1863和TCP/443这两个端口,它们记录了MSN Messenger登录的整个过程。在图中,我们看到了这样一条记录:“VER 145 MSNP11 MSNP10 CVR0”。

  要回答这个问题,我们首先就要谈到MSN Messenger协议了。1999年,Microsoft向IETF(Internet Engineering Steering Group,国际互联网工程任务组,是世界上做互联网方面技术标准的组织)提交了一份“MSN Messenger Service 1.0 Protocol”草案,这是最初版本的MSN Messenger协议,不同的协议经常被写为“MSNP9”、“MSNP10”、“MSNP11”等。近几年中,MSN已经历经数次修订,目前MSN Messenger的协议已经到了第12版,简称MSNP12。现在,我们使用比较广泛的MSN7.0支持的协议是MSNP10和MSNP11,出于规范的需要,MSN Messenger用户必须升级到较高的版本,因为服务器对MSNP8以下的版本已经不再支持。这就是我们在刚才截获的数据中,为什么可以看到“MSNP11 MSNP10”的缘故了。

  那么,CVR、VER、USR这些数据是什么意思呢?客户端与服务器间信息都是以命令格式传递的。命令被描述为三个字符、所有字母大写的命令代号。所有一般命令都有一个事务ID并且以新行结束。客户端发送的命令一般会使服务器响应一个及以上的命令。这些数据是MSN Messenger命令,它们使用了纯ASCII码,同时对非ASCII码字符使用URL编码。命令的语法如下:

XXX [ TrID PARAM1 PARAM2…]

  其中,是空白字符,是回车换行,XXX是一个3字符的命令串,TrID是一个流水号,PARAMx是参数,[ ]内是可选项。关于这些命令的含义,可以参考下表(列举部分):

[责任编辑:admin]

命令 来源 去向 说明
CHG Client NS 发出改变状态的请求。
------分隔线----------------------------