一、即時通訊技術
即時通訊技術
(IM
-- Instant Messaging)-> 支持用戶在線實時交談有許多的IM系統,如AOL、Yahoo IM、 MSN以及QQ,它們
最大的區別在于各自通訊協議的實現
,所以n即時通訊技術的核心在于它的傳輸協議
-
協議
-> 用來說明信息在網絡上如何傳輸如果有了統一的傳輸協議,那么應當可以實現各個IM之間的直接通訊
-
為了創建即時通訊的統一標準,目前已經出現過的IM協議包括:
- IETF的對話初始協議(SIP): SIP是建立VOIP連接的IETF標準,而VOIP就是網絡電話
- 即時通訊對話初始協議和表示擴展協議(SIMPLE)
- 應用交換協議(APEX)、顯示和即時通訊協議(PRIM)
-
基于XML且開放的可擴展通訊和表示協議(XMPP)協議
(常稱為 Jabber 協議)
人們多次努力,試圖統一各大主要IM供應商的標準(AOL、Yahoo 及 Microsoft),但無一成功,且每一種IM仍然繼續使用自己所擁有的協議
二、XMPP簡介
XMPP誕生的由來
- 都是遵守XMPP即時通訊協議
- 設計一款全世界都使用的即時通訊協議,無論使用什么即時通訊軟件,都可以互聯互通
XMPP起源
-
XMPP是基于XML的協議
,用于即時消息(IM)以及在線現場探測。最初,XMPP作為一個框架開發,目標是支持企業環境內的即時消息傳遞和聯機狀態應用程序。 - XMPP的
前身是Jabber
(1998年),是一個開源組織定義的網絡即時通信協議 - XMPP是
一個分散型通信網絡
- 這意味著,只要網絡基礎設施允許,任何XMPP用戶都可以向其他任何XMPP用戶傳遞消息。
- 多個XMPP服務器也可以通過一個專門的“服務器-服務器”協議相互通信,提供了創建分散型社交網絡和協作框架的可能性
XMPP概述
-
XMPP是一種基于XML的協議
- 它繼承了在XML(可擴展標記語言)環境中靈活的發展性。這表明
XMPP是可擴展的
。 -
XMPP包含了針對服務器端的軟件協議
,使之能與另一個進行通話,這使得開發者更容易建立客戶應用程序或給一個配置好的系統添加功能
- 它繼承了在XML(可擴展標記語言)環境中靈活的發展性。這表明
-
XMPP的核心
XML流
傳輸協議的定義- 使得XMPP能夠在一個比以往網絡通信協議更規范的平臺上。借助于XML易于解析和閱讀的特性,使得XMPP的協議能夠非常漂亮
XMPP的擴展協議Jingle使得其支持語音和視頻,目前iOS尚不支持
XMPP的官方文檔是RFC 3920
XMPP協議曾經是Google力推的即時通信協議,
其代表作品是GTalk
Google Talk(GTalk)
Google Talk是Google的IM工具,除了具有IM功能外,另外還加上了Voip功能,“界面清新大方”,可直接鏈接Gmail,接受查看郵件
由于Google Talk是
基于Jabber開源標準,這種標準允許用戶和其它的即時訊息系統相連
,比如蘋果電腦的iChat,GAIM,Trillian Pro以及Psi。Google Talk只能夠在Windows平臺上運行
Google Talk的用戶無法使用這種軟件與AIM,MSN Messenger或者雅虎Messenger的用戶進行互通
2013年5月,在Google I/O大會上,Google推出統一跨平臺聊天應用
Hangouts(環聊)取代Google Talk
Google Hangouts不支持XMPP協議
,Google Hangouts用戶與如XMPP協議的強有力支持者jabber.org之間的交流無法進行Hangouts目前在中國大陸無法使用,尚不支持iOS7.0
目前,Google Wave是基于XMPP協議的
,并且Google還開發Jingle擴展進行基于XMPP協議的視頻聊天。盡管Google尚未宣布Talk的關閉日期,不過從Google關閉Reader和iCal支持來看,Talk關閉之日不會太遠
三、XMPP定義
-
XMPP:
- The Extensible Messaging and Presence Protocol(
可擴展通訊和表示協議
)
- The Extensible Messaging and Presence Protocol(
-
XMPP可用于服務類
實時通訊、表示和需求響應
服務中的XML數據元流式傳輸
。- XMPP以Jabber協議為基礎,而Jabber是即時通訊中常用的開放式協議
-
XMPP是基于XML的協議,
用于即時消息(IM)以及在線現場探測
。- 促進服務器之間的準即時操作。這個協議可能最終允許因特網用戶向因特網上的其他任何人發送即時消息,即使其操作系統和瀏覽器不同
四、XMPP的基本結構:典型的C/S架構
- XMPP是一個
典型的C/S架構
- 而不是像大多數即時通訊軟件一樣,使用P2P客戶端到客戶端的架構
- 也就是說在大多數情況下,當兩個客戶端進行通訊時, 他們的消息都是通過服務器傳遞的。
- 優點:采用這種架構,主要是為了簡化客戶端,將大多數工作放在服務器端進行
-
XMPP中定義了三個角色:客戶端,服務器,網關
- 通信能夠在這三者的任意兩個之間雙向發生
- 服務器 : 同時承擔了客戶端信息記錄,連接管理和信息的路由功能
- 網關 : 承擔著與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等
-
基本的網絡形式:
-
單客戶端通過TCP/IP連接到單服務器
,然后在之上傳輸XML流
-
五、XMPP工作原理
- 節點連接到服務器
- 服務器利用本地目錄系統中的證書對其認證
- 節點指定目標地址,讓服務器告知目標狀態
- 服務器查找、連接并進行相互認證
- 節點之間進行交互
六、傳輸內容
- XMPP應用傳輸的是與
即時通訊相關的指令
- 而XMPP傳輸的即時通訊指令的邏輯與以往相仿,只是協議的形式變成了
XML格式的純文本
。- 這不但使得解析容易了,人也容易閱讀了,方便了開發和查錯
- 而XMPP的核心部分就是一個
在網絡上分片段發送XML的流協議
。這個流協議是XMPP的即時通訊指令的傳遞基礎,也是一個非常重要的可以被進一步利用的網絡基礎協議,可以說XMPP用TCP傳的是XML流
七、XMPP的優缺點
優點
- 開放
- 標準(XMPP的技術規格已被定義在RFC 3920及RFC 3921)
- 證實可用,谷歌證實了GTalk
- 分散
- 安全
- 可擴展
缺點
- 數據負載過重XML
- 沒有二進制傳輸
八、XMPP的傳輸小結
- XMPP是一種
類似于HTTP協議
的一種數據傳輸協議
,- 其過程就如同“解包裝--〉包裝”的過程。只需要理解其接收的類型及返回的類型,便可以很好的利用XMPP來進行數據通訊
- XMPP官方網站——http://xmpp.org
九、XMPP——JID
-
每個 XMPP客戶端用戶必須擁有一個全局惟一標識符。
- 基于歷史原因,這些標識符稱為
Jabber ID或JID
。鑒于協議的分布式特征,JID應包含聯系用戶所需的所有信息,JID的結構類似于電子郵件地址,但不要求 JID同時也是有效的電子郵件收件人
- 基于歷史原因,這些標識符稱為
-
客戶端和服務器節點,被統稱為XMPP實體,都擁有JID
。例如:SomeCorp公司的員工 John Doe可能擁有JID:用戶名@服務器名稱-
John.Doe@somecorp.com
- 其中somecorp.com是 SomeCorp公司的
XMPP服務器的地址
- John.Doe是John Doe的
用戶名
- 其中somecorp.com是 SomeCorp公司的
-
John.Doe@somecorp.com
十、環境搭建
開發客戶端:ios 、Xcode開發選擇
服務器:Openfire選擇
-
數據庫:MySql選擇
環境選擇.png 安裝MySQL管理工具——mysql-workbench