1 / 33

期末專題背景知識報告 XMPP 與 SIP 介紹

期末專題背景知識報告 XMPP 與 SIP 介紹. 501435007 黃昭隆 501435007 郭惠民. Outline. XMPP 的簡介與起源 XMPP 的架構 資料傳輸的實例 XMPP 所使用到的安全機制 XMPP 優點分析 XMPP 缺點分析 SIP 介紹 XMPP 與 SIP 比較. XMPP 的簡介與起源. XMPP : the Extensible Messaging and Presence Protocol 是一種以 XML 為基礎的開放式即時通訊協定 位於網路協議層級的應用層

millie
Download Presentation

期末專題背景知識報告 XMPP 與 SIP 介紹

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 期末專題背景知識報告 XMPP與 SIP 介紹 501435007 黃昭隆 501435007 郭惠民

  2. Outline • XMPP的簡介與起源 • XMPP的架構 • 資料傳輸的實例 • XMPP所使用到的安全機制 • XMPP優點分析 • XMPP缺點分析 • SIP 介紹 • XMPP 與 SIP 比較

  3. XMPP的簡介與起源 • XMPP:the Extensible Messaging and Presence Protocol • 是一種以XML為基礎的開放式即時通訊協定 • 位於網路協議層級的應用層 • XMPP也是目前主流的四種即時通訊協定之一 • 目前XMPP的技術被Google Talk所使用

  4. XMPP發展史 • 1998年:Jeremie Miller開始了Jabber這個項目 • 2000年:Jabber Open Source精製化之後正式公開發表 • 2004年10月:IETF將協定標準化成為網路的標準協定之一 • 2005年8月:Google Talk推出 • 2006年1月17日:Google Talk用戶可與其他Jabber公共網路的用戶對談

  5. XMPP相關規範 • XMPP主要的核心架構制定於RFC 3920。目前與XMPP有關的RFC文件共有下列這幾項:

  6. XMPP的簡介與起源 • XMPP的架構 • 資料傳輸的實例 • XMPP所使用到的安全機制 • 優點分析 • 缺點分析

  7. Client Client Server1 Server2 Client Client Client Client Server3 Client Client Client XMPP的架構 Server和Server使用 Port 5269進行傳輸 Client和Server使用Port 5222 進行傳輸

  8. XMPP的定址功能 • 每一個用戶都有屬於自己的 JID (Jabber Identifier ) • JID分成兩個部份:node identifier和domain identifier • node identifier就是所謂的用戶名稱 • domain identifier則是似服器名稱 • 格式如下: node identifier @ domain identifier

  9. Outline • XMPP的簡介與起源 • XMPP的架構 • 資料傳輸的實例 • XMPP所使用到的安全機制 • 優點分析 • 缺點分析

  10. 資料傳輸的實例(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) 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>

  12. Outline • XMPP的簡介與起源 • XMPP的架構 • 資料傳輸的實例 • XMPP所使用到的安全機制 • 優點分析 • 缺點分析

  13. XMPP所使用到的安全機制 • TLS(Transport Layer Security protocol):XMPP使用了TLS來防止XML stream傳送過程被篡改、竊聽。 • SASL(Simple Authentication and Security Layer protocol):在建立好TLS之後就要用到SASL來驗證XML stream。 • Resource Binding:在SASL建立成功之後可以藉由<bind>和 </bind>標籤傳送的Client位址以確保資料傳送至Client的安全性。 • Server Dialback:確保Server和Server連結過程中的安全與正確性 。

  14. XMPP所使用到的安全機制 通訊協定的順序是:TCP→TLS→SASL→XMMP

  15. XMPP的簡介與起源 • XMPP的架構 • 資料傳輸的實例 • XMPP所使用到的安全機制 • 優點分析 • 缺點分析

  16. 優點分析 • 分散式:沒有固定的中央伺服器。 • 開放標準:協定是自由、開放、公開的,並且易於瞭解。 • 安全性:SASL和TSL已經在XMPP核心技術規格中。 • 靈活性:不僅能用於即時通訊軟體中。 • 擴展性: 藉由XML的Namespace特性,可以產生個人化。

  17. XMPP的簡介與起源 • XMPP的架構 • 資料傳輸的實例 • XMPP所使用到的安全機制 • 優點分析 • 缺點分析

  18. 缺點分析 • 可伸縮性:XMPP的可伸縮度其實不好,當遇到多人的對話時會產生過多的網路開銷。 • 沒有二進制數據:XMPP協議的數據通常是被編碼成一個長XML文件,限制了它直接傳輸原始二進制數據的能力。

  19. SIP (Session Initiation Protocol) 簡介 最先由美國哥倫比亞大學的 Henning Schulzrinne 教授在 1998 年 初開始發展,1999 年 3 月由 IETF 的 MMUSIC(Multipart Multimedia Session Control)工作小組制定正式標準成為 RFC 2543[2], 1999 年 9 月 IETF 成立新的工作小組 ,負責 SIP 新版本 2.0 的制定 , 並於 2000 年 7 月釋出初版 RFC 2543bis,於 2001 年發佈了 RFC 3261 [3]。 RFC 3261 的發佈,標示著 SIP 的基礎已經確立,隨後又發佈了 幾個 RFC 增定版本,充實了安全性及身份認證等幾個領域的內容, 例如 RFC 3262[4]對臨時回應做了可靠性的規範。RFC 3263[5]確立了 SIP proxy的定位規則。RFC 3264[6]提供了 Offer/Answer Model,RFC 3265[7]則是確立了具體的事件通知。

  20. SIP有下列幾點特性 利用文字(Text-based)的方式來編碼,類似 HTTP/1.1 Client-Server的架構 Clients 端初始一個呼叫(caller) Servers 端回應呼叫 (callee) 訊號與資料獨立,SIP負責訊號部分,資料傳送部分 可以使用 RTP,TCP,UDP… 可與其他 IETF 所制訂的協定配合,例如:RFC2327(SDP)[12], RFC2616 (HTTP/1.1) [11], RFC2396(URL)[13]…

  21. SIP 元件介紹 在 SIP 是一個 Client and Server 的架構,在此環境當中,有三個 主要的元件分別為: User Agents, Servers 還有 Location Servers。

  22. User Agents 在 SIP 環境中是終端設備,主要負責產生 SIP requests,用來建 立多媒體會議(media session),並且傳送及接收多媒體資料。User Agents 又分成了 User Agent Client (UAC) 及 User Agent Server 兩種 模式。UAC 負責產生一個 Request 及處理一個 Response,UAS 怎是 接受一個 Request 並且產生 response。在 Session建立過程中,UA通 常需要接替著扮演這兩個角色。這點並不像其他 Client and Server 架 構,例如 HTTP,PC 一直扮演著 HTTP client 的角色,而 Web Server 也一直扮演著 HTTP Server 的角色。

  23. Servers 根據 RFC 2543 中定義,Server 主要分成了 Proxy, Redirect, 以及 Registrar server。 SIP proxy:負責接受 UA 或其他 proxy 所發送的 SIP Request,並且轉送 Request 到其他地方。 Redirect Server:負責接受 UA或其他 proxy所發送的 SIP Request,並且傳回 redirection response (3xx),指出這個 Request 應該送往何方。 Registrar Server:負責接受 SIP registration requests,並且 更新 SIP UA在 Location Server 或其他資料庫當中的資訊。 SIP proxy, Redirect 還有 Registrar servers 只有做單純的 signaling 轉送,他們沒有傳送多媒體資料及產生 SIP Request 的能力。

  24. Location Servers 在RFC 2543 中,通常當作一個資料庫來使用。資料庫當中可以存放使用者的資訊,例如 URLs, IP address, 或是其他資料等等。SIP UA 不能直接來存取 Location server,而是透過 proxy, redirect,或是registrar server。

  25. SIP運作模式 SIP 的呼叫建立如圖 所示,開始的時候 caller 會送出 SIP INVITE的訊息給callee ,callee收到之後 ,會馬上回應一個100 Ringing 的訊息通知 caller,說明目前 callee 已經收到 INVITE 訊息且正在處理中,如果 callee 願意與 caller 通話,便會送出 200 OK的 response,最後 caller 再送出 ACK,此時便可以開始進行會議。當其中一方想結束 通訊時,便會送出 BYE 的訊息來通知對方,對方回應 200 OK 便可

  26. SIP proxy 模式 以圖 2.3 為例,caller (inaba@work.com) 先送出一個 INVITE 訊息呼叫 callee (yucho@work.com),proxy server 收到之後便會去做查詢 , 查詢完 成 之 後 便 得 知 目前 callee 實 際的位 址 在 yucho@home.com ,於是 proxy server 便會以 yucho@home.com為對象發出 INVITE 訊息。callee 在回覆 200 OK 的時候,會將 200 OK 的response 回應給 proxy server,再由 proxy server 轉送給 caller。

  27. SIP redirect 模式 如圖 2.4 所示,與 proxy server 不同的地方,在於 redirect server查詢得知 callee 實際的位址的時候,並不像 proxy server 會直接代為處理之後session的建立 ,而是將callee的實際位址告知caller ,讓caller自行送出新的 INVITE。使用 redirect 的模式,可以減低 server 的負擔,但 caller 必須有能力將 request 的訊息傳送到 callee。

  28. SIP vs XMPP (Jabber) 比較 SIP和XMPP都是應用層的協議,主要用來在互聯網上發送語音和即時通信IM。 RFC 3521定義了SIP,RFC3920定義了XMPP。 XMPP來自即時通信系統,而SIP類似語音和視頻通信。 XMPP增加了Jingle擴展協議來支持面向連接的業務,如語音和視頻;而SIP增加了SIMPLE協議來支持即時通信業務。 SIP是應用層的協議,用來建立、改變和終結多媒體連接,如語音呼叫。 SIP也可以在已經存在的呼叫上增加新的呼叫,實現多方會議。本質上來講,SIP被稱之為VoIP的信令協議, 他可以處理呼叫​​的建立,呼叫的控制和呼叫的終結,並且產生CDR用來計費. XMPP是開放的XML協議,用來實現實時消息傳遞、呈現和請求/響應業務。起初,他由Jabber開源社區開發。 2002年,XMPP工作組將Jabber開發成支持即時通信的協議。

  29. 我們不能簡單對SIP和XMPP進行對比,因為兩者服務與完全不同的目標,一個服務於連接的建立,一個服務於結構化的數據交換。但是SIP增加SIMPLE和XMPP增加Jingle後,兩者開始變得類似了。我們不能簡單對SIP和XMPP進行對比,因為兩者服務與完全不同的目標,一個服務於連接的建立,一個服務於結構化的數據交換。但是SIP增加SIMPLE和XMPP增加Jingle後,兩者開始變得類似了。 (1) SIP提供連接的建立、改變和終結,而XMPP在客戶組內部提供流管道,交換結構化的數據。這就是說:SIP的重點是終端之間連接的建立和維護,連接以後的數據和信息傳送他不關注;而XMPP重點是考慮終端組內部的數據交換,連接建立是基本的功能,而不是重點。所以,XMPP對應用的支持和擴展性的考慮很充分,比SIP天生要好。 (2)SIP的信令和消息傳送是基於文本的,是平面化(Flat)的數據表達,解析起來缺少規律性,在新增數據消息體的時候缺少繼承性,需要開發新的代碼來封裝和解析,原有代碼的繼承性比較差。而XMPP採用開放的標準的XML表達,是一種結構化的消息結構,能夠方面表達層次化的消息內容,表達內容的內在邏輯。這種XML的結構對應用的擴展和內容的解析帶來極大的方便,大量軟件代碼可以重複利用。

  30. (3)SIP信令由SIP報文格式的頭部和內容​​兩部分組成,也就是說,SIP報文格式的頭部已經包含了部分內容,類似於HTTP,與具體的上層應用直接關聯,而不是通用的報文格式;而XMPP所有信息都是採用XML在流管道之間透明傳送。(3)SIP信令由SIP報文格式的頭部和內容​​兩部分組成,也就是說,SIP報文格式的頭部已經包含了部分內容,類似於HTTP,與具體的上層應用直接關聯,而不是通用的報文格式;而XMPP所有信息都是採用XML在流管道之間透明傳送。 SIP的連接建立通道與數據傳送通道是各自獨立的,連接建立在SIP client與Server之間,而數據傳送通道是在Client--Client之間直接進行的。這個對視頻、語音和文件傳送業務很合適,但是不適合其他形式的應用。 XMPP的控制和數據通道是一體的,Clent只與Server建立連接,而Client與client之間是沒有之間連接的。 Client之間傳送的通道是:Client1---〉Server1---〉server2---〉client2。這種方式看起來擴展性差,server壓力很大,但是能夠實現很好的業務功能,比如留言、廣播、群聊、狀態更新、Blog、微博、數據共享等等。 這種Client-server模型,很多業務的控制在Server上完成,新功能的增加在server上實現,在server上定義新的XML對象和邏輯,客戶端只要負責XML數據流的解析和呈現就可以了。所以,終端實現簡單。

  31. (4) SIP runs over UDP, TCP and TLS whereas XMPP uses TCP and TLS only.  (5)SIP是雙向對稱,客戶端和服務器都可以主動發起連接請求並響應,這種對稱連接的方式在穿越NAT和firewall的時候,帶來很大的複雜性,無法保證穿越NAT。而XMPP是單向的連接,只有Client可以向Server發起連接請求,server不會向Client發起連接。這樣便於NAT和firewall的穿越。 (6) Both SIP and XMPP are easy to implement. 技術上比較SIP和XMPP,就像蘋果與橙子相比,因為核心協議服務的目的不一樣:連接匯聚/建立功能和結構化的數據交換功能。各自在其固有的領域有各自的優勢,但是兩者體系架構的差異,在未來的競爭中,個人覺得XMPP/Jingle架構更加有競爭力。因為XMPP的開放性,開發了大量的開源代碼和開源應用,大量是非連接的業務,如即時通信、blog、微博、社交網絡、遠程控制、設備管理、三屏切換等等應用,已經有了基於XMPP開源代碼和應用提供。 Google在XMPP增加了Kingle,也很好地實現了基本的語音和視頻通訊業務。

  32. 專題題目: 即時訊息傳送 接收 瞭解SIP 與 XMPP 這兩種通訊格式後, 覺得期末專題採用XMPP 通訊格式比較適合.

  33. END

More Related