MSNP10协议分析 00.基本 [by progsoft]

1999年,Microsoft向IETF提交了一份"MSN Messenger Service 1.0 Protocol"草案,这是最初版本的MSN Messenger协议。
    现在MSN版本为6.2,协议版本为MSNP10,本文着重介绍MSNP10的基本情况。
    文章以作者分析研究体会为主,同时参考他人资料完成。
    MSN的协议都是基于TCP,除P2P的文件传输和语音对话等,所有连接都是面向服务器的1863端口。

    MSN的登陆,你需要于3种服务器打交道:
1. Dispatch Server:分配服务器,简称DS
    作用:指导用户转向合适的NS,均衡服务器负荷

2. Notification Server:通知服务器,简称NS
    作用:维系整个会话的服务器,包括用户列表,分组信息,自己和好友状态改变,请求对话和发送文件,与Hotmail的E-mail等

3. Switchboard Server: 接线服务器,简称SS
    作用:用户之间聊天对话的网关,每个对话的请求开始,和文件传输的请求等等,都要先和SB通话。


    绝大部分MSN命令都是纯文本架构的格式(文件传送,用户头像部分ASC),所以我们分析起来就比较方便。并且这些命令都是存贮在数据报中被传递到服务器或者客户端的。这些传递的数据流中,可以分为三种数据:命令,信息和错误。

Commands 命令
    与Dos命令类似,MSN的命令通常是3个字母,后面跟参数,参数间空格以分割,最后以/r/n结束。
    语法结构:
    XXX[<SP>TrID<SP>PARAM1<SP>PARAM2…]<CRLF>

Messages 信息
    所有信息都是以MSG开头的,可以看作一种特殊的命令。
消息的特殊在于,分割符号包括了空格和NewLine(/r/n),所以消息第一行最后一个参数的数字表示,该消息的长度(从第二行开始)。
    语法结构:
    MSG[<SP>PARAM1<SP>PARAM2…]<SP>LEN<CRLF>
    LINE1<CRLF>
    LINE2<CRLF>
    ...

Errors 错误
    错误是一种特殊的命令,以三位十进制数字符号开始,后面跟一ID,标明错误产生的命令序号。
    语法结构:
    XXX[<SP>TrID]<CRLF>

TrID 事务ID
    从客户端送到服务器的命令中,都应包含有一个事务ID。服务器响应的应答命令,也要包含同样的事务ID。
    事务ID的范围是0--4294967295。理论上从0开始,然后每次+1。实际上只要可以区分不同命令就可。

注:<SP>=/x20 <CRLF>=/r/n 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值