XMPP協(xié)議(IM)

XMPP概念(可擴展通訊和表示協(xié)議)

XMPP是一種基于標準通用標記語言的子集XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性。因此,基于XMPP的應(yīng)用具有超強的可擴展性。經(jīng)過擴展以后的XMPP可以通過發(fā)送擴展的信息來處理用戶的需求,以及在XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序。而且,XMPP包含了針對服務(wù)器端的軟件協(xié)議,使之能與另一個進行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個配好系統(tǒng)添加功能。

定義

全稱:可擴展通訊和表示協(xié)議

簡介:可擴展通訊和表示協(xié)議 (XMPP) 可用于服務(wù)類實時通訊、表示和需求響應(yīng)服務(wù)中的XML數(shù)據(jù)元流式傳輸。XMPP以Jabber協(xié)議為基礎(chǔ),而Jabber是即時通訊中常用的開放式協(xié)議。XMPP is the IETF's formalization of the base XML streaming protocols for instant messaging and presence developed within the Jabber open-source community in 1999

XMPP(可擴展消息處理現(xiàn)場協(xié)議)是基于可擴展標記語言(XML)的協(xié)議,它用于即時消息(IM)以及在線現(xiàn)場探測。它在促進服務(wù)器之間的準即時操作。這個協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時消息,即使其操作系統(tǒng)和瀏覽器不同。

XMPP的前身是Jabber,一個開源形式組織產(chǎn)生的網(wǎng)絡(luò)即時通信協(xié)議。XMPP目前被IETF國際標準組織完成了標準化工作。標準化的核心結(jié)果分為兩部分;

核心的XML流傳輸協(xié)議

基于XMLFreeEIM流傳輸?shù)募磿r通訊擴展應(yīng)用

XMPP的核心XML流傳輸協(xié)議的定義使得XMPP能夠在一個比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺上。借助于XML易于解析和閱讀的特性,使得XMPP的協(xié)議能夠非常漂亮。

XMPP的即時通訊擴展應(yīng)用部分是根據(jù)IETF在這之前對即時通訊的一個抽象定義的,與其他業(yè)已得到廣泛使用的即時通訊協(xié)議,諸如AIM,QQ等有功能完整,完善等先進性。

XMPP的擴展協(xié)議Jingle使得其支持語音和視頻。

XMPP的官方文檔是RFC 3920.

基本網(wǎng)絡(luò)結(jié)構(gòu)

XMPP中定義了三個角色,客戶端,服務(wù)器,網(wǎng)關(guān)。通信能夠在這三者的任意兩個之間雙向發(fā)生。服務(wù)器同時承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信),MSN,ICQ等。基本的網(wǎng)絡(luò)形式是單客戶端通過TCP/IP連接到單服務(wù)器,然后在之上傳輸XML。

功能

傳輸?shù)氖桥c即時通訊相關(guān)的指令。在以前這些命令要么用2進制的形式發(fā)送(比如QQ),要么用純文本指令加空格加參數(shù)加換行符的方式發(fā)送(比如MSN)。而XMPP傳輸?shù)募磿r通訊指令的邏輯與以往相仿,只是協(xié)議的形式變成了XML格式的純文本。

具體應(yīng)用

以文檔的觀點來看,客戶端或服務(wù)器發(fā)送的所有XML文本連綴在一起,從<stream>到</stream>構(gòu)成了一個完整的XML文檔。其中的stream標簽就是所謂的XML Stream。在<stream>與</stream>中間的那些<message>...</message>這樣的XML元素就是所謂的XML Stanza(XML節(jié))。XMPP核心協(xié)議通信的基本模式就是先建立一個stream,然后協(xié)商一堆安全之類的東西,中間通信過程就是客戶端發(fā)送XML Stanza,一個接一個的。服務(wù)器根據(jù)客戶端發(fā)送的信息以及程序的邏輯,發(fā)送XML Stanza給客戶端。但是這個過程并不是一問一答的,任何時候都有可能從一方發(fā)信給另外一方。通信的最后階段是</stream>關(guān)閉流,關(guān)閉TCP/IP連接。

目前不少IM應(yīng)用系統(tǒng)如:Google公司的Google Talk以及Jive Messenger等開源應(yīng)用,都是遵循XMPP協(xié)議集而設(shè)計實現(xiàn)的,這些應(yīng)用具有很好的互通性。

系統(tǒng)特點

  • 客戶機/服務(wù)器通信模式;
  • 分布式網(wǎng)絡(luò);
  • 簡單的客戶端;
  • 標準通用標記語言的子集XML的數(shù)據(jù)格式。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • XMPP簡介 XMPP協(xié)議簡介 XMPP協(xié)議(Extensible Messaging and PresenceP...
    不規(guī)則先生閱讀 6,367評論 2 31
  • 關(guān)于XMPP最權(quán)威的講解:http://www.jabbercn.org/RFC3920(這個才是最權(quán)威的,下面文...
    隨風(fēng)飄蕩的小逗逼閱讀 1,533評論 1 5
  • 要學(xué)習(xí)基于XMPP協(xié)議的IM開發(fā),首先要熟悉XMPP協(xié)議本身。 XMPP協(xié)議的組成主要的XMPP 協(xié)議范本及當(dāng)今應(yīng)...
    RichieQ閱讀 1,909評論 0 6
  • 大學(xué)學(xué)習(xí)網(wǎng)絡(luò)基礎(chǔ)的時候老師講過,網(wǎng)絡(luò)由下往上分為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層和應(yīng)用層。通過初...
    西門丨不吹雪閱讀 1,814評論 0 18
  • 前面關(guān)于即時通訊基礎(chǔ)Socket,大家學(xué)習(xí)使用XMPP之前可以先看看即時通訊系列之Socket簡介 前言 前段時間...
    音符上的碼字員閱讀 4,281評論 3 16