
MSN 协议分析
发布日期:2025-04-15 01:36:48
浏览次数:9
分类:精选文章
本文共 2213 字,大约阅读时间需要 7 分钟。
MSN 协议是一种用于即时通讯的网络协议,广泛应用于 Microsoft Messenger(现为 Skype)等应用程序。以下将从协议概述、客户端启动流程、关键功能(如语音对话、文件传输、视频对话、消息发送、白板功能等)以及常见问题的解决方法详细阐述。
一、协议概述
MSN Messenger 客户端与服务器之间主要通过两种形式的通信:命令和消息。命令用于初始化连接和数据交换,而消息则用于传递用户状态、聊天邀请等信息。协议中核心的通信端口为 1863。
命令格式:
- 标准命令由三部分组成:命令标识符、参数和换行符。
- 参数之间以空格分隔。
消息格式:
- 消息以
msg
开头,第一行末尾包含消息长度(包括 MIME 头和主体)。 - MIME 头包含
mime-version
和content-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-name
和invitation-cookie
确定连接类型。
解析消息内容:
- 截获
msg
命令包,分析消息长度、MIME 头和内容。 - 关键字
ip-address
、port
和context-data
可用于提取连接信息。
区分连接类型:
- 通过
application-name
和invitation-cookie
确定连接类型(如语音对话和视频对话使用 UDP)。 - 其他操作类型对应的 ASCII 码已列示于文章末尾。
通过以上方法,可以详细分析 MSN 协议的通信过程,并解决实际应用中的问题。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年05月25日 19时42分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MySQL 基础模块的面试题总结
2025-04-15
MySQL 处理插入重主键唯一键重复值办法
2025-04-15
Mysql 备份
2025-04-15
MySQL 备份 Xtrabackup
2025-04-15
mysql 复杂查询_mysql中复杂查询
2025-04-15
mYSQL 外键约束
2025-04-15
mysql 多个表关联查询查询时间长的问题
2025-04-15
mySQL 多个表求多个count
2025-04-15
mysql 多字段删除重复数据,保留最小id数据
2025-04-15
MySQL 多表联合查询:UNION 和 JOIN 分析
2025-04-15
MySQL 大数据量快速插入方法和语句优化
2025-04-15
mysql 如何给SQL添加索引
2025-04-15
mysql 字段区分大小写
2025-04-15
mysql 字段合并问题(group_concat)
2025-04-15
mysql 字段类型类型
2025-04-15
MySQL 字符串截取函数,字段截取,字符串截取
2025-04-15
MySQL 存储引擎
2025-04-15
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
2025-04-15
MySQL 存储过程参数:in、out、inout
2025-04-15
mysql 存储过程每隔一段时间执行一次
2025-04-15