博客
关于我
MSN 协议分析
阅读量:794 次
发布时间:2023-02-10

本文共 2213 字,大约阅读时间需要 7 分钟。

MSN 协议是一种用于即时通讯的网络协议,广泛应用于 Microsoft Messenger(现为 Skype)等应用程序。以下将从协议概述、客户端启动流程、关键功能(如语音对话、文件传输、视频对话、消息发送、白板功能等)以及常见问题的解决方法详细阐述。

一、协议概述

MSN Messenger 客户端与服务器之间主要通过两种形式的通信:命令和消息。命令用于初始化连接和数据交换,而消息则用于传递用户状态、聊天邀请等信息。协议中核心的通信端口为 1863。

  • 命令格式

    • 标准命令由三部分组成:命令标识符、参数和换行符。
    • 参数之间以空格分隔。
  • 消息格式

    • 消息以 msg 开头,第一行末尾包含消息长度(包括 MIME 头和主体)。
    • MIME 头包含 mime-versioncontent-type 信息。
    • 消息主体部分通常为文本或文件数据。
  • 事务 ID

    • 每次客户端发送命令或消息时,事务 ID 自增,用于标识请求和响应对应。
  • 二、客户端启动流程

  • 初始化连接

    • 客户端首先通过 ver 命令协商协议版本。
    • 若协商成功,客户端发送 inf 命令以获取认证算法。
    • 客户端通过 usr 命令发送电子邮件地址和 MD5 密钥,服务器返回 xfr 命令,指明 notification 服务器地址和端口。
  • 连接 notification 服务器

    • 使用返回的 IP 地址和端口连接 notification 服务器。
    • 服务器验证客户端身份后返回 usr 命令,完成客户端注册。
  • 用户状态初始化

    • 客户端发送 chg 命令,通知服务器更新用户状态(如在线状态)。
  • 三、语音对话通信

  • 申请邀请服务器

    • 客户端向 notification 服务器发送 xfr 命令,请求 tchboard 服务器地址。
    • 服务器返回包含 tchboard 服务器 IP 和端口的 xfr 回复。
  • 连接 tchboard 服务器

    • 客户端通过 TCP 协议连接两个 tchboard 服务器(用于发送请求和接收回复)。
  • 邀请对方对话

    • 客户端发送 usr 命令,包含电子邮件地址和序号,邀请对方加入对话。
    • tchboard 服务器向客户端返回邀请结果。
  • 处理邀请回复

    • 客户端发送邀请信息,服务器返回 ack 命令确认接收。
    • 被邀请方通过 UDP 连接发送语音数据。
  • 四、文件传输

  • 申请 tchboard 服务器

    • 客户端向 notification 服务器发送 xfr 命令,请求单一 tchboard 服务器地址。
  • 发送文件请求

    • 客户端发送 msg 命令,包含文件信息和 cookie。
    • 服务器返回 msg 回复,确认接收请求,并包含对方 IP 地址和端口。
  • 建立连接并传输文件

    • 客户端发送 msg 命令,包含本机 IP 和端口,服务器返回 ack 确认。
    • 对方通过 UDP 连接发送文件数据。
  • 五、视频对话

    视频对话的通信过程与语音对话类似,但使用 UDP 协议传输视频数据。客户端需要申请两个 tchboard 服务器地址,用于发送请求和接收回复。

    六、发送即时消息

  • 发送消息

    • 客户端向 tchboard 服务器发送 msg 命令,包含消息内容。
    • 消息格式包括 MIME 头和主体部分,具体内容根据消息类型(如文本、文件等)不同而定。
  • 接收消息

    • 服务器收到消息后,向客户端发送 msg 回复,包含对方电子邮件地址和消息内容。
  • 七、启动白板

  • 邀请白板功能

    • 客户端发送 usr 命令,包含电子邮件地址和序号,邀请对方启动白板。
    • 服务器返回邀请结果,包含对方 IP 地址和端口。
  • 连接白板服务器

    • 客户端通过 TCP 协议连接白板服务器,传递用户信息。
    • 服务器返回 usr 命令,确认白板功能已启动。
  • 八、启用应用程序共享

  • 申请邀请服务器

    • 客户端向 notification 服务器发送 xfr 命令,请求 tchboard 服务器地址。
    • 服务器返回包含 tchboard 服务器 IP 和端口的 xfr 回复。
  • 连接 tchboard 服务器

    • 客户端通过 TCP 协议连接 tchboard 服务器,传递用户信息。
    • 服务器返回 usr 命令,确认应用程序共享功能已启动。
  • 九、发现问题

    由于文档来源较早,与当前版本存在差异。例如,当前版本可能不再需要手动初始化 dispatch 服务器,而是直接连接 notification 服务器。部分 IP 地址和端口号可能已发生变化,建议根据最新版本文档调整配置。

    十、解决方法

  • 获取服务器 IP 地址和端口

    • 截获客户端与 notification 服务器之间的通信包,分析 xfr 命令返回的 IP 地址和端口。
    • 注意区分 TCP 和 UDP 连接,通过 application-nameinvitation-cookie 确定连接类型。
  • 解析消息内容

    • 截获 msg 命令包,分析消息长度、MIME 头和内容。
    • 关键字 ip-addressportcontext-data 可用于提取连接信息。
  • 区分连接类型

    • 通过 application-nameinvitation-cookie 确定连接类型(如语音对话和视频对话使用 UDP)。
    • 其他操作类型对应的 ASCII 码已列示于文章末尾。
  • 通过以上方法,可以详细分析 MSN 协议的通信过程,并解决实际应用中的问题。

    转载地址:http://saffk.baihongyu.com/

    你可能感兴趣的文章
    MongoDB安装及shell简介
    查看>>
    mongodb定时备份数据库
    查看>>
    mssql 字增自段怎样重置(重新自增)|清空表已有数据
    查看>>
    mongodb导出csv json
    查看>>
    MongoDB工具MagicMongoDBTool使用介绍(一) -- 简单MongoDB入门
    查看>>
    mongodb工具类
    查看>>
    MongoDB常见面试题总结(上)
    查看>>
    MongoDB快速入门
    查看>>
    MongoDB快速插入1000w测试数据(Java)
    查看>>
    MongoDB性能调优
    查看>>
    MongoDB插入数据的3种方法
    查看>>
    mongoDB教程(一):数据库简介
    查看>>
    mongoDB教程(七):集合的操作
    查看>>
    mongoDB教程(三):服务开启关闭
    查看>>
    mongoDB教程(十):导入、导出
    查看>>
    mongodb数据库操作--备份 还原 导出 导入
    查看>>
    mongodb数据库的基本操作
    查看>>
    mongodb数据库运维常用语法
    查看>>
    MongoDB整理笔记の增加节点
    查看>>
    MongoDB文档常见查询
    查看>>