我的家園

          我的家園

          XMPP協(xié)議

          Posted on 2012-04-15 16:37 zljpp 閱讀(235) 評論(0)  編輯  收藏

          XMPP(Extensible Messageing and Presence Protocol)可擴展消息與存在協(xié)議,是目前主流的四種IM(即時消息)協(xié)議之一,其它三種分別為:即時信息和空間協(xié)議(IMPP)、空間和即時信息協(xié)議(PRIM)、針對即時通訊和空間平衡擴充的進程開始協(xié)議SIP(SIMPLE)。
              在這四種協(xié)議中,XMPP是最靈活的。

          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)添加功能。


          1、什么是XMPP ?
              XMPP的前身是Jabber,一個開源形式組織產(chǎn)生的網(wǎng)絡(luò)即時通信協(xié)議。XMPP目前被IETF國際標準組織完成了標準化工作。標準化的核心結(jié)果分為兩部分:
          (1)核心的XML流傳輸協(xié)議
          (2)基于XML流傳輸?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等有功能完整,完善等先進性。


          2、XMPP的基本網(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。


          3、XMPP通過TCP傳輸什么
              傳輸?shù)氖桥c即時通訊相關(guān)的指令。在以前這些命令要么用二進制的形式發(fā)送(比如QQ),要么用純文本指令加空格加參數(shù)加換行苻的方式發(fā)送(比如MSN),而 XMPP傳輸?shù)募磿r通訊指令的邏輯與以往相仿,只是協(xié)議的形式變成了XML格式的純文本。這不但使得容易解析,人也容易閱讀了,方便了開發(fā)和查錯。而 XMPP的核心部分就是一個在網(wǎng)絡(luò)上分片斷發(fā)送XML的流協(xié)議。這個流協(xié)議是XMPP的即時通訊指令的傳遞基礎(chǔ),也是一個非常重要的可以被進一步利用的網(wǎng)絡(luò)基礎(chǔ)協(xié)議。所以可以說,XMPP用TCP傳的是XML流。


          4、XMPP協(xié)議示例
          客戶端:
          to='example.com'
          xmlns='jabber:client'
          xmlns:stream='http://etherx.jabber.org/streams'
          version='1.0'>
          服務(wù)器:
          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='en'>

            客戶端: <body>Art thou not Romeo, and a Montague?</body>

            客戶端:</message>

            服務(wù)器:

            <message from='romeo_example_net'

            to='juliet_example_com'

            xml:lang='en'>

            服務(wù)器:<body>Neither, fair saint, if either thee dislike.</body>

            服務(wù)器:</message>

            客戶端:</stream:stream>

            服務(wù)器:</stream:stream>


          以文檔的觀點來看,客戶端或服務(wù)器發(fā)送的所有XML文本連綴在一起,從到構(gòu)成了一個完整的XML文檔。其中的stream標簽就是所謂的XML Stream。在與中間的那些…這樣的XML元素就是所謂的XML Stanza(XML節(jié))。XMPP核心協(xié)議通信的基本模式就是先建立一個stream,然后協(xié)商一堆安全之類的東西,中間通信過程就是客戶端發(fā)送XML Stanza,一個接一個的。服務(wù)器根據(jù)客戶端發(fā)送的信息以及程序的邏輯,發(fā)送XML Stanza給客戶端。但是這個過程并不是一問一答的,任何時候都有可能從一個方發(fā)信給另外一方。通信的最后階段是關(guān)閉流,關(guān)閉TCP/IP連接。
          采用XMPP協(xié)議的即時通信應(yīng)用,Google Talk是基于XMPP協(xié)議,而且它還允許其它IM自由使用XMPP協(xié)議。如此一來,任何IM供應(yīng)商在遵循XMPP協(xié)議的前提下,都可以隨時與Google Talk實現(xiàn)免費連接.


          5、XMPP系統(tǒng)特點

          (1) 客戶機/服務(wù)器通信模式

          (2) 分布式網(wǎng)絡(luò)

          (3) 簡單的客戶端

          (4) XML的數(shù)據(jù)格式


          XMPP協(xié)議通俗理解,XMPP 其實是一種很類似于http協(xié)議的一種數(shù)據(jù)傳輸協(xié)議,它的過程就如同“解包裝--〉包裝”的過程,用戶只需要明白它接受的類型,并理解它返回的類型,就可以很好的利用xmpp來進行數(shù)據(jù)通訊。



          主流的四種IM通訊協(xié)議簡介

          IMPP:IMPP主要定義必要的協(xié)議和數(shù)據(jù)格式,用來構(gòu)建一個具有空間接收、發(fā)布能力的即時信息系統(tǒng)。到目前為止,這個組織已經(jīng)出版了三個草案RFC,但主要的有兩個:一個是針對站點空間和即時通訊模型的(RFC 2778);另一個是針對即時通訊/空間協(xié)議需求條件的(RFC2779)。RFC2778是一個資料性質(zhì)的草案,定義了所有presence和IM服務(wù)的原理。RFC2779定義了IMPP的最小需求條件。另外,這個草案還就presence服務(wù)定義了一些條款,如運行的命令、信息的格式,以及 presence服務(wù)器如何把presence的狀態(tài)變化通知給客戶。


          SIMPLE:SIMPLE是目前為止制定的較為完善的一個。SIMPLE和XMPP兩個協(xié)議,都符合RFC2778和RFC2779 。SIMPLE計劃利用SIP來發(fā)送presence信息。SIP是IETF中為終端制定的協(xié)議。SIP一般考慮用在建立語音通話中,一旦連接以后,依靠如實時協(xié)議(RTP)來進行實際上的語音發(fā)送。但SIP不僅僅能被用在語音中,也可以用于視頻。SIMPLE被定義為建立一個IM進程的方法。 SIMPLE在2002年夏季得到額外的信任,目前,微軟和IBM都致力于在它們的即時通訊系統(tǒng)中實現(xiàn)這個協(xié)議。 SIMPLE小組致力于進程模式的操作,這將提升運行效率,使基于SIP的機制能夠進行會議和三方電話交談控制,也考慮到能和未來提供的許多新特性實現(xiàn)兼容并提升表現(xiàn)能力。有了進程模式,SIMPLE使用SIP來建立一次進程,再利用SDP(進程描述協(xié)議)來實際傳輸IM數(shù)據(jù)。


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 凤冈县| 常熟市| 沙雅县| 禹城市| 潢川县| 来安县| 常熟市| 丹寨县| 开封市| 玛曲县| 东安县| 涡阳县| 库尔勒市| 灵川县| 班戈县| 福清市| 恩施市| 华阴市| 河曲县| 阿尔山市| 安图县| 诏安县| 故城县| 太湖县| 襄垣县| 磴口县| 台中县| 腾冲县| 谢通门县| 肃南| 扶风县| 邹城市| 新巴尔虎左旗| 卢氏县| 辽宁省| 岳阳市| 翼城县| 罗田县| 车致| 宜阳县| 外汇|