XMPP RFC閱讀筆記

http://dev.csdn.net/article/60/60495.shtm

以下所有內容均是根據自己的記憶和理解,如有不正確甚至謬誤之處,請多見諒。

1、什麼是XMPP ?
XMPP的前身是Jabber,一個開源形式組織產生的網絡即時通信協議。XMPP目前被IETF國際標準組織完成了標準化工作。標準化的核心結果分爲兩部分;
核心的XML流傳輸協議
基於XML流傳輸的即時通訊擴展應用
XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通信協議更規範的平臺上。藉助於XML易於解析和閱讀的特性,使得XMPP的協議能夠非常漂亮。
XMPP的即時通訊擴展應用部分是根據IETF在這之前對即時通訊的一個抽象定義的,與其他業已得到廣泛使用的即時通訊協議,諸如AIM,QQ等有功能完整,完善等先進性。

2、XMPP的基本網絡結構是怎樣的?
XMPP 中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發生。服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。網關承 擔着與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等。基本的網絡形式是單客戶端通過TCP/IP連接到單服務器,然後 在之上傳輸XML。

3、XMPP通過TCP傳什麼了?
傳輸的是與即時通訊相關的指令。在以前這些命令要麼用2進制的形式發 送(比如QQ),要麼用純文本指令加空格加參數加換行苻的方式發送(比如MSN)。而XMPP傳輸的即時通訊指令的邏輯與以往相仿,只是協議的形式變成了 XML格式的純文本。這不但使得解析容易了,人也容易閱讀了,方便了開發和查錯。而XMPP的核心部分就是一個在網絡上分片斷髮送XML的流協議。這個流 協議是XMPP的即時通訊指令的傳遞基礎,也是一個非常重要的可以被進一步利用的網絡基礎協議。所以可以說,XMPP用TCP傳的是XML流。

4、舉個例子看看所謂的XML流是什麼樣子的?
客戶端:
   <stream:stream></stream:stream>       to='example.com'
       xmlns='jabber:client'
       xmlns:stream='http://etherx.jabber.org/streams'
       version='1.0'>
服務器:
   <stream:stream></stream:stream>       from='example.com'
       id='someid'
       xmlns='jabber:client'
       xmlns:stream='http://etherx.jabber.org/streams'
       version='1.0'>
...其他通信...
客戶端:<message from="[email protected]"></message>               to='[email protected]'
              xml:lang='en'>
客戶端: Art thou not Romeo, and a Montague?
客戶端:
服務器:<message from="[email protected]"></message>               to='[email protected]'
              xml:lang='en'>
服務器:Neither, fair saint, if either thee dislike.
服務器:
客戶端:
服務器:
以 文檔的觀點來看,客戶端或服務器發送的所有XML文本連綴在一起,從<stream></stream>到構成了一個完整的 XML文檔。其中的stream標籤就是所謂的XML Stream。在<stream></stream>與中間的那些<message></message>...< /message>這樣的XML元素就是所謂的XML Stanza(XML節)。XMPP核心協議通信的基本模式就是先建立一個stream,然後協商一堆安全之類的東西,中間通信過程就是客戶端發送XML Stanza,一個接一個的。服務器根據客戶端發送的信息以及程序的邏輯,發送XML Stanza給客戶端。但是這個過程並不是一問一答的,任何時候都有可能從一個方發信給另外一方。通信的最後階段是關閉 流,關閉TCP/IP連接。
發佈了0 篇原創文章 · 獲贊 2 · 訪問量 3172
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章