XMPP基本內容簡單介紹

即時通信技術簡單介紹node


   即時通信技術(IM)支持用戶在線實時交談。假設要發送一條信息,用戶需要打開一個小窗體,以便讓用戶及其朋友在當中輸入信息並讓交談兩方都看到交談的內容.有不少的IM系統,如AOL IMYahoo IM MSN以及QQ。它們最大的差異在於各自通信協議的實現,因此即時通信技術的核心在於它的傳輸協議。瀏覽器

     協議用來講明信息在網絡上怎樣傳輸。假設有了統一的傳輸協議,那麼應當可以實現各個IM之間的直接通信,爲了建立即時通信的統一標準,眼下已經出現過的IM協議包含:IETF的對話初始協議(SIP)和即時通信對話初始協議和表示擴展協議(SIMPLE)、應用交換協議(APEX)、顯示和即時通信協議(PRIM)及基於XML且開放的可擴展通信和表示協議(XMPP)協議(常稱爲 Jabber 協議).安全

    人們屢次努力,試圖統一各大主要IM供應商的標準(AOLYahoo Microsoft)。但無一成功,且每一種IM仍然繼續使用本身所擁有的協議.網絡


XMPP起源架構


    XMPP是基於XML的協議,用於即時消息(IM)以及在線現場探測。最初,XMPP做爲一個框架開發。目標是支持企業環境內的即時消息傳遞和聯機狀態應用程序。當時的即時消息傳遞網絡是私有的,不適合企業使用。XMPP前身是Jabber1998年),是一個開源組織定義的網絡即時通訊協議。框架

    XMPP是一個分散型通訊網絡,這意味着。僅僅要網絡基礎設施贊成,不論什麼XMPP用戶都可以向其它不論什麼XMPP用戶傳遞消息。多個XMPPserver也可以經過一個專門的server-server協議相互通訊,提供了建立分散型社交網絡和協做框架的可能性dom

       雖然XMPP的出現是爲了知足我的-我的即時消息傳遞的要求。但它全然沒必要侷限於此任務。分佈式


XMPP概述ide


   XMPP是一種基於XML的協議,它繼承了在XML環境中靈活的發展性。post

這代表XMPP是可擴展的。可以經過發送擴展的信息來處理用戶的需求,以及在 XMPP的頂端創建如內容公佈系統和基於地址的服務等應用程序。

而且,XMPP包括了針對server端的軟件協議。使之能與還有一個進行通話,這使得開發人員更easy創建客戶應用程序或給一個配置好的系統加入功能。XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通訊協議更規範的平臺上。藉助於XML易於解析和閱讀的特性,使得XMPP的協議能夠很美麗

    XMPP的即時通信擴展應用部分是依據IETF在這以前對即時通信的一個抽象定義的,與其它業已獲得普遍使用的即時通信協議。諸如AIMQQ等有功能完整,無缺等先進性

    XMPP的擴展協議Jingle使得其支持語音和視頻。眼下iOS尚不支持

    XMPP的官方文檔時RFC3920

    XMPP協議之前是Google力推的即時通訊協議。其表明做品是GTalk


XMPP定義


    MPPThe Extensible Messaging and Presence Protocol(可擴展通信和表示協議)

    XMPP可用於服務類實時通信、表示和需求響應服務中的XML數據元流式傳輸XMPPJabber協議爲基礎,而Jabber是即時通信中常用的開放式協議

    XMPP是基於XML的協議,用於即時消息(IM)以及在線現場探測。促進server之間的準即時操做。

這個協議可能終於贊成因特網用戶向因特網上的其它不論什麼人發送即時消息,即便其操做系統和瀏覽器不一樣.


XMPP的基本結構


    XMPP是一個典型的C/S架構。而不是像大多數即時通信軟件同樣,使用P2Pclient到client的架構,也就是說在大多數狀況下。當兩個client進行通信時,他們的消息都是經過server傳遞的。採用這樣的架構,主要是爲了簡化client。將大多數工做放在server端進行。

    XMPP中定義了三個角色,client,server。網關。通訊能夠在這三者的隨意兩個之間雙向發生。

       server同一時候承擔了client信息記錄,鏈接管理和信息的路由功能.

       網關承擔着與異構即時通訊系統的互聯互通,異構系統可以包含SMS(短信),MSNICQ

       主要的網絡形式是單client經過TCP/IP鏈接到單server,而後在之上傳輸XML.


XMPP工做原理


   1:節點鏈接到server

     2:server利用本地文件夾系統中的證書對其認證

     3:節點指定目標地址,讓server告知目標狀態

     4:server查找、鏈接並進行相互認證

     5:節點之間進行交互


XMPP工做原理示意圖

     


