XMPP協議原理及相關資訊

2021-08-27 07:49:40 字數 3113 閱讀 3771

原創:

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

[email protected]

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...