本文共 2213 字,大约阅读时间需要 7 分钟。
MSN 协议是一种用于即时通讯的网络协议,广泛应用于 Microsoft Messenger(现为 Skype)等应用程序。以下将从协议概述、客户端启动流程、关键功能(如语音对话、文件传输、视频对话、消息发送、白板功能等)以及常见问题的解决方法详细阐述。
MSN Messenger 客户端与服务器之间主要通过两种形式的通信:命令和消息。命令用于初始化连接和数据交换,而消息则用于传递用户状态、聊天邀请等信息。协议中核心的通信端口为 1863。
命令格式:
消息格式:
msg
开头,第一行末尾包含消息长度(包括 MIME 头和主体)。mime-version
和 content-type
信息。事务 ID:
初始化连接:
ver
命令协商协议版本。inf
命令以获取认证算法。usr
命令发送电子邮件地址和 MD5 密钥,服务器返回 xfr
命令,指明 notification 服务器地址和端口。连接 notification 服务器:
usr
命令,完成客户端注册。用户状态初始化:
chg
命令,通知服务器更新用户状态(如在线状态)。申请邀请服务器:
xfr
命令,请求 tchboard 服务器地址。xfr
回复。连接 tchboard 服务器:
邀请对方对话:
usr
命令,包含电子邮件地址和序号,邀请对方加入对话。处理邀请回复:
ack
命令确认接收。申请 tchboard 服务器:
xfr
命令,请求单一 tchboard 服务器地址。发送文件请求:
msg
命令,包含文件信息和 cookie。msg
回复,确认接收请求,并包含对方 IP 地址和端口。建立连接并传输文件:
msg
命令,包含本机 IP 和端口,服务器返回 ack
确认。视频对话的通信过程与语音对话类似,但使用 UDP 协议传输视频数据。客户端需要申请两个 tchboard 服务器地址,用于发送请求和接收回复。
发送消息:
msg
命令,包含消息内容。接收消息:
msg
回复,包含对方电子邮件地址和消息内容。邀请白板功能:
usr
命令,包含电子邮件地址和序号,邀请对方启动白板。连接白板服务器:
usr
命令,确认白板功能已启动。申请邀请服务器:
xfr
命令,请求 tchboard 服务器地址。xfr
回复。连接 tchboard 服务器:
usr
命令,确认应用程序共享功能已启动。由于文档来源较早,与当前版本存在差异。例如,当前版本可能不再需要手动初始化 dispatch 服务器,而是直接连接 notification 服务器。部分 IP 地址和端口号可能已发生变化,建议根据最新版本文档调整配置。
获取服务器 IP 地址和端口:
xfr
命令返回的 IP 地址和端口。application-name
和 invitation-cookie
确定连接类型。解析消息内容:
msg
命令包,分析消息长度、MIME 头和内容。ip-address
、port
和 context-data
可用于提取连接信息。区分连接类型:
application-name
和 invitation-cookie
确定连接类型(如语音对话和视频对话使用 UDP)。通过以上方法,可以详细分析 MSN 协议的通信过程,并解决实际应用中的问题。
转载地址:http://saffk.baihongyu.com/