XMPP協議簡介

 XMPP(Extensible Messageing and Presence Protocol:可擴展消息與存在協議)是目前主流的四種IM(IM:instant messaging,即時消息)協議之一,其餘三種分別爲:即時信息和空間協議(IMPP)、空間和即時信息協議(PRIM)、針對即時通信和空間平衡擴充的進程開始協議SIP(SIMPLE)。 
     在這四種協議中,XMPP是最靈活的。XMPP是一種基於XML的協議,它繼承了在XML環境中靈活的發展性。所以,基於XMPP的應用具備超強的可擴展性。通過擴展之後的XMPP能夠經過發送擴展的信息來處理用戶的需求,以及在XMPP的頂端創建如內容發佈系統和基於地址的服務等應用程 序。並且,XMPP包含了針對服務器端的軟件協議,使之能與另外一個進行通話,這使得開發者更容易創建客戶應用程序或給一個配好系統添加功能。

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

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

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

四、舉個例子看看所謂的XML流是什麼樣子的? 
客戶端:<?xml version='1.0'?> 
   <stream:stream 
       to='example.com' 
       xmlns='jabber:client' 
       xmlns:stream='http://etherx.jabber.org/streams
       version='1.0'> 
服務器:<?xml version='1.0'?> 
   <stream:stream 
       from='example.com' 
       id='someid' 
       xmlns='jabber:client' 
       xmlns:stream='http://etherx.jabber.org/streams
       version='1.0'> 
...其餘通訊... 
客戶端:<message from='juliet@example.com
              to='romeo@example.net
              xml:lang='en'> 
客戶端: <body>Art thou not Romeo, and a Montague?</body> 
客戶端:</message> 
服務器:<message from='romeo@example.net
              to='juliet@example.com
              xml:lang='en'> 
服務器:<body>Neither, fair saint, if either thee dislike.</body> 
服務器:</message> 
客戶端:</stream:stream> 
服務器:</stream:stream> 
     以文檔的觀點來看,客戶端或服務器發送的全部XML文本連綴在一塊兒,從<stream>到</stream>構成了一個完整的XML文檔。其中的stream標籤就是所謂的XML Stream。在<stream>與</stream>中間的那些<message>...</message>這樣的XML元素就是所謂的XML Stanza(XML節)。XMPP核心協議通訊的基本模式就是先創建一個stream,而後協商一堆安全之類的東西,中間通訊過程就是客戶端發送XML Stanza,一個接一個的。服務器根據客戶端發送的信息以及程序的邏輯,發送XML Stanza給客戶端。可是這個過程並非一問一答的,任什麼時候候都有可能從一個方發信給另一方。通訊的最後階段是</stream>關閉流,關閉TCP/IP鏈接。 
     採用XMPP協議的即時通訊應用,當數google吧,Google Talk是基於XMPP協議,並且它還容許其它IM自由使用XMPP協議。如此一來,任何IM供應商在遵循XMPP協議的前提下,均可以隨時與Google Talk實現免費鏈接.

附:主流的四種IM通信協議簡介

     IMPP:IMPP主要定義必要的協議和數據格式,用來構建一個具備空間接收、發佈能力的即時信息系統。到目前爲止,這個組織已經出版了三個草案RFC,但主要的有兩個:一個是針對站點空間和即時通信模型的(RFC 2778);另外一個是針對即時通信/空間協議需求條件的(RFC2779)。RFC2778是一個資料性質的草案,定義了全部presence和IM服務的原理。RFC2779定義了IMPP的最小需求條件。另外,這個草案還就presence服務定義了一些條款,如運行的命令、信息的格式,以及presence服務器如何把presence的狀態變化通知給客戶。

    SIMPLE:SIMPLE是目前爲止制定的較爲完善的一個。SIMPLE和XMPP兩個協議,都符合RFC2778和RFC2779 。SIMPLE計劃利用SIP來發送presence信息。SIP是IETF中爲終端制定的協議。SIP通常考慮用在創建語音通話中,一旦鏈接之後,依靠如實時協議(RTP)來進行實際上的語音發送。但SIP不只僅能被用在語音中,也能夠用於視頻。SIMPLE被定義爲創建一個IM進程的方法。SIMPLE在2002年夏季獲得額外的信任,目前,微軟和IBM都致力於在它們的即時通信系統中實現這個協議。 SIMPLE小組致力於進程模式的操做,這將提高運行效率,使基於SIP的機制可以進行會議和三方電話交談控制,也考慮到能和將來提供的許多新特性實現兼容並提高表現能力。有了進程模式,SIMPLE使用SIP來創建一次進程,再利用SDP(進程描述協議)來實際傳輸IM數據。安全

轉自:http://blog.csdn.net/abcpanpeng/article/details/7367504服務器

相關文章
相關標籤/搜索