傳輸內容


   XMPP應用傳輸的是與即時通信相關的指令。在曾經這些命令要麼用二進制的形式發送(比方QQ),要麼用純文本指令加空格加參數加換行符的方式發送(比方MSN

     而XMPP傳輸的即時通信指令的邏輯與以往相仿,僅僅是協議的形式變成了XML格式的純文本。

這不但使得解析easy了。人也easy閱讀了,方便了開發和查錯

     而XMPP的核心部分就是一個在網絡上分片斷髮送XML的流協議。

這個流協議是XMPP的即時通信指令的傳遞基礎,也是一個很重要的可以被進一步利用的網絡基礎協議。可以說,XMPPTCP傳的是XML.


XMPP 通訊的結構(XMPP——JID


   每個 XMPPclient用戶必須擁有一個全局唯一標識符。基於歷史緣由,這些標識符稱爲 Jabber IDJID

鑑於協議的分佈式特徵,JID應包括聯繫用戶所需的所有信息,JID的結構相似於電子郵件地址,但不要求 JID同一時候也是有效的電子郵件收件人。

     client和server節點。被統稱爲 XMPP實體,都擁有JID一個有效的JID包含一系列元素:(1)域名(domain identifier)(2)節點(node identifier)(3)(resource identifier)它的格式是node@domain/resourceresource這個是可選的。resource就是用於區分同一用戶不一樣端登錄。

     好比:SomeCorp公司的員工 John Doe可能擁有JIDJohn.Doe@somecorp.com。當中somecorp.com SomeCorp公司的XMPPserver的地址,John.DoeJohn Doe的username。

還可以使用JID鏈接到其它資源。這贊成在一個XMPP實體標識符以外進一步處理拓展


通訊類別及公共XML屬性


    使用XMPP的實時消息傳遞系統包括三大通訊類別:

    消息傳遞,當中數據在有關各方之間傳輸

    聯機狀態,贊成用戶廣播其在線狀態和可用性

    信息/查詢請求,它贊成XMPP實體發起請求並從還有一個實體接收響應


以上三種類型的XMPP節都擁有下面公共屬性:


  from:源XMPP實體的JID

  to:目標接收者的JID

  id:當前對話的可選標識符

  type:節的可選子類型

  xml:lang:假設內容是人們可讀的。則爲消息語言的描寫敘述.

基於 XMPP的傳輸數據發生在一些 XML流上,默認在port5222上操做。這些 XML流其實是兩個完整的 XML文檔。每個文檔相應一個通訊方向。一旦會話創建。stream元素將打開。

這個元素將封裝整個通訊文檔。

而後,一些節被注入這個文檔的第二層。最後,一旦通訊結束,stream元素將關閉,造成一個完整的文檔。


XMPP協議的組成


基本的XMPP協議範本及當今應用很是廣的XMPP擴展:

RFC3920 XMPP:核心。定義了XMPP協議框架下應用的網絡架構。引入了XML StreamXML流)與XML StanzaXML節),並規定XMPP協議在通訊過程當中使用的XML標籤。

使用XML標籤從根本上說是協議開放性與擴展性的需要。此外,在通訊的安全方面,把TLS安全傳輸機制與SASL認證機制引入到內核,與XMPP進行無縫的鏈接,爲協議的安全性、可靠性奠基了基礎。Core文檔還規定了錯誤的定義及處理、XML的使用規範、JIDJabber IdentifierJabber標識符)的定義、命名規範等等。

因此這是所有基於XMPP協議的應用都必需支持的文檔。

RFC3921:用戶成功登錄到server以後。公佈更新本身的在線好友管理、發送即時聊天消息等業務。所有的這些業務都是經過三種主要的XML節來完畢的:IQ StanzaIQ節), Presence StanzaPresence節), Message StanzaMessage節)。RFC3921還對堵塞策略進行了定義,定義是多種堵塞方式。可以說,RFC3921RFC3920的充分補充。兩個文檔結合起來。就造成了一個主要的即時通訊協議平臺,在這個平臺上可以開發出各類各樣的應用。

XEP-0030服務搜索。一個強大的用來測定XMPP網絡中的其餘實體所支持特性的協議。

XEP-0115實體性能。XEP-0030的一個經過即時出席的定製。可以實時改變交變廣告功能。

XEP-0045多人聊天。一組定義參與和管理多用戶聊天室的協議,相似於InternetRelay Chat,具備很是高的安全性。

XEP-0096文件傳輸。

定義了從一個XMPP實體到還有一個的文件傳輸。

XEP-0124 HTTP綁定。將XMPP綁定到HTTP而不是TCP。主要用於不能夠持久的維持與serverTCP鏈接的設備。

XEP-0166 Jingle。規定了多媒體通訊協商的整體架構。

XEP-0167 Jingle Audio Content Description Format。定義了從一個XMPP實體到還有一個的語音傳輸過程。

XEP-0176 Jingle ICEInteractive Connectivity EstablishmentTransportICE傳輸機制,文件攻克了怎樣讓防火牆或是NATNetwork Address Translation)保護下的實體創建鏈接的問題。

XEP-0177 Jingle Raw UDP Transport。純UDP傳輸機制,文件講述了怎樣在沒有防火牆且在同一網絡下創建鏈接的。

XEP-0180 Jingle Video Content Description Format。定義了從一個XMPP實體到還有一個的視頻傳輸過程。

XEP-0181 Jingle DTMFDual Tone Multi-Frequency)。

XEP-0183 Jingle Telepathy Transport Method


XMPP 要點


1. client(C) 和server端(S) 經過TCP鏈接5222port進行全雙工通訊.

2. XMPP 信息均包括在 XML streams中.一個XMPP會話, 開始於<stream> 標籤, 並結束於</stream>標籤.所有其它的信息都位於這倆標籤之間.

3. 出於安全目的考慮, 開始<stream>以後, 興許的內容會被適度的使用 Transpor Layer Security (TLS) 協商傳輸 和強制性的 Simple Authentication 和 Security Layer (SASL) 協商傳輸。

4. SASL協商完畢後, 一個新的 stream 將會被迅速打開, 它將會更加安全和保密.


XMPP的優缺點


長處:開放,標準(XMPP的技術規格已被定義在RFC3920RFC3921,證明可用,分散,安全,可擴展

缺點:數據負載太重,沒有二進制傳輸


XMPP的傳輸小結


XMPP是一種相似於HTTP協議的一種傳輸數據協議,其過程就如同解包裝--〉包裝的過程。

僅僅需要理解其接收的類型及返回的類型。便可以很是好的利用XMPP來進行數據通信.

XMPP官方站點——http://xmpp.org


推薦:

http://blog.csdn.net/woaifen3344/article/details/44559733

相關文章
相關標籤/搜索