前 言
MSN Messenger 是Microsoft开发的聊天工具,目前在国内拥有很大的用户群。使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件来查看联系人是否联机等。该软件的最新版本是6.1。
1999年,Microsoft向IETF提交了一份"MSN Messenger Service 1.0 Protocol"草案,这是最初版本的MSN Messenger协议。在以后几年,该公司不再公开有关MSN Messenger协议的升级、修改细节的官方文档。但无论是开发第三方的聊天客户端软件(如Gaim, MyIM等),还是做协议分析,必须对其通信协议有深入了解。正因为如此,有一些民间人士对这些协议开展了研究(见本文的"相关资源"一节)。
当我们还在感叹"这世界,变化快"的时候,MSN Messenger的协议已经到了第10版,简称MSNP10,对应于MSN Messenger 6.1。MSN Messenger 6.0则使用MSNP9。现在Microsoft强迫MSN Messenger用户升级到6.0或6.1版,因为服务器对MSNP8以下的版本不再支持。本文及后续文章所描述的MSN Messenger协议主要针对MSNP9/MSNP10。
1. 连 接
MSN Messenger协议建立在TCP/IP之上。除了文件传输和语音聊天是直接的"点对点"通信之外,其它所有的情形全部通过服务器进行。
在逻辑上,一共有三种类型的服务器,各司其职:
派遣服务器(Dispatch Server, DS) - 客户端最初连接的服务器。负责给客户端分配合适的通知服务器。域名是messenger.hotmail.com,标准服务端口是1863。完成派遣任务后,切断TCP连接。
通知服务器(Notification Server, NS) - 客户端需要一直保持连接的服务器。很多任务要在这个会话内完成,包括登录、改变状态、获取用户列表、修改用户信息、发起聊天、接受呼叫、邮件通知、退出等等。服务端口由派遣服务器指定,通常也是1863。
接线服务器(Switchboard Server, SS) - 客户端之间聊天使用的中转服务器。每开一个聊天窗口,客户端和服务器就建立一个TCP会话。当客户端之间需要进行文件传输或语音聊天时,发送系统消息,建立"点对点"会话通道(可能转为使用UDP)。服务端口通常也是1863。"点对点" 通信使用的端口由客户端自动协商决定,如文件传输通常使用6891端口。
2. 命 令
MSN Messenger命令使用纯ASCII码。对非ASCII码字符使用URL编码。命令的语法是
XXX[<SP>TrID<SP>PARAM1<SP>PARAM2…]<CRLF>
其中,<SP>是空白字符,<CRLF>是回车换行,XXX是一个3字符的命令串,TrID是一个流水号,PARAMx是参数,[ ]内是可选项。最简单的命令没有流水号和参数。为了方便起见,下面讨论时用" "代表<SP>,"\r\n"代表<CRLF>,"\x??"代表一个值为0x??字节。红色表示由客户端发出,蓝色表示由服务器发出。一个MSN Messenger命令的例子如下:
USR 18 TWN I example@hotmail.com\r\n
3. 错 误
无论是由于客户端发出的命令无效,参数无效,还是其他什么原因,服务器可以返回一个错误。格式为
XXX[<SP>TrID]<CRLF>
其中,XXX是一个3位数字的串。如
ADD 21 AL non_existent@passport.com non_existent@passport.com\r\n
205 21\r\n
上例中,non_existent@passport.com是一个不存在的账号。
4. 消 息
MSN Messenger消息符合MIME 1.0标准,由消息头与消息体组成。通常使用UTF-8编码,消息头中也需要URL编码格式,消息体则直接用二进制数据。
一个MSN Messenger消息的例子如下:
MIME-Version: 1.0\r\n
Content-Type: text/plain; charset=UTF-8\r\n
X-MMS-IM-Format: FN=%E5%AE%8B%E4%BD%93; EF=; CO=0; CS=86; PF=0\r\n
\r\n
bhw98\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x81
经简单分析可知,"%E5%AE%8B%E4%BD%93"是"宋体"的UTF-8加URL编码,而"bhw98\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x81"是"bhw98你好!"的UTF-8编码。
〖相关资源〗
URL编码:RFC 1738
UTF-8编码:RFC 2279
MIME 1.0:RFC 2045, RFC 2046, RFC 2047, RFC 2048, RFC 2049
Blobsy开源站点:www.maldivianunderground.net/blobsy/
Mike Mintz等研究MSN的站点:www.hypothetic.org/docs/msn/
MSN Messenger官方网站:messenger.msn.com
科脑工作室(Kernel Studio):www.kernelstudio.com
分享到:
相关推荐
MSN Messenger协议是微软开发的一种即时通讯协议,它用于支持MSN Messenger客户端进行聊天、语音对话、视频会议等实时通信功能。MSNP(MSN Messenger Protocol)是一个不断演进的协议,随着软件版本的更新,协议也在...
MSN协议是微软提供的一种即时通讯协议,用于实现MSN Messenger网络中的即时通讯。MSN Messenger网络是一个大型的即时通讯网络,由微软提供,成立于1999年,用户数众多。基于MSN Messenger网络的程序可以分为两个部分...
MSN 全称 MICROSOFT SERVICE NETWORK 微软网络服务...你通过"MSN Messenger 网络"聊天,用来连接MSN Messenger 网络的最流行的程序是"MSN Messenger",而程序在MSN Messenger 网络中使用的语言则是"MSN Messenger 协议"。
### MSN Messenger协议分析 #### 一、MSN Messenger概述 ##### 1.1 什么是MSN Messenger “MSN Messenger”这一术语由微软公司提出,并涵盖了多种通信解决方案。通过“MSN Messenger网络”可以进行在线聊天,而...
MSN协议是实现MSN Messenger客户端与服务器之间通信的关键。协议定义了客户端如何连接到服务器,如何发送和接收信息,以及如何处理各种事件,如用户状态的变化。MSN Messenger协议包含了MSN Client协议和MSN Server...
MSN Messenger Activity 应用开发 MSN Messenger Activity API 是一种允许开发者构建基于 MSN Messenger 的交互式应用程序的接口。这些应用程序,通常称为活动应用,利用了 MSN Messenger 的通信基础设施,让两个...
MSN协议还支持文件传输功能,允许用户之间传输文件。文件传输是通过客户端和服务器之间的通信来实现的。 7. 群聊 MSN 协议还支持群聊功能,允许多个用户参与群聊。群聊是通过客户端和服务器之间的通信来实现的。 8...
5. **加密与安全**:为了保护用户数据,MSN Messenger可能会使用SSL/TLS协议进行数据传输,源码中可能包含相关的加密算法实现。 6. **文件传输**:即时通讯软件常有文件分享功能,源码会包含文件上传、下载的逻辑。 ...
本文将探讨如何使用Java语言实现MSN Messenger的功能,主要涉及的知识点包括Java编程、即时通讯协议(IM)、JML库以及相关的第三方库。 **JML库介绍** JML(Java Messenger Library)是专为Java开发者设计的一个库...
10. **协议实现**:MSN Messenger使用了专有的协议,开发者需要深入理解这个协议并实现它的Java版本。这可能涉及到解析和构造特定的网络报文。 总结来说,用Java实现MSN Messenger的功能是一项复杂的任务,需要掌握...
【MSN Messenger模仿界面】 在IT领域,特别是软件开发中,模仿流行应用的界面设计是一种常见的学习方式。"MSN Messenger模仿界面"就是一个实例,它提供了一种通过Visual C++(简称VC)来实现类似MSN Messenger登录...
【MSN Messenger模仿界面源代码】是一个编程项目,旨在重现经典的MSN Messenger即时通讯软件的用户界面。这个项目对于学习和理解GUI(图形用户界面)设计、Windows应用程序开发以及.NET框架下的编程技术具有很高的...
1. **协议概述**:MSN协议基于TCP/IP,其主要目的是在互联网上实现用户间的实时通信。这个协议包括了消息交换、状态通知、文件传输等多个子协议。 2. **消息交换**:MSN协议的核心部分是消息传递,它允许用户发送...
在MSN Messenger中,IDL文件用于定义服务端和客户端之间的通信协议。通过IDL,开发者可以定义数据类型、接口、模块和异常,这些定义将被编译成不同平台可以理解的代码,如C++或Java,以便在不同的系统间进行跨平台...
【MSN8.0 Install_Messenger】是针对MSN8.0版本的安装程序,这是一款曾经非常流行的即时通讯软件,由微软公司开发。MSN Messenger,简称为MSN,是2000年代初期全球用户广泛使用的互联网通信工具,允许用户进行文本...
【标题】"MSNMessenger的完整克隆"指的是一个软件项目,它旨在模仿或复制微软的MSN Messenger服务的功能和用户体验。MSN Messenger是微软在互联网早期推出的一款即时通讯软件,允许用户进行文字聊天、语音通话、视频...