Xmpp
- 1. XML 期末報告
XML and Instant Messaging: XMPP
指導教授:葉慶隆指導教授:葉慶隆
GI1.02GI1.02 吳登傑吳登傑
- 3. XMPPXMPP 的簡介與起源的簡介與起源
XMPPXMPP :: the Extensible Messaging and Presence Protocolthe Extensible Messaging and Presence Protocol
是一種以是一種以 XMLXML 為基礎的開放式即時通訊協定為基礎的開放式即時通訊協定
位於網路協議層級的應用層位於網路協議層級的應用層
XMPPXMPP 也是目前主流的四種即時通訊協定之一也是目前主流的四種即時通訊協定之一
目前目前 XMPPXMPP 的技術被的技術被 Google TalkGoogle Talk 所使用所使用
- 4. XMPPXMPP 發展史發展史
19981998 年:年: Jeremie MillerJeremie Miller 開始了開始了 JabberJabber 這個項目這個項目
20002000 年:年: Jabber Open SourceJabber Open Source 精製化之後正式公開發表精製化之後正式公開發表
20042004 年年 1010 月:月: IETFIETF 將協定標準化成為網路的標準協定之將協定標準化成為網路的標準協定之
一一
20052005 年年 88 月:月: Google TalkGoogle Talk 推出推出
20062006 年年 11 月月 1717 日:日: Google TalkGoogle Talk 用戶可與其他用戶可與其他 JabberJabber 公共公共
網路的用戶對談網路的用戶對談
- 5. XMPP相關規範XMPP相關規範
XMPPXMPP 主要的核心架構制定於主要的核心架構制定於 RFC 3920RFC 3920 。目前與。目前與 XMPPXMPP 有關的有關的 RFCRFC 文文
件共有下列這幾項:件共有下列這幾項:
RFC 編號 名稱 內容描述
RFC 3920 XMPP Core XMPP 核心程式
RFC 3921 XMPP IM XMPP 即時通訊、狀況
RFC 3922 XMPP CPIM Mapping XMPP & CIMP
RFC 3923 XMPP E2E XMPP 點對點的簽名和物件加密
RFC 4622 XMPP URI
RFC 4854 XMPP URN
- 8. XMPPXMPP 的定址功能的定址功能
每一個用戶都有屬於自己的每一個用戶都有屬於自己的 JID (Jabber Identifier )JID (Jabber Identifier )
JIDJID 分成兩個部份:分成兩個部份: node identifiernode identifier 和和 domain identifierdomain identifier
node identifiernode identifier 就是所謂的用戶名稱就是所謂的用戶名稱
domain identifierdomain identifier 則是似服器名稱則是似服器名稱
格式如下:格式如下:
node identifier @ domain identifiernode identifier @ domain identifier
- 10. 資料傳輸的實例資料傳輸的實例 (1/2)(1/2)
下面是 Client1 連接到一個伺服器,發送一條消息給
Client2 ,最後登出的過程:
Client1: <?xml version="1.0"?>
<stream:stream
xmlns:stream="http://etherx.jabber.org/streams"xmlns="jabber:client"
to="server.com">
Server: <stream:stream xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
from='server.com' id='1461777714'>
Client1: <iq type="set" id="auth_2" to="server.com" >
<query xmlns="jabber:iq:auth">
<username>Client1</username>
<password>mypassword</password>
<resource>Work</resource>
</query>
</iq>
- 11. 資料傳輸的實例資料傳輸的實例 (2/2)(2/2)
Server: <iq from="server.com" id='auth_2' type='result'/>
Client1: <message to="Client2@example.com" >
<subject>hello</subject>
<body>Hi, I am Client1. </body>
</message>
<presence type="unavailable" >
<status>Logged out</status>
</presence>
</stream:stream>
Server: </stream:stream>
- 13. XMPPXMPP 所使用到的安全機制所使用到的安全機制
TLSTLS (( Transport Layer Security protocolTransport Layer Security protocol ):): XMPPXMPP 使用了使用了
TLSTLS 來防止來防止 XML streamXML stream 傳送過程被篡改、竊聽。傳送過程被篡改、竊聽。
SASLSASL (( Simple Authentication and Security Layer protocolSimple Authentication and Security Layer protocol ))
:在建立好:在建立好 TLSTLS 之後就要用到之後就要用到 SASLSASL 來驗證來驗證 XML streamXML stream 。。
Resource BindingResource Binding :在:在 SASLSASL 建立成功之後可以藉由建立成功之後可以藉由 <bind><bind>
和和 </bind></bind> 標籤傳送的標籤傳送的 ClientClient 位址以確保資料傳送至位址以確保資料傳送至
ClientClient 的安全性。的安全性。
Server DialbackServer Dialback :確保:確保 ServerServer 和和 ServerServer 連結過程中的安全與連結過程中的安全與
正確性 。正確性 。
- 15. XMPPXMPP 的簡介與起源的簡介與起源
XMPPXMPP 的架構的架構
資料傳輸的實例資料傳輸的實例
XMPPXMPP 所使用到的安全機制所使用到的安全機制
優點分析優點分析
缺點分析缺點分析
未來發展未來發展
- 17. XMPPXMPP 的簡介與起源的簡介與起源
XMPPXMPP 的架構的架構
資料傳輸的實例資料傳輸的實例
XMPPXMPP 所使用到的安全機制所使用到的安全機制
優點分析優點分析
缺點分析缺點分析
未來發展未來發展
- 18. 缺點分析缺點分析
可伸縮性:可伸縮性: XMPPXMPP 的可伸縮度其實不好,當遇到多人的對的可伸縮度其實不好,當遇到多人的對
話時會產生過多的網路開銷。話時會產生過多的網路開銷。
沒有二進制數據:沒有二進制數據: XMPPXMPP 協議的數據通常是被編碼成一個協議的數據通常是被編碼成一個
長長 XMLXML 文件,限制了它直接傳輸原始二進制數據的能力文件,限制了它直接傳輸原始二進制數據的能力
。。