XMPP 是什麼?#
「 XMPP 」全名「 Extensible Messaging and Presence Protocol 」,中譯「 可延伸訊息與存在協定 」,前稱為「 Jabber 」,是一種基於 TCP/IP 且為開源形式組織產生的網路即時通信協定,而非應用程式。
起源#
- 1998 年「Jeremie Miller」開始了第一個 XMPP 伺服器端軟體「 jabberd 」的專案。
- 2000 年 05 月 發行第一個公開版本。
- 2004 年 10 月 Jabber 已經由 IETF(RFC3920)標準化。
來自世界各地的開發者正為 XMPP 技術而努力。
今日的網際網路上有著數以萬計的 XMPP 伺服器正在運作著,並有數以百萬計的人們使用 XMPP 即時傳訊軟體。
架構#
XMPP 通訊上主要利用常見的 Client (客戶端) 、 Server (伺服器) 外,還多新增了 Gateway (閘道器) 。
傳輸的內容格式則為 XML。
- Server (伺服端)
- 處理與 Client 的連接及直接與之互相溝通
- 與其他 XMPP Server 互相溝通
- 處理 Client 註冊、認證、現狀資訊、好友名單以及離線訊息儲存等等功能。
- Client (客戶端)
- 與 XMPP Server 建立溝通連線
- 解析 XML Stream
- 確認 XMPP 核心資料型態
運用#
每個 XMPP 的用戶,都有一個獨立的 Jabber ID (JID) ,並且使用「 @
」連接著 domain
。
例如 ID 為「 alpaca
」, Domain
為「 xmpp.com
」,則 JID
為「 alpaca@xmpp.com
」。
不僅僅是看起來,就連網路架構都與電子郵件相似。
XMPP 協議是自由、開放、公開的。
在客戶端、伺服器、元件、原始碼庫等方面,都已經各自有多種實作。
除了可用在即時通訊的應用程式,還能用在網路管理、內容供稿、協同工具、檔案共享、遊戲、遠端系統監控等。
安全性#
XMPP 核心協定通信方式是先建立一個 Stream,以 TCP 傳遞 XML 資料流。不存在中央主伺服器,每個人皆可運行自己的 XMPP Server。
XMPP 協定的伺服器可以獨立於公眾 XMPP 網路(例如在企業內部網路中),而使用 SASL 及 TLS 等技術的可靠安全性,已內建於核心 XMPP 技術規格中。
用 XMPP 技術開發軟體,資源及支援的來源是多樣的,這能避免發生因不明軟體背後的運作而遭到軟體挾持的困境。
主要參考資料#
- IETF - tools.ietf.org
- Wiki - wikipedia.org