XMPP協議學習筆記一 - nomousewch的專欄 - 博客頻道 - CSDN.NET瀏覽器
- 即時通信技術簡介
即時通信技術(IM)支持用戶在線實時交談。若是要發送一條信息,用戶須要打開一個小窗口,以便讓用戶及其朋友在其中輸入信息並讓交談雙方都看到交談的內容。大多數經常使用的即時通信發送程序都會提供各類各樣的功能:服務器
- 即時通信 - 在用戶和在線朋友之間來回發送信息
- 聊天 - 建立用戶與朋友或工友的自定義聊天室
- 網頁連接 - 共享用戶喜好的網址
- 支持圖片 - 瀏覽朋友計算機中的圖片
- 支持聲音 - 給朋友播放音樂
- 支持文件傳輸 - 直接將文件發送給朋友,以便於共享
- 交談 - 使用 Internet,而不是電話,與朋友們進行真正的交談
- 影音串流內容 - 實時或準實時的股市行情或新聞
有許多的IM系統,如 AOL IM、Yahoo IM、 MSN IM還有咱們熟悉的QQ,它們最大的區別在於各自通信協議的實現,因此即時通信技術的核心在於它的傳輸協議,協議用來講明信息在網絡上如何傳輸,若是有了統一的傳輸協議,那麼應當能夠實現各個IM之間的直接通信,爲了建立即時通信的統一標準,人們通過了屢次嘗試:IETF 的對話初始協議(SIP)和即時通信對話初始協議和表示擴展協議(SIMPLE)、應用交換協議(APEX)、顯示和即時通信協議(PRIM)及基於 XML 且開放的可擴展通信和表示協議(XMPP)協議(常稱爲 Jabber 協議)。人們屢次努力,試圖統一各大主要 IM 供應商的標準(AOL、Yahoo 及 Microsoft),但無一成功,且每一種 IM 仍然繼續使用本身所擁有的協議。網絡
- 幾種IM協議標準簡介
IMPP 主要定義必要的協議和數據格式,用來構建一個具備空間接收、發佈能力的即時信息系統。到目前爲止,這個組織已經出版了三個草案RFC,但主要的有兩個:一個是針對站點空間和即時通信模型的(RFC 2778);另外一個是針對即時通信/空間協議需求條件的(RFC2779)。RFC2778是一個資料性質的草案,定義了全部presence和IM服務的原理。RFC2779定義了IMPP的最小需求條件。另外,這個草案還就presence服務定義了一些條款,如運行的命令、信息的格式,以及 presence服務器如何把presence的狀態變化通知給客戶。
SIMPLE是目前爲止制定的較爲完善的一個。SIMPLE和 XMPP兩個協議,都符合RFC2778和RFC2779 。SIMPLE計劃利用SIP來發送presence信息。SIP是IETF中爲終端制定的協議。SIP通常考慮用在創建語音通話中,一旦鏈接之後,依* 如實時協議(RTP)來進行實際上的語音發送。但SIP不只僅能被用在語音中,也能夠用於視頻。SIMPLE被定義爲創建一個IM進程的方法。 SIMPLE在2002年夏季獲得額外的信任,目前,微軟和IBM都致力於在它們的即時通信系統中實現這個協議。
SIMPLE小組致力於進程模式的操做,這將提高運行效率,使基於SIP的機制可以進行會議和三方電話交談控制,也考慮到能和將來提供的許多新特性實現兼容並提高表現能力。有了進程模式,SIMPLE使用SIP來創建一次進程,再利用SDP(進程描述協議)來實際傳輸IM數據。
XMPP是一種基於XML的協議,它繼承了在XML環境中靈活的發展性。這代表XMPP是可擴展的。能夠經過發送擴展的信息來處理用戶的需求,以及在XMPP的頂端創建如內容發佈系統和基於地址的服務等應用程序。並且,XMPP包含了針對服務器端的軟件協議,使之能與另外一個進行通話,這使得開發者更容易創建客戶應用程序或給一個配好系統添加功能。
XMPP目前在免費源代碼開放Jabber IM系統中被普遍採用。2002年,這個產品有超過5萬的下載量。XMPP擁有成千的Jabber開發者,以及大約數萬臺配置的服務器和超過百萬的終端用戶。學習
- XMPP概述
XMPP: The Extensible Messaging and Presence Protocol 操作系統
中文全稱:可擴展通信和表示協議 .net
簡介:可擴展通信和表示協議 (XMPP) 可用於服務類實時通信、表示和需求 - 響應服務中的 XML 數據元流式傳輸。XMPP 以 Jabber 協議爲基礎,而 Jabber 是即時通信中經常使用的開放式協議。XMPP is the IETF's formalization of the base XML streaming protocols for instant messaging and presence developed within the Jabber open-source community in 1999 orm
XMPP(可擴展消息處理現場協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線現場探測。它在促進服務器之間的準即時操做。這個協議可能最終容許因特網用戶向因特網上的其餘任何人發送即時消息,即便其操做系統和瀏覽器不一樣。 視頻
XMPP的前身是Jabber,一個開源形式組織產生的網絡即時通訊協議。XMPP目前被IETF國際標準組織完成了標準化工做。標準化的核心結果分爲兩部分; blog
核心的XML流傳輸協議 繼承
基於XML FreeEIM流傳輸的即時通信擴展應用
XMPP的核心XML流傳輸協議的定義使得XMPP可以在一個比以往網絡通訊協議更規範的平臺上。藉助於XML易於解析和閱讀的特性,使得XMPP的協議可以很是漂亮。
XMPP的即時通信擴展應用部分是根據IETF在這以前對即時通信的一個抽象定義的,與其餘業已獲得普遍使用的即時通信協議,諸如AIM,QQ等有功能完整,完善等先進性。
XMPP的擴展協議Jingle使得其支持語音和視頻。
XMPP的官方文檔時RFC 3920.
- XMPP的基本結構
XMPP中定義了三個角色,客戶端,服務器,網關。通訊可以在這三者的任意兩個之間雙向發生。服務器同時承擔了客戶端信息記錄,鏈接管理和信息的路由功能。網關承擔着與異構即時通訊系統的互聯互通,異構系統能夠包括SMS(短信),MSN,ICQ等。基本的網絡形式是單客戶端經過TCP/IP鏈接到單服務器,而後在之上傳輸XML。
- XMPP經過TCP傳的是什麼
傳輸的是與即時通信相關的指令。在之前這些命令要麼用2進制的形式發送(好比QQ),要麼用純文本指令加空格加參數加換行苻的方式發送(好比MSN)。而XMPP傳輸的即時通信指令的邏輯與以往相仿,只是協議的形式變成了XML格式的純文本。這不但使得解析容易了,人也容易閱讀了,方便了開發和查錯。而XMPP的核心部分就是一個在網絡上分片段發送XML的流協議。這個流協議是XMPP的即時通信指令的傳遞基礎,也是一個很是重要的能夠被進一步利用的網絡基礎協議。因此能夠說,XMPP用TCP傳的是XML流。
- XMPP的相關文檔
推薦一個包含XMPP相關資料的百度空間:http://hi.baidu.com/jabber/home
XMPP官網:http://xmpp.org/
Jabber官網,包含許多XMPP的實現:http://www.jabber.org/
- 下一篇詳細介紹XMPP協議相關細節