原創:
xmpp協議簡介
一、xmpp(extensible messageing and presence protocol:可擴充套件訊息與存在協議)是目前主流的四種im(im:instant messaging,即時訊息)協議之一,
其他三種分別為:即時資訊和空間協議(impp)、空間和即時資訊協議(prim)、針對即時通訊和空間平衡擴充的程序開始協議sip(******)。
二、在這四種協議中,xmpp是最靈活的。xmpp是一種基於xml的協議,它繼承了在xml環境中靈活的發展性。因此,基於xmpp的應用具有超強的可擴充套件性。經過擴充套件以後的xmpp可以通過傳送擴充套件的資訊來處理使用者的需求,以及在xmpp的頂端建立如內容發布系統和基於位址的服務等應用程 序。而且,xmpp包含了針對伺服器端的軟體協議,使之能與另乙個進行通話,這使得開發者更容易建立客戶應用程式或給乙個配好系統新增功能。
1. 什麼是xmpp ?
xmpp的核心xml流傳輸協議的定義使得xmpp能夠在乙個比以往網路通訊協議更規範的平台上,借助於xml易於解析和閱讀的特性,使得xmpp的協議能夠非常漂亮。
xmpp的即時通訊擴充套件應用是根據ietf在這之前對即時通訊的乙個抽象定義的,與其他也已得到廣泛使用的即時通訊協議,諸如aim,qq等有功能完整,完善等先進性。
2. xmpp的基本網路結構是怎樣的?
xmpp中定義了三個角色,客戶端,伺服器,閘道器。
通訊能夠在這三者的任意兩個之間雙向發生,伺服器同時承擔了客戶端資訊記錄,連線管理和資訊的路由功能。
閘道器承擔著與異構即時通訊系統的互聯互通,異構系統可以包括sms(簡訊),msn,icq等。基本的網路形式是單客戶端通過tcp/ip連線到單伺服器,然後在之上傳輸xml。
3. xmpp通過tcp傳什麼了?
傳輸的是與即時通訊相關的指令。以前這些命令要麼用2進製的形式傳送(比如qq)要麼用純文字指令加空格加引數加換行苻的方式傳送(比如msn)。而xmpp傳輸的即時通訊指令的邏輯與以往相仿,只是協議的形式變成了xml格式的純文字。這不但使得解析容易了,人也容易閱讀了,更方便了開發和查錯。
xmpp協議工作原理:
1、所有從乙個client到另乙個client的jabber訊息和資料都要通過xmpp servers。
2、client連線到servers。
3、servers利用本地目錄系統的證書對其認證。
4、client定製目標位址,讓servers告知目標狀態。
5、servers查詢,連線並進行相互認證。
6、client間進行交換。
1) 統一的jid(jabber identifire)
2) jid[node"@"]domain["/"resource]
比如:[email protected]/res
domain :伺服器的網域名稱
node : 使用者名稱
resource :屬於使用者的位置或裝置
4) 乙個使用者可以同時以多種資源與同乙個xmpp伺服器連線
5. xmpp訊息格式: xml訊息格式的定義
xmpp xml 包括3個元素
例如:說明:
presence :此元素確定使用者的狀態
eg:[email protected]/contact
[email protected]/contact>
online
message : 用於2個使用者之間傳送資訊
eg:[email protected]/contact
type="chat">
hello
iq : 資訊/請求,是乙個請求-響應機制,管理xmpp伺服器上2個使用者的轉換,
允許他們通過相應的xml格式的查詢和響應
eg:[email protected]/contact
id="id1" type="result">
iq的主要屬性:
1、type:包括 get獲取當前域值
2、set:設定或替換get查詢的值
3、result :說明成功的響應了先前的查詢
4、error:查詢和相應中出現的錯誤
6. 核心的xml流傳輸協議
基於xml freeeim流傳輸的即時通訊擴充套件應用
xmpp的核心xml流傳輸協議的定義使得xmpp能夠在乙個比以往網路通訊協議更規範的平台上,
借助於xml易於解析和閱讀的特性,使得xmpp的協議能夠非常漂亮。
xmpp的即時通訊擴充套件應用部分是根據ietf在這之前對即時通訊的乙個抽象定義的,
與其他也已得到廣泛使用的即時通訊協議,諸如aim,qq等有功能完整,完善等先進性。
xmpp的官方文件時rfc 3920.
7. xmpp應用示例
舉個例子看看所謂的xml流是什麼樣子的?
客戶端:
<?xml version='1.0'?>
伺服器:
<?xml version='1.0'?>
...其他通訊...
客戶端:
客戶端:
art thou not romeo, and a montague?
客戶端:
伺服器:
伺服器:
neither, fair saint, if either thee dislike.
伺服器:
客戶端:
伺服器:
以文件的觀點來看,客戶端或伺服器傳送的所有xml文字連綴在一起,從到構成了乙個完整的xml文件。其中的stream標籤就是所謂的xml stream。在與中間的那些...這樣的xml元素就是所謂的xml stanza(xml節)。xmpp核心協議通訊的基本模式就是先建立乙個stream,然後協商一堆安全之類的東西,中間通訊過程就是客戶端傳送xml stanza,乙個接乙個的。伺服器根據客戶端傳送的資訊以及程式的邏輯,傳送xml stanza給客戶端。但是這個過程並不是一問一答的,任何時候都有可能從一方發信給另外一方。通訊的最後階段是關閉流,關閉tcp/ip連線。
8. xmpp系統特點:
其實xmpp 是一種很類似於http協議的一種資料傳輸協議,它的過程就如同「解包裝--〉包裝」的過程,使用者只需要明白它接受的型別,並理解它返回的型別,就可以很好的利用xmpp來進行資料通訊。
XMPP協議實現原理介紹
本文介紹xmpp協議原理及相關資訊。xmpp協議簡介 xmpp extensible messageing and presence protocol 可擴充套件訊息與存在協議 是目前主流的四種im im instant messaging,即時訊息 協議之一,其他三種分別為 即時資訊和空間協議 i...
XMPP協議的原理介紹
xmpp是乙個典型的c s架構,而不是像大多數即時通訊軟體一樣,使用p2p客戶端到客戶端的架構,也就是說在大多數情況下,當兩個客戶端進行通訊時,他們的訊息都是通過伺服器傳遞的 也有例外,例如在兩個客戶端傳輸檔案時 採用這種架構,主要是為了簡化客戶端,將大多數工作放在伺服器端進行,這樣,客戶端的工作就...
XMPP協議實現原理介紹
本文介紹xmpp協議原理及相關資訊。xmpp協議簡介 xmpp extensible messageing and presence protocol 可擴充套件訊息與存在協議 是目前主流的四種im im instant messaging,即時訊息 協議之一,其他三種分別為 即時資訊和空間協議 i...