標籤:xmpp tigase spark im 即時通訊
XMPP(Extensible Messaging and Presence Protocol,前稱Jabber)協議介紹
可擴充訊息處理現場協議(eXtensible Messaging and Presence Protocol , XMPP) 是一種基於可延伸標記語言 (XML)(eXtensible Markup Language, XML)的近端串流式即時通訊協定。它將現場和上下文敏感資訊標記嵌入到XML 結構化資料中, 使得人與人之間、應用系統之間以及人與應用系統之間能即時相互連信
XMPP是一種基於XML架構的開放式協議.XMPP的基礎部分已經在2002-2004年得到了互連網工程工作群組(IETF)的批准,未來XMPP協議會理所當然的同Internet協議TCP/IP、HTTP、FTP、SMTP、POP一樣成為Internet標準。
Xmpp協議內容
XMPP中定義了三個角色,用戶端,伺服器,網關。通訊能夠在這三者的任意兩個之間雙向發生。伺服器同時承擔了用戶端資訊記錄,串連管理和資訊的 路由功能。網關承擔著與異構即時通訊系統的互聯互連,異構系統可以包括SMS(簡訊),MSN,ICQ等。基本的網路形式是單用戶端通過 TCP/IP串連到單伺服器,然後在之上傳輸XML。
Xmpp協議優點
1、分布式
XMPP網路的架構和電子郵件十分相像;XMPP核心協議通訊方式是先建立一個stream,XMPP以TCP傳遞XML資料流,沒有中央主伺服器。任何人都可以運行自己的XMPP伺服器,使個人及組織能夠掌控他們的即時傳訊體驗
2、安全
任何XMPP協議的伺服器可以獨立於公眾XMPP網路(例如在企業內部網路中),而使用SASL(1)及TLS(2)等技術的可靠安全性,已內建於核心XMPP技術規格中。
XMPP–>SASL–>TLS–>TCP–>IP
(1)SASL:SASL全稱Simple Authentication and Security Layer,是一種用來擴充C/S模式驗證能力的機制。在Postfix可以利用SASL來判斷使用者是否有權使用轉寄服務,或是辨認誰在使用你的伺服器。SASL提供了一個通用的方法為基於串連的協議增加驗證支援,而XMPP使用了一個普通的XML名字空間來滿足SASL的需要
(2)TLS:安全傳輸層協議(TLS)用於在兩個通訊應用程式之間提供保密性和資料完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。
3、可擴充
XML命名空間的威力可使任何人在核心協議的基礎上建造客制化的功能。
在XMPP 中,立即訊息和到場資訊都是基於XML 的結構化資訊,這些資訊以XML 節(XML Stanza)的形式在通訊實體間交換。XMPP 發揮了XML 結構化資料的通用傳輸層的作用,它將出席和上下文敏感資訊嵌入到XML 結構化資料中,從而使資料以極高的效率傳送給最合適的資源。基於XML 建立起來的應用具有良好的語義完整性和擴充性。
4、彈性佳
XMPP除了可用在即時通訊的應用程式,還能用在網路管理、內容供稿、協同工具、檔案分享權限設定、遊戲、遠程系統監控等,應用範圍相當廣泛。
5、多樣性
用XMPP協議來建造及布署即時應用程式及服務的公司及開放原始碼計劃分布在各種領域;用XMPP技術開發軟體,資源及支援的來源是多樣的,使得使你不會陷於被“綁架”的困境
6、分布式的網路架構
xmpp協議的實現,都是基於client/server的網路架構。但是xmpp協議本身並沒有限定非此架構不可,其和電子郵件的架構非常相似,但是其又不僅限於此,所以其應用範圍十分廣泛!
XMPP協議的組成
主要的XMPP 協議範本及當今應用很廣的XMPP 擴充
RFC 3920 XMPP:核心。定義了XMPP 協議架構下應用的網路架構,引入了XML Stream(XML 流)與XML Stanza(XML 節),並規定XMPP 協議在通訊過程中使用的XML 標籤。使用XML 標籤從根本上說是協議開放性與擴充性的需要。此外,在通訊的安全方面,把TLS 安全傳輸機制與SASL 認證機制引入到核心,與XMPP 進行無縫的串連,為協議的安全性、可靠性奠定了基礎。Core 文檔還規定了錯誤的定義及處理、XML 的使用規範、JID(Jabber Identifier,Jabber 標識符)的定義、命名規範等等。所以這是所有基於XMPP 協議的應用都必需支援的文檔。
XEP-0030 服務搜尋: 一個強大的用來測定XMPP 網路中的其它實體所支援特性的協議。
XEP-0115 實體效能: XEP-0030 的一個通過即時出席的定製,可以即時改變交變廣告功能。
XEP-0045 多人聊天: 一組定義參與和管理多使用者聊天室的協議,類似於Internet 的Relay Chat,具有很高的安全性。
XEP-0096 檔案傳輸: 定義了從一個XMPP 實體到另一個的檔案傳輸。
XEP-0124 HTTP 綁定: 將XMPP 綁定到HTTP 而不是TCP,主要用於不能夠持久的維持與伺服器TCP 串連的裝置。
XEP-0166 Jingle: 規定了多媒體通訊協商的整體架構。
XEP-0167 Jingle Audio Content Description Format: 定義了從一個XMPP 實體到另一個的語音傳輸過程。
XEP-0176 Jingle ICE(Interactive Connectivity Establishment)Transport: ICE傳輸機制,檔案解決了如何讓防火牆或是NAT(Network Address Translation)保護下的實體建立串連的問題。
XEP-0177 Jingle Raw UDP Transport: 純UDP 傳輸機制,檔案講述了如何在沒有防火牆且在同一網路下建立串連的。
XEP-0180 Jingle Video Content Description Format: 定義了從一個XMPP 實體到另一個的視頻傳輸過程。
XEP-0181 Jingle DTMF(Dual Tone Multi-Frequency)。
XEP-0183 Jingle Telepathy Transport Method。
Xmpp協議缺點
沒有位元據
XMPP協議的方式被編碼為一個單一的長的XML檔案,因此無法提供修改位元據。檔案傳輸使用HTTP協議,採用Base64(3)
(3)Base64是網路上最常見的用於傳輸8Bit位元組代碼的編碼方式之一
最佳化思路
Xmpp提供電子名片協議
vCard是一種現存的、廣泛使用的,使用者個人資訊儲存的標準,有點像是電子名片。基礎的功能是儲存和擷取使用者的電子身份,該資訊是用XML表示的,資料的儲存取決於所有現存的XMPP伺服器的實現
XMPP系統特點
客戶機/伺服器通訊模式、分布式網路、簡單的用戶端、XML的資料格式。
工作原理
(1)節點(client1)串連到伺服器;
(2)伺服器利用本地目錄系統中的認證對其認證;
(3)節點指定目標(client2)地址,讓伺服器告知目標狀態;
(4)伺服器尋找、串連並進行相互認證;
(5)節點之間(client1與client2)進行互動.
對話栗子:
用戶端(kuusipuu)串連到一個XMPP伺服器(amessage.de:5222/TCP),發送一條訊息(主題和內容均為“test 1449”)到另一個用戶端(tero),然後登出。
使用者發送串連請求到伺服器
kuusipuu:
<?xmlversion=‘1.0‘?><stream:stream xmlns:stream="http://etherx.jabber.org/streams"xmlns="jabber:client" to="amessage.de">
server對請求應答
amessage.de:
<stream:stream xmlns=‘jabber:client‘xmlns:stream=‘http://etherx.jabber.org/streams‘from=‘amessage.de‘ id=‘1461777714‘>
server利用本地目錄系統的認證對其認證
kuusipuu:
<iq type="set" id="auth_2" to="amessage.de" ><query xmlns="jabber:iq:auth"> <username>kuusipuu</username> <password>mypassword</password> <resource>Work</resource> </query></iq>
server將相應的結果返回給使用者端
amessage.de:
<iq from="amessage.de" id=‘auth_2‘ type=‘result‘/>
使用者發送訊息請求,並登出
kuusipuu:
<message to="[email protected]" > <subject>test 1449</subject> <body>test 1449</body></message><presence type="unavailable" > <status>Logged out</status></presence></stream:stream>
server返回登出資訊
amessage.de:
</stream:stream>
下篇文章主要從代碼的角度介紹基於xmpp的伺服器構成、用戶端、XMPP網關、XMPP地址格式、XMPP訊息格式等我最近學習的相關知識和總結,並簡單列舉相應的列子。
jessonlv——呂國棟原創文章,轉載請註明出處:我的部落格 :http://blog.csdn.net/jessonlv
XMPP——xmpp協議詳解、優點、缺點及最佳化思路