您的位置:首頁>科技>正文

物聯網應用層協定介紹(三)——XMPP

物聯網應用層協議主要有CoAP, MQTT, XMPP, HTTP等, 本文我們再來介紹下XMPP協議。

1.什麼是XMPP?

XMPP(Extensible Messageing and Presence Protocol:可擴展消息與存在協定)是目前主流的四種IM(IM:instant messaging,即時消息)協定之一,

其他三種分別為:即時資訊和空間協定(IMPP)、空間和即時資訊協定(PRIM)、針對即時通訊和空間平衡擴充的進程開始協定SIP(SIMPLE)。

XMPP是基於可延伸標記語言(XML)的協定, 它用於即時消息(IM)以及線上現場探測。 XMPP允許網際網路用戶向網際網路上的其他任何人發送即時消息, 即使其作業系統和流覽器不同。

XMPP的前身是Jabber, 一個開源形式組織產生的網路即時通信協定。 XMPP目前被IETF國際標準組織完成了標準化工作。

2.XMPP技術簡介

2.1 XMPP協定棧

XMPP協定模型如下, 是基於TCP/IP的應用層協定。

2.2 網路架構

XMPP定義了3個角色用戶端(Client)、伺服器(Server)、閘道(Gateway)。 通信能夠在這三者的任意兩個之間雙向發生。

伺服器同時承擔了用戶端資訊記錄、連接管理和資訊的路由功能 。

閘道承擔著與異構即時通信系統的 互聯互通,

異構系統可以包括SMS (短信), MSN, ICQ等。

用戶端利用xmpp(基於TCP/IP)訪 問server, 傳輸的是XML。

基本的網路形式是單用戶端通過TCP/IP連 接到單伺服器, 然後在之上傳輸 XML。

2.3 工作原理

所有從一個client到另一個client的消息和資料都要通過xmpp server

client連接到server

server利用本地目錄系統的證書對其認證

client制定目標位址, 讓server告知目標狀態

server查找, 連接並進行相互認證

client間進行交互

3.XMPP協定特點

XMPP 協定是公開的, 由JSF開源社區組織開發。 XMPP 協議並不屬於任何的機構和個人, 而是屬於整個社區, 這一點從根本上保證了其開放性。

XMPP 協議具有良好的擴展性。 在XMPP 中, 即時消息和到場資訊都是基於XML的結構化資訊, 這些資訊以XML節(XML Stanza)的形式在通信實體間交換。 XMPP 發揮了XML結構化資料的通用傳輸層的作用, 它將出席和上下文敏感資訊嵌入到XML結構化資料中, 從而使資料以極高的效率傳送給最合適的資源。 基於XML建立起來的應用具有良好的語義完整性和擴展性。

分散式的網路架構。 XMPP 協定都是基於C/S架構, 但是XMPP協議本身並沒有這樣的限制。 網路的架構和電子郵件十分相似,

但沒有結合任何特定的網路架構, 適用範圍非常廣泛。

XMPP 具有很好的彈性。 XMPP 除了可用在即時通信的應用程式, 還能用在網路管理、內容供稿、協同工具、檔案共用、遊戲、遠端系統監控等。

安全性。 XMPP在Client-to-Server通信, 和Server-to-Server通信中都使用TLS (Transport Layer Security)協議作為通信通道的加密方法, 保證通信的安全。 任何XMPP伺服器可以獨立於公眾XMPP網路(例如在企業內部網路中), 而使用SASL及TLS等技術更加增強了通信的安全性。

不內置支援二進位資料的傳輸。 XMPP 的核心部分沒有包含對二進位資料傳輸的支持, 這使得XMPP的基本資料限定在文字檔範圍內。 XMPP 社區認為, XMPP應該用於傳輸meta資訊, 輔助其他應用進行協議握手, XMPP本身不應負擔海量資訊的傳輸。 從當前流行的輕量化觀點來看,

XMPP把二進位資料傳輸的協議移入核心棧, 是符合了最小核心的需求, 但同時卻為實際應用中XMPP用戶端傳輸二進位資料增加了開發擴展協議的負擔。

缺乏旗艦應用。 XMPP是開放的, 任何個人和組織都可以使用XMPP。 但同時產生的副作用是每個組織使用XMPP的目的不同, 側重點不同, 導致XMPP所開發的應用實際上導致了各個廠商各自為政, 比如Cisco將XMPP用於設備通信, 遊戲廠商用於遊戲內的簡易聊天。 即時通訊中只有Google Gtalk和Fackbook Chat較出名, 但都沒有作為這兩家企業的核心產品作為推廣。 XMPP 的應用中並沒有旗艦應用。

建議:中小型IM程式建議使用XMQQ, 標準已經考慮的很完善, 上手及開發過程快;大型IM程式則一般使用私有協定, 實現更加個性和強大的功能。

Next Article
喜欢就按个赞吧!!!
点击关闭提示