你用vb已经有很长时间了,一直疑惑msn是如何工作的。现在你不用再为这个问题苦恼了,这篇文章不仅告诉你msn是如何工作的,甚至还告诉你如何用vb编出你自己的msn即时通讯软件。
我们可以把msn的工作机制分成两个阶段:
认证阶段
认证阶段包括登陆到msn即时通的服务器并且取得好友列表
即时通讯阶段
即时通讯阶段包括发送/接受进入即时通讯阶段的请求和发送/接受消息。
msn即时通讯软件的协议是基于ascii码的协议,用其他话来讲就是所有的命令都必须是英文的!第一个阶段包括连接到msn即时通软件的服务器。在这个阶段我们应该连接到服务器“messenger.hotmail.com”的1863端口(msn即时通讯软件通过1863端口进行工作)。一旦连接上以后,我们就应该开始登陆过程了。此过程的第一步是验证msn的版本。在此步中,客户端(即你的msn软件)列出及向服务器发送它可以支持的版本,然后等待服务器的回应。
ver 0 msnp7 msnp6 msnp5 msnp4 cvro
在msn协议中,伴随着每个命令都有一个“试验id”被发送。此实验id从0开始,并且当每次服务器成功的对客户端的命令做回应时,都会增加。
服务器的回应如下
ver 0 msnp7 msnp6 msnp5 msnp4
现在客户端(msn)和服务器之间确定了它们之间将要进行通讯的版本。
下一步客户端(msn)向服务器发送一个请求,要求服务器提供它所支持的认证时需要的安全包的名字。
inf 1
不像ahoo,rediff和其它的一些即时通讯软件,msn在发送密码时会将密码加密,保证如有人监控你的端口时,密码不会轻易的泄露。
服务器的回应如下
inf 1 md5 (md5在这里是服务器当前支持的安全包的名字)
下一步客户端(msn)将向服务器发送用户id
usr 2 md5 i venky_dude@hotmail.com
然后服务器将检验它是否包含有验证所需的此用户的所有相关信息。如没有的话,服务器将会发送如下回应:
xfr 2 ns 64.4.13.55:1863 0
意思为客户端(msn)应该连接到notification服务器,地址和端口分别为64.4.13.55,1863.
我们关闭当前的连接并且在连接到新的服务器64.4.13.55时重复以下步骤
(客户端)ver 3 msnp7 msnp6 msnp5 msnp4 cvro
(服务器)ver 3 msnp7 msnp6 msnp5 msnp4
(客户端)inf 4
(服务器)inf 4 md5
(客户端)usr 5 md5 i venky_dude@hotmail.com
现在我们连接上的服务器有了此尝试登陆的用户的信息.服务器回应如下:
usr 5 md5 s 989048851.185113730
服务器发送的此字符串是“md5 杂乱信息”.此杂乱信息由服务器创建并且在认证过程中使用.客户端然后向服务器发送使用md5运算法加密后的密码.实际上客户端向服务器发送的是一个独一无二的md5字符串,此字符串等价于此“md5杂乱信息”(即989048851.185113730)+密码.结果如下
3b7926d277068ec49576a0c40598ff21
usr 6 md5 s 3b7926d277068ec49576a0c40598ff21
如果密码正确,服务器将做如下回应:
usr 6 ok venky_dude@hotmail.com venkat
此处“venkat”是用户的呢称。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器