百科解釋
1、什么是XMPP ? XMPP(可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議)是基于可擴(kuò)展標(biāo)記語言(XML)的協(xié)議,它用于即時(shí)消息(IM)以及在線現(xiàn)場(chǎng)探測(cè)。它在促進(jìn)服務(wù)器之間的準(zhǔn)即時(shí)操作。這個(gè)協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時(shí)消息,即使其操作系統(tǒng)和瀏覽器不同。 XMPP的前身是Jabber,一個(gè)開源形式組織產(chǎn)生的網(wǎng)絡(luò)即時(shí)通信協(xié)議。XMPP目前被IETF國際標(biāo)準(zhǔn)組織完成了標(biāo)準(zhǔn)化工作。標(biāo)準(zhǔn)化的核心結(jié)果分為兩部分; 核心的XML流傳輸協(xié)議 基于XML流傳輸?shù)募磿r(shí)通訊擴(kuò)展應(yīng)用 XMPP的核心XML流傳輸協(xié)議的定義使得XMPP能夠在一個(gè)比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺(tái)上。借助于XML易于解析和閱讀的特性,使得XMPP的協(xié)議能夠非常漂亮。 XMPP的即時(shí)通訊擴(kuò)展應(yīng)用部分是根據(jù)IETF在這之前對(duì)即時(shí)通訊的一個(gè)抽象定義的,與其他業(yè)已得到廣泛使用的即時(shí)通訊協(xié)議,諸如AIM,QQ等有功能完整,完善等先進(jìn)性。 XMPP的擴(kuò)展協(xié)議Jingle使得其支持語音和視頻。 2、XMPP的基本網(wǎng)絡(luò)結(jié)構(gòu)是怎樣的? XMPP中定義了三個(gè)角色,客戶端,服務(wù)器,網(wǎng)關(guān)。通信能夠在這三者的任意兩個(gè)之間雙向發(fā)生。服務(wù)器同時(shí)承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信),MSN,ICQ等;镜木W(wǎng)絡(luò)形式是單客戶端通過TCP/IP連接到單服務(wù)器,然后在之上傳輸XML。 3、XMPP通過TCP傳什么了? 傳輸?shù)氖桥c即時(shí)通訊相關(guān)的指令。在以前這些命令要么用2進(jìn)制的形式發(fā)送(比如QQ),要么用純文本指令加空格加參數(shù)加換行苻的方式發(fā)送(比如MSN)。而XMPP傳輸?shù)募磿r(shí)通訊指令的邏輯與以往相仿,只是協(xié)議的形式變成了XML格式的純文本。這不但使得解析容易了,人也容易閱讀了,方便了開發(fā)和查錯(cuò)。而XMPP的核心部分就是一個(gè)在網(wǎng)絡(luò)上分片斷發(fā)送XML的流協(xié)議。這個(gè)流協(xié)議是XMPP的即時(shí)通訊指令的傳遞基礎(chǔ),也是一個(gè)非常重要的可以被進(jìn)一步利用的網(wǎng)絡(luò)基礎(chǔ)協(xié)議。所以可以說,XMPP用TCP傳的是XML流。 4、舉個(gè)例子看看所謂的XML流是什么樣子的? 客戶端:<?xml version=&#039;1.0&#039;?> <stream:stream to=&#039;example.com&#039; xmlns=&#039;jabber:client&#039; xmlns:stream=&#039;http://etherx.jabber.org/streams&#039; version=&#039;1.0&#039;> 服務(wù)器:<?xml version=&#039;1.0&#039;?> <stream:stream from=&#039;example.com&#039; id=&#039;someid&#039; xmlns=&#039;jabber:client&#039; xmlns:stream=&#039;http://etherx.jabber.org/streams&#039; version=&#039;1.0&#039;> ...其他通信... 客戶端:<message from=&#039;juliet@example.com&#039; to=&#039;romeo@example.net&#039; xml:lang=&#039;en&#039;> 客戶端: <body>Art thou not Romeo, and a Montague?</body> 客戶端:</message> 服務(wù)器:<message from=&#039;romeo@example.net&#039; to=&#039;juliet@example.com&#039; xml:lang=&#039;en&#039;> 服務(wù)器:<body>Neither, fair saint, if either thee dislike.</body> 服務(wù)器:</message> 客戶端:</stream:stream> 服務(wù)器:</stream:stream> 以文檔的觀點(diǎn)來看,客戶端或服務(wù)器發(fā)送的所有XML文本連綴在一起,從<stream>到</stream>構(gòu)成了一個(gè)完整的XML文檔。其中的stream標(biāo)簽就是所謂的XML Stream。在<stream>與</stream>中間的那些<message>...</message>這樣的XML元素就是所謂的XML Stanza(XML節(jié))。XMPP核心協(xié)議通信的基本模式就是先建立一個(gè)stream,然后協(xié)商一堆安全之類的東西,中間通信過程就是客戶端發(fā)送XML Stanza,一個(gè)接一個(gè)的。服務(wù)器根據(jù)客戶端發(fā)送的信息以及程序的邏輯,發(fā)送XML Stanza給客戶端。但是這個(gè)過程并不是一問一答的,任何時(shí)候都有可能從一個(gè)方發(fā)信給另外一方。通信的最后階段是</stream>關(guān)閉流,關(guān)閉TCP/IP連接。
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助