定義
XMPP:TheExtensibleMessagingandPresenceProtocol
中文全稱:可擴展通訊和表示協議
簡介:可擴展通訊和表示協議(XMPP)可用于服務類實時通訊、表示和需求響應服務中的XML數據元流式傳輸。XMPP以Jabber協議為基礎,而Jabber是即時通訊中常用的開放式協議。XMPPistheIETF'sformalizationofthebaseXMLstreamingprotocolsforinstantmessagingandpresencedevelopedwithintheJabberopen-sourcecommunityin1999
XMPP(可擴展消息處理現場協議)是基于可擴展标記語言(XML)的協議,它用于即時消息(IM)以及在線現場探測。它在促進服務器之間的準即時操作。這個協議可能最終允許因特網用戶向因特網上的其他任何人發送即時消息,即使其操作系統和浏覽器不同。
XMPP的前身是Jabber,一個開源形式組織産生的網絡即時通信協議。XMPP目前被IETF國際标準組織完成了标準化工作。标準化的核心結果分為兩部分;
核心的XML流傳輸協議
基于XMLFreeEIM流傳輸的即時通訊擴展應用
XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通信協議更規範的平台上。借助于XML易于解析和閱讀的特性,使得XMPP的協議能夠非常漂亮。
XMPP的即時通訊擴展應用部分是根據IETF在這之前對即時通訊的一個抽象定義的,與其他業已得到廣泛使用的即時通訊協議,諸如AIM,QQ等有功能完整,完善等先進性。
XMPP的擴展協議Jingle使得其支持語音和視頻。
XMPP的官方文檔是RFC3920.
基本網絡結構
XMPP中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發生。服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。網關承擔着與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等。基本的網絡形式是單客戶端通過TCP/IP連接到單服務器,然後在之上傳輸XML。。
功能
傳輸的是與即時通訊相關的指令。在以前這些命令要麼用2進制的形式發送(比如QQ),要麼用純文本指令加空格加參數加換行符的方式發送(比如MSN)。而XMPP傳輸的即時通訊指令的邏輯與以往相仿,隻是協議的形式變成了XML格式的純文本。這不但使得解析容易了,人也容易閱讀了,方便了開發和查錯。而XMPP的核心部分就是一個在網絡上分片段發送XML的流協議。這個流協議是XMPP的即時通訊指令的傳遞基礎,也是一個非常重要的可以被進一步利用的網絡基礎協議。所以可以說,XMPP用TCP傳的是XML流。
具體應用
以文檔的觀點來看,客戶端或服務器發送的所有XML文本連綴在一起,從到構成了一個完整的XML文檔。其中的stream标簽就是所謂的XML Stream。在與中間的那些...這樣的XML元素就是所謂的XML Stanza(XML節)。XMPP核心協議通信的基本模式就是先建立一個stream,然後協商一堆安全之類的東西,中間通信過程就是客戶端發送XML Stanza,一個接一個的。服務器根據客戶端發送的信息以及程序的邏輯,發送XML Stanza給客戶端。但是這個過程并不是一問一答的,任何時候都有可能從一方發信給另外一方。通信的最後階段是關閉流,關閉TCP/IP連接。
目前不少IM應用系統如:Google公司的Google Talk以及Jive Messenger等開源應用,都是遵循XMPP協議集而設計實現的,這些應用具有很好的互通性。
系統特點
客戶機/服務器通信模式;
分布式網絡;
簡單的客戶端;
标準通用标記語言的子集XML的數據格式。
通俗解釋
其實XMPP是一種很類似于http協議的一種數據傳輸協議,它的過程就如同“解包裝--〉包裝”的過程,用戶隻需要明白它接收的類型,并理解它返回的類型,就可以很好的利用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及TLS等技術的可靠安全性,已内置于核心XMPP技術規格中。
XML命名空間的威力可使任何人在核心協議的基礎上建造定制化的功能;為了維持通透性,常見的擴展有XMPP标準基金會。
XMPP除了可用在實時通信的應用程序,還能用在網絡管理、内容供稿、協同工具、文件共享、遊戲、遠程系統監控等。
用XMPP協議來建造及布署實時應用程序及服務的公司及開放源代碼計劃分布在各種領域;用XMPP技術開發軟件,資源及支持的來源是多樣的,使得使你不會陷于被“綁架”的困境。
缺點
随着通常超過70%的XMPP協議的服務器的數據流量的存在和近60%的被重複轉發,XMPP協議目前擁有一個大型架空中存在的數據提供給多個收件人。新的議定書正在研究,以減輕這一問題。
XMPP協議的方式被編碼為一個單一的長的XML文件,因此無法提供修改二進制數據。因此,文件傳輸協議一樣使用外部的HTTP。如果不可避免,XMPP協議還提供了帶編碼的文件傳輸的所有數據使用的Base64。至于其他二進制數據加密會話(encrypted conversations)或圖形圖标(graphic icons)以嵌入式使用相同的方法。