XMPP協議的工作原理

2021-07-03 02:41:13 字數 2334 閱讀 4575

xmpp

位址格式

乙個實體在xmpp網路結構中被稱為乙個接點,它有唯一的標示符jabber identifier(jid),即實體地址,用來表示乙個jabber使用者,但是也可以表示其他內容,例如乙個聊天室.乙個有效的jid包括一系列元素:(1)網域名稱(domain identifier);(2)節點(node identifier);(3)源(resource identifier).它的格式是

node@domain/resource

,node@domain

,類似電子郵件的位址格式.domain用來表示接點不同的裝置或位置,這個是可選的,例如a在server1上註冊了乙個使用者,使用者名為doom,那麼a的jid就是

doom@serverl

,在傳送訊息時,指明

doom@serverl

就可以了,resource可以不用指定,但a在登入到這個server時,fl的jid可能是

doom@serverl

、exodus(如果a用exodus軟體登入),也可能是

doom@serverl/psi

(如果a用psi軟體登入).資源只用來識別屬於使用者的位置或裝置等,乙個使用者可以同時以多種資源與同乙個xmpp伺服器連線。

xmpp訊息格式

xmpp中定義了       3個頂層xml元素: message、presence、iq,下面針對這三種元素進行介紹。

to :標識訊息的接收方。

from : 指傳送方的名字或標示(id)o

text: 此元素包含了要提交給目標使用者的資訊。

結構如下所示:

[email protected]/contact』

type =』chat』>

你好,在忙嗎

用來表明使用者的狀態,如:online、away、dnd(請勿打擾)等。當使用者離線或改變自己的狀態時,就會在stream的上下文中插入乙個presence元素,來表明自身的狀態.結構如下所示:

元素可以取下面幾種值:

probe :用於向接受訊息方法傳送特殊的請求

subscribe:當接受方狀態改變時,自動向傳送方傳送presence資訊。

< iq >

一種請求/響應機制,從乙個實體從傳送請求,另外乙個實體接受請求,並進行響應.例如,client在stream的上下文中插入乙個元素,向server請求得到自己的好友列表,server返回乙個,裡面是請求的結果.

主要的屬性是type。包括:

get :獲取當前域值。

set :設定或替換get查詢的值。

result :說明成功的響應了先前的查詢。

error: 查詢和響應中出現的錯誤。

結構如下所示:

xmpp工作機制:

例如:乙個終端名字是remeo,通過伺服器montague.lit與其他的使用者相連,其他的使用者

通過伺服器[email protected]建立連線。

第一步romeo開始通過傳送乙個stream包與伺服器montague.lit取得聯絡,這一步包含了鑑權,登入等等。

第二步romeo獲取了他的聯絡人列表,通過向伺服器montague.lit傳送字段請求,按照下面的協議。

jid=『[email protected]』/>

第三步romeo傳送了乙個presence請求到伺服器montague.lit,然後會將這個資訊廣播到他的所有好友。

/>

/>

第五步romeo和juliet開始交換資訊,進行聊天。

hi!> 

hi yourself!

以文件的觀點來看,客戶端或伺服器傳送的所有xml文字連綴在一起,從到

構成了乙個完整的xml文件。其中的stream標籤就是所謂的xml stream。在與

中間的那些...

這樣的xml元素就是所謂的xml stanza(xml節)。xmpp核心協議通訊的基本模式就是先建立乙個stream,然後協商一堆安全之類的東西,中間通訊過程就是客戶端傳送xml stanza,乙個接乙個的。伺服器根據客戶端傳送的資訊以及程式的邏輯,傳送xml stanza給客戶端。但是這個過程並不是一問一答的,任何時候都有可能從乙個方發信給另外一方。通訊的最後階段是

關閉流,關閉tcp/ip連線。

所以這種方式和傳統的http不一樣了!

傳統的http是請求之後,去伺服器回去資料

而xmpp是,伺服器給客戶端資料!

XMPP協議的原理介紹

xmpp是乙個典型的c s架構,而不是像大多數即時通訊軟體一樣,使用p2p客戶端到客戶端的架構,也就是說在大多數情況下,當兩個客戶端進行通訊時,他們的訊息都是通過伺服器傳遞的 也有例外,例如在兩個客戶端傳輸檔案時 採用這種架構,主要是為了簡化客戶端,將大多數工作放在伺服器端進行,這樣,客戶端的工作就...

XMPP協議實現原理介紹

本文介紹xmpp協議原理及相關資訊。xmpp協議簡介 xmpp extensible messageing and presence protocol 可擴充套件訊息與存在協議 是目前主流的四種im im instant messaging,即時訊息 協議之一,其他三種分別為 即時資訊和空間協議 i...

XMPP協議實現原理介紹

本文介紹xmpp協議原理及相關資訊。xmpp協議簡介 xmpp extensible messageing and presence protocol 可擴充套件訊息與存在協議 是目前主流的四種im im instant messaging,即時訊息 協議之一,其他三種分別為 即時資訊和空間協議 i...