MSNP10协议分析 04.Session [by progsoft]

原创 2004年08月30日 09:20:00

在MSN里发信息(发文件,视频聊天等)都是建立在Session的,所以我们必须建立Session连接,否则我们是不能发送/接收信息的。

我们有两个途径可以创建Session连接:
一、用户主动向另外用户发送Session请求
二、用户接受另外用户发送的Session请求

接下来我分别介绍这两种途径,一、用户主动向另外用户发送Session请求,先我还是给出一个成功的案例

<NS Connect>
>>>  XFR 10 SB/r/n
<<<  XFR 10 SB 207.46.108.53:1863 CKI 17220274.1093571988.7262/r/n
</NS Connect>

<SS Connect 207.46.108.53:1863>
>>>  USR 1 example@hotmail.com 17220274.1093571988.7262/r/n
<<<  USR 1 OK example@hotmail.com usernick/r/n

>>>  CAL 2 user01@hotmail.com/r/n
<<<  CAL 2 RINGING 17220274/r/n
<<<  JOI user01@hotmail.com user01_nickname/r/n

到这里我们可以看到自己(example@hotmail.com)和另外一个用户(user01@hotmail.com)已经成功连接到同一个Session了,离发送消息只有一步了。

下面详细解释一下
第一步是请求Session服务器地址
客户端发送>>>  XFR 10 SB/r/n
语法结构:
XFR<SP>TrID<SP>SB<CRLF>
表示告诉DS服务器,客户端需要建立Session连接,请给连接地址和Session串
服务器回应<<<  XFR 10 SB 207.46.108.53:1863 CKI 17220274.1093571988.7262/r/n
语法结构:
XFR<SP>TrID<SP>SB<SP>IP:PORT<SP>CKI<SP>Session串<CRLF>
表示请求的SS服务器为IP:PORT,连接串为Session串

第二步是连接SS服务器
<SS Connect 207.46.108.53:1863>

第三步是发送连接Session请求
客户端发送>>>  USR 1 example@hotmail.com 17220274.1093571988.7262/r/n
语法结构:
USR<SP>TrID<SP>用户passport<SP>Session串<CRLF>
表示用户(example@hotmail.com)要连接Session,Session串即刚才请求DS服务器给的Session串
服务器回应<<<  USR 1 OK example@hotmail.com usernick/r/n
语法结构:
USR<SP>TrID<SP>OK<SP>用户passport<SP>用户呢称<CRLF>
表示用户(example@hotmail.com)已经连接Session成功

第四步就是邀请聊天用户进入Session
客户端发送>>>  CAL 2 user01@hotmail.com/r/n
语法结构:
CAL<SP>TrID<SP>用户passport<CRLF>
表示邀请用户(user01@hotmail.com)连接Session
服务器回应<<<  CAL 2 RINGING 17220274/r/n
语法结构:
CAL<SP>TrID<SP>RINGING<SP>Session1<CRLF>
表示邀请用户(user01@hotmail.com)的请求以被服务器接受
Session1表示Session串的第一部分
服务器回应<<<  JOI user01@hotmail.com user01_nickname/r/n
语法结构:
语法结构:
JOI<SP>用户passport<SP>用户呢称<CRLF>
表示用户(user01@hotmail.com)已经连接Session成功

这样就可以开始我们信息发送和接受了。

注意:第三、四步和后面发送/接受信息是在SS服务器的,同时DS服务器连接一直要保持,否则我们将会登出。


接下来我再介绍第二个途径,二、用户接受另外用户发送的Session请求,同样还是给出一个成功的案例
<NS Connect>
<<<  RNG 465209 207.46.108.93:1863 CKI 1093597464.30080 user01@hotmail.com user01_nickname/r/n
</NS Connect>

<SS Connect 207.46.108.93:1863>
>>>  ANS 1 example@hotmail.com 1093597464.30080 465209/r/n
<<<  IRO 1 1 2 user01@hotmail.com user01_usernick/r/n
<<<  IRO 1 2 2 user02@hotmail.com user02_usernick/r/n
<<<  ANS 1 OK/r/n

下面详细解释一下:

第一步获得Session连接邀请
这一步是被动获得,只有等待DS服务器发送邀请,所以只有服务器回应
服务器回应<<<  RNG 465209 207.46.108.93:1863 CKI 1093597464.30080 user01@hotmail.com user01_nickname/r/n
语法结构:
RNG<SP>Session串1<SP>IP:PORT<SP>CKI<SP>Session串2<SP>用户passport<SP>用户呢称<CRLF>
RNG表示Session请求
Session串1和Session串2,为Session通行证,连接Session用
用户passport和用户呢称表示邀请的用户帐户和呢称

