你用VB已經(jīng)有很長(zhǎng)時(shí)間了,一直疑惑MSN是如何工作的?,F(xiàn)在你不用再為這個(gè)問(wèn)題苦惱了,這篇文章不僅告訴你MSN是如何工作的,甚至還告訴你如何用VB編出你自己的MSN即時(shí)通訊軟件。
我們可以把MSN的工作機(jī)制分成兩個(gè)階段:
認(rèn)證階段
認(rèn)證階段包括登陸到MSN即時(shí)通的服務(wù)器并且取得好友列表
即時(shí)通訊階段
即時(shí)通訊階段包括發(fā)送/接受進(jìn)入即時(shí)通訊階段的請(qǐng)求和發(fā)送/接受消息。
MSN即時(shí)通訊軟件的協(xié)議是基于ASCII碼的協(xié)議,用其他話來(lái)講就是所有的命令都必須是英文的!第一個(gè)階段包括連接到MSN即時(shí)通軟件的服務(wù)器。在這個(gè)階段我們應(yīng)該連接到服務(wù)器“messenger.hotmail.com”的1863端口(MSN即時(shí)通訊軟件通過(guò)1863端口進(jìn)行工作)。一旦連接上以后,我們就應(yīng)該開(kāi)始登陸過(guò)程了。此過(guò)程的第一步是驗(yàn)證MSN的版本。在此步中,客戶端(即你的MSN軟件)列出及向服務(wù)器發(fā)送它可以支持的版本,然后等待服務(wù)器的回應(yīng)。
VER 0 MSNP7 MSNP6 MSNP5 MSNP4 CVRO
在MSN協(xié)議中,伴隨著每個(gè)命令都有一個(gè)“試驗(yàn)ID”被發(fā)送。此實(shí)驗(yàn)ID從0開(kāi)始,并且當(dāng)每次服務(wù)器成功的對(duì)客戶端的命令做回應(yīng)時(shí),都會(huì)增加。
服務(wù)器的回應(yīng)如下
VER 0 MSNP7 MSNP6 MSNP5 MSNP4
現(xiàn)在客戶端(MSN)和服務(wù)器之間確定了它們之間將要進(jìn)行通訊的版本。
下一步客戶端(MSN)向服務(wù)器發(fā)送一個(gè)請(qǐng)求,要求服務(wù)器提供它所支持的認(rèn)證時(shí)需要的安全包的名字。
INF 1
不像ahoo,Rediff和其它的一些即時(shí)通訊軟件,MSN在發(fā)送密碼時(shí)會(huì)將密碼加密,保證如有人監(jiān)控你的端口時(shí),密碼不會(huì)輕易的泄露。
服務(wù)器的回應(yīng)如下
INF 1 MD5 (MD5在這里是服務(wù)器當(dāng)前支持的安全包的名字)
下一步客戶端(MSN)將向服務(wù)器發(fā)送用戶ID
USR 2 MD5 I venky_dude@hotmail.com
然后服務(wù)器將檢驗(yàn)它是否包含有驗(yàn)證所需的此用戶的所有相關(guān)信息。如沒(méi)有的話,服務(wù)器將會(huì)發(fā)送如下回應(yīng):
XFR 2 NS 64.4.13.55:1863 0
意思為客戶端(MSN)應(yīng)該連接到NOTIFICATION服務(wù)器,地址和端口分別為64.4.13.55,1863.
我們關(guān)閉當(dāng)前的連接并且在連接到新的服務(wù)器64.4.13.55時(shí)重復(fù)以下步驟
(客戶端)VER 3 MSNP7 MSNP6 MSNP5 MSNP4 CVRO
(服務(wù)器)VER 3 MSNP7 MSNP6 MSNP5 MSNP4
(客戶端)INF 4
(服務(wù)器)INF 4 MD5
(客戶端)USR 5 MD5 I venky_dude@hotmail.com
現(xiàn)在我們連接上的服務(wù)器有了此嘗試登陸的用戶的信息.服務(wù)器回應(yīng)如下:
USR 5 MD5 S 989048851.185113730
服務(wù)器發(fā)送的此字符串是“MD5 雜亂信息”.此雜亂信息由服務(wù)器創(chuàng)建并且在認(rèn)證過(guò)程中使用.客戶端然后向服務(wù)器發(fā)送使用MD5運(yùn)算法加密后的密碼.實(shí)際上客戶端向服務(wù)器發(fā)送的是一個(gè)獨(dú)一無(wú)二的MD5字符串,此字符串等價(jià)于此“MD5雜亂信息”(即989048851.185113730)+密碼.結(jié)果如下
3b7926d277068ec49576a0c40598ff21
USR 6 MD5 S 3b7926d277068ec49576a0c40598ff21
如果密碼正確,服務(wù)器將做如下回應(yīng):
USR 6 OK venky_dude@hotmail.com venkat
此處“venkat”是用戶的呢稱。
我們可以把MSN的工作機(jī)制分成兩個(gè)階段:
認(rèn)證階段
認(rèn)證階段包括登陸到MSN即時(shí)通的服務(wù)器并且取得好友列表
即時(shí)通訊階段
即時(shí)通訊階段包括發(fā)送/接受進(jìn)入即時(shí)通訊階段的請(qǐng)求和發(fā)送/接受消息。
MSN即時(shí)通訊軟件的協(xié)議是基于ASCII碼的協(xié)議,用其他話來(lái)講就是所有的命令都必須是英文的!第一個(gè)階段包括連接到MSN即時(shí)通軟件的服務(wù)器。在這個(gè)階段我們應(yīng)該連接到服務(wù)器“messenger.hotmail.com”的1863端口(MSN即時(shí)通訊軟件通過(guò)1863端口進(jìn)行工作)。一旦連接上以后,我們就應(yīng)該開(kāi)始登陸過(guò)程了。此過(guò)程的第一步是驗(yàn)證MSN的版本。在此步中,客戶端(即你的MSN軟件)列出及向服務(wù)器發(fā)送它可以支持的版本,然后等待服務(wù)器的回應(yīng)。
VER 0 MSNP7 MSNP6 MSNP5 MSNP4 CVRO
在MSN協(xié)議中,伴隨著每個(gè)命令都有一個(gè)“試驗(yàn)ID”被發(fā)送。此實(shí)驗(yàn)ID從0開(kāi)始,并且當(dāng)每次服務(wù)器成功的對(duì)客戶端的命令做回應(yīng)時(shí),都會(huì)增加。
服務(wù)器的回應(yīng)如下
VER 0 MSNP7 MSNP6 MSNP5 MSNP4
現(xiàn)在客戶端(MSN)和服務(wù)器之間確定了它們之間將要進(jìn)行通訊的版本。
下一步客戶端(MSN)向服務(wù)器發(fā)送一個(gè)請(qǐng)求,要求服務(wù)器提供它所支持的認(rèn)證時(shí)需要的安全包的名字。
INF 1
不像ahoo,Rediff和其它的一些即時(shí)通訊軟件,MSN在發(fā)送密碼時(shí)會(huì)將密碼加密,保證如有人監(jiān)控你的端口時(shí),密碼不會(huì)輕易的泄露。
服務(wù)器的回應(yīng)如下
INF 1 MD5 (MD5在這里是服務(wù)器當(dāng)前支持的安全包的名字)
下一步客戶端(MSN)將向服務(wù)器發(fā)送用戶ID
USR 2 MD5 I venky_dude@hotmail.com
然后服務(wù)器將檢驗(yàn)它是否包含有驗(yàn)證所需的此用戶的所有相關(guān)信息。如沒(méi)有的話,服務(wù)器將會(huì)發(fā)送如下回應(yīng):
XFR 2 NS 64.4.13.55:1863 0
意思為客戶端(MSN)應(yīng)該連接到NOTIFICATION服務(wù)器,地址和端口分別為64.4.13.55,1863.
我們關(guān)閉當(dāng)前的連接并且在連接到新的服務(wù)器64.4.13.55時(shí)重復(fù)以下步驟
(客戶端)VER 3 MSNP7 MSNP6 MSNP5 MSNP4 CVRO
(服務(wù)器)VER 3 MSNP7 MSNP6 MSNP5 MSNP4
(客戶端)INF 4
(服務(wù)器)INF 4 MD5
(客戶端)USR 5 MD5 I venky_dude@hotmail.com
現(xiàn)在我們連接上的服務(wù)器有了此嘗試登陸的用戶的信息.服務(wù)器回應(yīng)如下:
USR 5 MD5 S 989048851.185113730
服務(wù)器發(fā)送的此字符串是“MD5 雜亂信息”.此雜亂信息由服務(wù)器創(chuàng)建并且在認(rèn)證過(guò)程中使用.客戶端然后向服務(wù)器發(fā)送使用MD5運(yùn)算法加密后的密碼.實(shí)際上客戶端向服務(wù)器發(fā)送的是一個(gè)獨(dú)一無(wú)二的MD5字符串,此字符串等價(jià)于此“MD5雜亂信息”(即989048851.185113730)+密碼.結(jié)果如下
3b7926d277068ec49576a0c40598ff21
USR 6 MD5 S 3b7926d277068ec49576a0c40598ff21
如果密碼正確,服務(wù)器將做如下回應(yīng):
USR 6 OK venky_dude@hotmail.com venkat
此處“venkat”是用戶的呢稱。