MSN Messenger協議概況

2021-08-21 23:07:28 字數 2465 閱讀 8068

前 言

2023年,microsoft向ietf提交了乙份"msn messenger service 1.0 protocol"草案,這是最初版本的msn messenger協議。在以後幾年,該公司不再公開有關msn messenger協議的公升級、修改細節的官方文件。但無論是開發第三方的聊天客戶端軟體(如gaim, myim等),還是做協議分析,必須對其通訊協議有深入了解。正因為如此,有一些民間人士對這些協議開展了研究(見本文的"相關資源"一節)。

當我們還在感嘆"這世界,變化快"的時候,msn messenger的協議已經到了第10版,簡稱msnp10,對應於msn messenger 6.1。msn messenger 6.0則使用msnp9。現在microsoft強迫msn messenger使用者公升級到6.0或6.1版,因為伺服器對msnp8以下的版本不再支援。本文及後續文章所描述的msn messenger協議主要針對msnp9/msnp10。

1. 連 接

msn messenger協議建立在tcp/ip之上。除了檔案傳輸和語音聊天是直接的"點對點"通訊之外,其它所有的情形全部通過伺服器進行。

在邏輯上,一共有三種型別的伺服器,各司其職:

派遣伺服器(dispatch server, ds)- 客戶端最初連線的伺服器。負責給客戶端分配合適的通知伺服器。網域名稱是messenger.hotmail.com,標準服務埠是1863。完成派遣任務後,切斷tcp連線。通知伺服器(notification server, ns)- 客戶端需要一直保持連線的伺服器。很多任務要在這個會話內完成,包括登入、改變狀態、獲取使用者列表、修改使用者資訊、發起聊天、接受呼叫、郵件通知、退出等等。服務埠由派遣伺服器指定,通常也是1863。接線伺服器(switchboard server, ss)- 客戶端之間聊天使用的中轉伺服器。每開乙個聊天視窗,客戶端和伺服器就建立乙個tcp會話。當客戶端之間需要進行檔案傳輸或語音聊天時,傳送系統訊息,建立"點對點"會話通道(可能轉為使用udp)。服務埠通常也是1863。"點對點" 通訊使用的埠由客戶端自動協商決定,如檔案傳輸通常使用6891埠。

2. 命 令

msn messenger命令使用純ascii碼。對非ascii碼字元使用url編碼。命令的語法是

***[tridparam1param2…]
其中,是空白字元,是回車換行,***是乙個3字元的命令串,trid是乙個流水號,paramx是引數,[ ]內是可選項。最簡單的命令沒有流水號和引數。為了方便起見,下面討論時用" "代表,"\r\n"代表,"\x??"代表乙個值為0x??位元組。紅色表示由客戶端發出,藍色表示由伺服器發出。乙個msn messenger命令的例子如下:

usr 18 twn i [email protected]

\r\n

3. 錯 誤

無論是由於客戶端發出的命令無效,引數無效,還是其他什麼原因,伺服器可以返回乙個錯誤。格式為

***[trid]
其中,***是乙個3位數字的串。如

add 21 al [email protected] [email protected]

\r\n

205 21

\r\n

上例中,[email protected]是乙個不存在的賬號。

4. 消 息

msn messenger訊息符合mime 1.0標準,由訊息頭與訊息體組成。通常使用utf-8編碼,訊息頭中也需要url編碼格式,訊息體則直接用二進位制資料。

乙個msn messenger訊息的例子如下:

mime-version: 1.0\r\n

content-type: text/plain; charset=utf-8\r\n

x-mms-im-format: fn=%e5%ae%8b%e4%bd%93; ef=; co=0; cs=86; pf=0\r\n

\r\n

bhw98\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81

經簡單分析可知,"%e5%ae%8b%e4%bd%93"是"宋體"的utf-8加url編碼,而"bhw98\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81"是"bhw98你好!"的utf-8編碼。

〖相關資源〗

url編碼:

rfc 1738 utf-8編碼:

rfc 2279 mime 1.0:

rfc 2045,

rfc 2046,

rfc 2047,

rfc 2048,

rfc 2049 blobsy開源站點:

www.maldivianunderground.net/blobsy/ mike mintz等研究msn的站點:

www.hypothetic.org/docs/msn/ msn messenger官方**:

messenger.msn.com 科腦工作室(kernel studio):

www.kernelstudio.com

MSN Messenger協議分析

msn messenger協議 msn protocol 摘錄目的 學習之用,並不用於商業目的 原作 bhw98 前 言1999年,microsoft向ietf提交了乙份 msn messenger service 1.0 protocol 草案,這是最初版本的msn messenger協議。在以後...

MSN Messenger協議 原作 bhw98

前 言 1999年,microsoft向ietf提交了乙份 msn messenger service 1.0 protocol 草案,這是最初版本的msn messenger協議。在以後幾年,該公司不再公開有關msn messenger協議的公升級 修改細節的官方文件。但無論是開發第三方的聊天客戶...

MSN Messenger協議 原作 bhw98

msn messenger協議 原作 bhw98 前 言1999年,microsoft向ietf提交了乙份 msn messenger service 1.0 protocol 草案,這是最初版本的msn messenger協議。在以後幾年,該公司不再公開有關msn messenger協議的公升級 ...