第二步是连接SS服务器
<SS Connect 207.46.108.93:1863>

第三步是回应连接Session请求
客户端发送>>>  ANS 1 example@hotmail.com 1093597464.30080 465209/r/n
语法结构:
ANS<SP>TrID<SP>用户passport<SP>Session串2<SP>Session串1<CRLF>
表示用户(example@hotmail.com)同意连接Session,Session串1和Session串2即刚才请求DS服务器给的Session串
服务器回应<<<  IRO 1 1 2 user01@hotmail.com user01_usernick/r/n
服务器回应<<<  IRO 1 2 2 user02@hotmail.com user02_usernick/r/n
语法结构:
IRO<SP>TrID<SP>会话序号<SP>会话总数<SP>用户passport<SP>用户呢称<CRLF>
表示已经在会话中的用户信息反馈
会话序号,表示已有用户在该会话中的序号
会话总数,表示该会话中,已经存在的用户总数(不包括自己)
用户passport和用户呢称,表示在会话的用户帐户和呢称
服务器回应<<<  ANS 1 OK/r/n
语法结构:
ANS<SP>TrID<SP>OK<CRLF>
表示用户(example@hotmail.com)已经连接该Session成功

这样也就可以开始我们信息发送和接受了。

注意:第三步和后面发送/接受信息是在SS服务器的,同时DS服务器连接一直要保持,否则我们将会登出。

用Quickfix详解Fix(四)–核心类分析和初始化

 有了一些Fix基本概念后,接下来继续学习Fix协议(主要来学习Session level协议),今天就以QuickFix的启动初始化来讲解,在QuickFix启动初始化其间,都涉及了哪些重...
  • u011279740
  • u011279740
  • 2013年07月22日 11:30
  • 4553

Futaba SBUS协议解析

Futaba SBUS协议解析 S-bus为futaba使用的串行通信协议。实际上为串口通信。但是有几点需要注意: 在大端小端上,网上资料都说的不是很清楚;跟TTL串口信号相比,S...
  • mytt2013
  • mytt2013
  • 2016年10月08日 15:27
  • 2667

ORACLE-TNS协议分析

ORACLE-TNS协议分析 oracle 的 TNS 是什么的缩写?Transparent Network Substrate tns adapter ORACLE协议分...
  • haiross
  • haiross
  • 2015年03月05日 09:44
  • 8849

MSNP18协议分析(二)--- MSN登录身份认证

目录(?)[+] 一 连接服务器 连接到DS服务器连接到NS服务器断开服务器连接 二 身份验证 SSO认证方式登录验证生成登录是发送的p 三 小结 这一篇开始主要介绍M...
  • qinggebuyao
  • qinggebuyao
  • 2013年03月12日 11:15
  • 2357

MSNP18协议分析(一)--- MSN协议介绍

目录(?)[-] 一 MSNP二 MSNP基本概念 服务器协议命令错误代码编码方式名字 三 通讯过程 近一个多月一直在做手机上一个MSN客户端的项目,目前项目也接近尾声。对于M...
  • qinggebuyao
  • qinggebuyao
  • 2013年03月12日 11:13
  • 1861

最简单的一个堆栈溢出攻击实例 (2) [by Progsoft]

下面我们以Release版本为例,解剖程序。 将exe反汇编得到关键代码如下: 函数ShowComputerName:    00401030: 8B 4C 24 04        mov...
  • adermxl
  • adermxl
  • 2013年11月05日 14:12
  • 607

最简单的一个堆栈溢出攻击实例 (1) [by Progsoft]

以下列出一个简单的利用自身堆栈溢出漏洞,攻击自己的程序。 编译使用环境Windows2000/WindowsXP/VC6.0以下代码直接编译就可以产生简单攻击效果。 正常无溢出程序,弹出OK对话框...
  • adermxl
  • adermxl
  • 2013年11月05日 14:11
  • 865

2012-04-10 16:32 android与WEB服务器交互时,如何保证在同一个会话Session中通信

http://hi.baidu.com/cuihenrychl/item/a08e18268a01461577272ce4 最近在开发项目的过程中,遇到android与web服务器要在同一sessi...
  • dreamer0924
  • dreamer0924
  • 2012年08月14日 17:00
  • 1532

msnp15登录协议实现

  • 2010年02月22日 14:00
  • 32KB
  • 下载

Oracle 10g read by other session 等待 说明

在AWR中,我们可能会看到如下信息:   这里是Read byother session 等待占用了很多的时间。 关于Read by othe...
  • tianlesoftware
  • tianlesoftware
  • 2012年07月10日 22:12
  • 7697
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSNP10协议分析 04.Session [by progsoft]
举报原因:
原因补充:

(最多只允许输入30个字)