-
XMPP
鎖定
- 中文名
- 可擴展通訊和表示協議
- 外文名
- Extensible Messaging and Presence Protocol
- 外語縮寫
- XMPP
- 功 能
- XMPP用TCP傳的是XML流
XMPP定義
全稱:可擴展通訊和表示協議
XMPP(可擴展消息處理現場協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線現場探測。它在促進服務器之間的準即時操作。這個協議可能最終允許因特網用户向因特網上的其他任何人發送即時消息,即使其操作系統和瀏覽器不同。
核心的XML流傳輸協議
基於XMLFreeEIM流傳輸的即時通訊擴展應用
XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通信協議更規範的平台上。藉助於XML易於解析和閲讀的特性,使得XMPP的協議能夠非常漂亮。
XMPP的擴展協議Jingle使得其支持語音和視頻。
XMPP的官方文檔是RFC 3920。
XMPP基本網絡結構
XMPP中定義了三個角色,客户端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發生。服務器同時承擔了客户端信息記錄,連接管理和信息的路由功能。網關承擔着與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等。基本的網絡形式是單客户端通過TCP/IP連接到單服務器,然後在之上傳輸XML。
XMPP功能
傳輸的是與即時通訊相關的指令。在以前這些命令要麼用2進制的形式發送(比如QQ),要麼用純文本指令加空格加參數加換行符的方式發送(比如MSN)。而XMPP傳輸的即時通訊指令的邏輯與以往相仿,只是協議的形式變成了XML格式的純文本。
XMPP具體應用
舉個例子看看所謂的XML(標準通用標記語言的子集)流是什麼樣子的?
客户端:
<?xmlversion='1.0'?> <stream:stream to='example_com' xmlns='jabber:client' xmlns:stream='http_etherx_jabber_org/streams' version='1.0'>
服務器:
<?xmlversion='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='zh-cn'> <body>Art thou not Romeo, and a Montague?</body> </message>
服務器:
<message from='romeo_example_net' to='juliet_example_com' xml:lang='zh-cn'> <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系統特點
- 客户機/服務器通信模式;
- 分佈式網絡;
- 簡單的客户端;
- 標準通用標記語言的子集XML的數據格式。
XMPP通俗解釋
其實XMPP是一種很類似於http協議的一種數據傳輸協議,它的過程就如同“解包裝——包裝”的過程,用户只需要明白它接收的類型,並理解它返回的類型,就可以很好的利用xmpp來進行數據通訊。
XMPP優劣點
XMPP優點
XMPP協議是自由、開放、公開的,並且易於瞭解。而且在客户端、服務器、組件、源碼庫等方面,都已經各自有多種實現。
互聯網工程工作小組(IETF)已經將Jabber的核心XML流協議以XMPP之名,正式列為認可的實時通信及Presence技術。而XMPP的技術規格已被定義在RFC 3920及RFC 3921。任何IM供應商在遵循XMPP協議下,都可與Google Talk實現連接。
第一個Jabber(XMPP)技術是Jeremie Miller在1998年開發的,已經相當穩定;數以百計的開發者為XMPP技術而努力。今日的互聯網上有數以萬計的XMPP服務器運作着,並有數以百萬計的人們使用XMPP實時傳訊軟件。
XMPP網絡的架構和電子郵件十分相像;XMPP核心協議通信方式是先創建一個stream,XMPP以TCP傳遞XML數據流,沒有中央主服務器。任何人都可以運行自己的XMPP服務器,使個人及組織能夠掌控他們的實時傳訊體驗。
任何XMPP協議的服務器可以獨立於公眾XMPP網絡(例如在企業內部網絡中),而使用SASL及TL等技術的可靠安全性,已內置於核心XMPP技術規格中。
XML命名空間的威力可使任何人在核心協議的基礎上建造定製化的功能;為了維持通透性,常見的擴展有XMPP標準基金會。
用XMPP協議來建造及部署實時應用程序及服務的公司及開放源代碼計劃分佈在各種領域;用XMPP技術開發軟件,資源及支持的來源是多樣的,使得使你不會陷於被“綁架”的困境。
XMPP缺點
隨着通常超過70%的XMPP協議的服務器的數據流量的存在和近60%的被重複轉發,XMPP協議擁有一個大型架空中存在的數據提供給多個收件人。新的議定書正在研究,以減輕這一問題。