關於xmpp的一些解釋

2021-07-02 06:34:47 字數 3805 閱讀 6025



一、定義

xmpp 是一種很類似於http協議的一種資料傳輸協議,它的過程就如同「解包裝--〉包裝」的過程,使用者只需要明白它接受的型別,並理解它返回的型別,就可以很好的利用xmpp來進行資料通訊。

xmpp的核心協議的定義使得xmpp能夠在乙個比以往網路通訊協議更規範的平台上。借助於xml易於解析和閱讀的特性,使得xmpp的協議能夠非常漂亮。

xmpp的擴充套件協議是根據ietf在這之前對即時通訊的乙個抽象定義的,與其他業已得到廣泛使用的即時通訊協議,諸如aim,qq等有功能完整,完善等先進性。

xmpp的官方文件是rfc 3920。

二、網路結構

xmpp中定義了三個角色,客戶端伺服器閘道器。通訊能夠在這三者的任意兩個之間雙向發生。伺服器同時承擔了客戶端資訊記錄,連線管理和資訊的路由功能。閘道器承擔著與異構即時通訊系統的互聯互通,異構系統可以包括sms(簡訊),msn,icq等。基本的網路形式是單客戶端通過tcp/ip連線到單伺服器,然後在之上傳輸xml。

注意,分屬於不同server的client之間要通訊的話,中間不能再經過其他server,這2個server必須直接通訊。對於xmpp來說,server不能象email server那樣,中間可以經過若干個server才能把郵件傳送到目的地。

2.1 xmpp客戶端

xmpp 系統的乙個設計標準是必須支援簡單的客戶端。事實上,xmpp 系統架構對客戶端只有很少的幾個限制。乙個xmpp 客戶端必須支援的功能有:

xmpp 將複雜性從客戶端轉移到伺服器端。這使得客戶端編寫變得非常容易,更新系統功能也同樣變得容易。xmpp 客戶端與服務端通過xml 在tcp 套接字的5222 埠進行通訊,而不需要客戶端之間直接進行通訊。

基本的xmpp 客戶端必須實現以下標準協議(xep-0211):

2.2 xmpp伺服器

xmpp 伺服器遵循兩個主要法則:

xmpp開源伺服器一般被設計成模組化,由各個不同的**包構成,這些**包分別處理session管理、使用者和伺服器之間的通訊、伺服器之間的通訊、dns(domain name system)轉換、儲存使用者的個人資訊和朋友名單、保留使用者在下線時收到的資訊、使用者註冊、使用者的身份和許可權認證、根據使用者的要求過濾資訊和系統記錄等。另外,伺服器可以通過附加服務來進行擴充套件,如完整的安全策略,允許伺服器元件的連線或客戶端選擇,通向其他訊息系統的閘道器。

基本的xmpp 伺服器必須實現以下標準協議

2.3 xmpp閘道器

三、系統特點

四、位址格式

xmpp的位址叫做jabberid(簡寫為jid),它用來標示xmpp網路中的各個xmpp實體。jid由三部分組成:domain,node identifier和resource。jid中domain是必不可少的部分。注意:domain和user部分是不分大小寫的,但是resource區分大小寫。

jid = [ node "@" ] domain [ "/" resource ]  

domain = fqdn / address-literal  

fqdn = (sub-domain 1*("." sub-domain))  

sub-domain = (internationalized domain label)  

address-literal = ipv4address / ipv6address  

domain:通常指網路中的閘道器或者伺服器。

node identifier:通常表示乙個向伺服器或閘道器請求和使用網路服務的實體(比如乙個客戶端),當然它也能夠表示其他的實體(比如在多使用者聊天系統中的乙個房間)。

jid種類有:

例子:

[email protected]:表示伺服器jabber.org上的使用者stpeter。

room@service:乙個用來提供多使用者聊天服務的特定的聊天室。這裡 「room「 是聊天室的名字, 」service「 是多使用者聊天服務的主機名。

為了標示jid,xmpp也有自己的uri,例如xmpp:[email protected],預設規則是在jid前加xmpp:

五、通訊原語

xmpp通訊原語有3種:message、presence和iq。

5.1 message

message是一種基本推送訊息方法,它不要求響應。主要用於im、groupchat、alert和notification之類的應用中。

主要屬性如下:

5.1.1type屬性,它主要有5種型別:

5.1.2to屬性:標識訊息的接收方。

5.1.3

載荷(payload):例如body,subject

例子:

你好,在忙嗎

< /message>

5.2 presence

presence用來表明使用者的狀態,如:online、away、dnd(請勿打擾)等。當改變自己的狀態時,就會在stream的上下文中插入乙個presence元素,來表明自身的狀態。要想接受presence訊息,必須經過乙個叫做presence subscription的授權過程。

5.2.1 屬性

5.2.1.1 type屬性,非必須。有以下類別

5.2.1.2 to屬性:標識訊息的接收方。

5.2.1.3 from屬性:指傳送方的名字或標示。

5.2.2 載荷(payload):

5.2.2.1 show:

5.2.2.3 priority:範圍-128~127。高優先順序的resource能接受傳送到bare jid的訊息,低優先順序的resource不能。優先順序為負數的resource不能收到傳送到bare jid的訊息。

例子:xa

down the rabbit hole!

< /presence>

5.3 iq (info / query)

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

主要的屬性是type。包括:

例子:

< /iq>

備註:1、單詞縮寫:

2、參考資料

《xmpp協議的原理介紹》

《rfc3920》

《xmpp: the definitive guide》

關於RDQL 自己的一些解釋

研究了研究 發現 rap 有乙個跟 sql 語法很相似的東西 在sql query select siren from table where 1 在rdql 中 query select siren where x siren using v for 測試ns22222222222輸出來的東西 測...

關於camera的一些名詞解釋

名詞解釋 常見名詞 英文釋義 意義 b b bayer bayer 主眼 副眼 b m bayer mono 彩色 黑白 w t wide tele 廣角 長焦 depth distance 深度 dof depth of field 景深 vsdof video shallow depth of ...

關於A Softmax損失函式的一些解釋

關於a softmax具體內容請參考 sphereface deep hypersphere embedding for face recognition by weiyang liu,yandong wen,zhiding yu,ming li,bhiksha raj and le song。關於...