Jabber
维基百科,自由的百科全书
Jabber是一个开放的、基于XML的协议。它的用途在即时通讯及Presence資訊方面。
目录 |
[编辑] 歷史
Jeremie Miller于1998年开始了这个项目。第一个公开版本于2000年5月发行。这个项目的主要产品是jabberd,Jabber的服务器端软件。它既可以创建私人的Jabber网络,也可以加入全球的公共Jabber网络。Jabber的關鍵特色是,分散式的即時通訊系統,以及使用XML串流。
Jabber協定目前由Jabber軟體基金會管理,而Jabber協定的主要基礎已經在RFC3920當中以XMPP之名被網際網路工程工作小組(IETF)接受為網際網路標準。Jabber和以SIP協定為基礎的SIMPLE常被視為為即時通訊及Presence告知領域的競爭對手,然而XMPP的設計更傾向提供一個一般用途的、應用程式之間的中介軟體設施。
2005年,Google发布了Google Talk,這是一個IP電話及即時通訊的服務,即时通讯功能採用了開放的Jabber/XMPP。预计这将对Jabber社区起很大的推动作用。初期此服務不支援伺服器到伺服器的通讯功能,所以未能完全發揮Jabber的分散式特色;雖然任何Jabber客戶端都能連接到Google Talk,但是用戶若欲登入Google Talk,必須擁有Google Talk帳號(即Gmail帳號),而用戶也無法與公共Jabber網路的用戶對談。自2006年1月17日起,伺服器到伺服器的通訊啟用了,Google Talk用戶可與其他Jabber公共網路的用戶對談。
[编辑] 優點
開放— Jabber協定是自由、開放、公開的,並且易於瞭解。而且在客戶端、伺服器、元件、源碼庫等方面,都已經各自有多種實作。
標準— 網際網路工程工作小組(IETF)已經將Jabber的核心XML串流協定以XMPP之名,正式列為認可的即時通訊及Presence技術。而XMPP的技術規格已被出版為RFC 3920及RFC 3921。
證實可用— 第一個Jabber技術是Jeremie Miller在1998年開發的,現在已經相當穩定;數以百計的開發者為Jabber技術而努力。今日的網際網路上有數以萬計的Jabber伺服器運作著,並有數以百萬計的人們使用Jabber即時傳訊軟體。
分散式— Jabber網路的架構和電子郵件十分相像;因此任何人都可以運行自己的Jabber伺服器,使個人及組織能夠掌控他們的即時傳訊體驗。
安全— 任何Jabber伺服器可以獨立於公眾Jabber網路(例如在企業內部網路中),而使用SASL及TLS等技術的可靠安全性,已內建於核心XMPP技術規格中。
可擴展— XML命名空間的威力可使任何人在核心協定的基礎上建造客製化的功能;為了維持通透性,常見的擴充套件由Jabber軟體基金會管理。
彈性佳— Jabber除了可用在即時通訊的應用程式,還能用在網路管理、內容供稿、協同工具、檔案共享、遊戲、遠端系統監控等。
多樣性— 用Jabber協定來建造及布署即時應用程式及服務的公司及開放源碼計劃分布在各種領域;用Jabber技術開發軟體,資源及支援的來源是多樣的,使得使你不會陷於被「綁架」的困境。
[编辑] 運作方式
Jabber網路是基於伺服器的(即客戶端之間彼此不直接交談),但是也是分散式的。不像AOL即時通或MSN Messenger等服務,Jabber沒有中央官方伺服器。Jabber.org的公眾伺服器上有大量的用戶,所以有些人誤解了,以為它是官方伺服器,不過事實上任何人都可以在自己的網域上運行Jabber伺服器。
Jabber識別符(JID)是用戶登入時所使用的帳號,看起来通常像一个电子邮件地址,如someone@example.com;前半部分为用户名,后半部分为Jabber服务器域名,兩個欄位以@符號區隔。
假設朱麗葉(juliet@capulet.com)想和羅密歐(romeo@montague.net)通話,他們兩人的帳號分別在 Capulet.com 及 Montague.net 的伺服器上。當朱麗葉輸入訊息並按下傳送鈕之後,一連串的事件就發生了:
- 朱麗葉的Jabber客戶端將她的訊息傳送到Capulet.com Jabber伺服器。
- Capulet.com Jabber伺服器開啟與Montague.net Jabber伺服器的連接。
- Montague.net Jabber伺服器將訊息寄送給羅密歐。如果他目前不在線上,那麼儲存訊息以待稍後寄送。
|
![]() |
|
![]() |
|
![]() |
|
羅密歐與朱麗葉兩人的Jabber服務是由兩家不同的業者所提供的,而他們彼此傳訊時,不須擁有對方伺服器的帳號,也不須成為對方業者的會員。
[编辑] 連接其他協定
Jabber系统有一个独特的网关(也称作传送器)功能,该功能允许用户可以使用其他协议,如AOL、ICQ、MSN、Yahoo、短信或者电子邮件。和Trillian或Gaim等其他多协议客户端不同的是,Jabber在服务器级别提供这个功能,任何Jabber用户都可以注册一个这样的网关来登錄其他网络。也就是说任何支持Jabber协议的客户端都可以访问一个存在的网关,来与其他网络上的用户联系。
[编辑] Jabber客户端软件列表
[编辑] 仅支持Jabber协议的客户端软件
[编辑] 開放源碼
- JeCat-Jabber (PHP/Windows/Linux) http://jj.jecat.cn/
- Bombus (J2ME/MIDP 2.0) http://bombus.jrudevels.org/
- cabber(跨平台)http://cabber.sourceforge.net/(過時)
- Exodus(Windows)http://exodus.jabberstudio.org/
- Freetalk(Linux/Unix)http://savannah.nongnu.org/projects/freetalk/
- Gabber (Linux/Unix) http://gabber.jabberstudio.org/
- Gajim(跨平台)http://www.gajim.org/
- GOIM(跨平台)http://goim.sphene.net/
- Gossip (Linux/Unix) http://developer.imendio.com/wiki/Gossip
- IMCom(跨平台)http://nafai.dyndns.org/
- Iruka(跨平台)http://www.nongnu.org/iruka/(過時)
- jabber.el(Emacs Lisp)http://intellectronica.net/emacs-jabber/
- JabberFoX(Mac OS X)http://jabberfox.sourceforge.net/(過時)
- Jabberzilla(跨平台)http://jabberzilla.jabberstudio.org/
- Jabber WindowGram Client(跨平台)http://jwgc.blathersource.org/
- JBother(Java)http://jbother.org/
- Jeti (Java) http://jeti.jabberstudio.org/
- Jeti/2(Java/eComStation/OS/2)http://www.ehlertronic.de/jeti2.htm
- JWChat(JavaScript)http://jwchat.sourceforge.net/
- mcabber(跨平台)http://www.lilotux.net/~mikael/mcabber/(cabber分支)
- moJab (J2ME/MIDP) http://mojab.sf.net/
- Psi(跨平台)http://psi-im.org/
- sjabber(跨平台)http://www.pipetree.com/jabber/sjabber/(過時)
- The Coccinella(跨平台)http://hem.fyristorg.com/matben/
- Tkabber(跨平台)http://tkabber.jabber.ru/
- Whisper IM (Java) https://whisperim.dev.java.net/
- wija (Java) http://www.media-art-online.org/wija/
[编辑] 免費軟體
- Colibry IM (J2ME/MIDP) http://violonix.com/
- Gush(跨平台)http://2entwine.com/
- JAJC (Windows) http://jajc.ksn.ru/
- Pandion (Windows) http://www.pandion.be/
- Google Talk (Windows) http://www.google.com/talk/
- Spark(跨平台), http://www.jivesoftware.org/spark/
- TipicIM (Windows) http://www.tipic.com/
[编辑] 商業軟體
- Akeni Jabber Client(跨平台)http://www.akeni.com/
- BellSouth Messenger (Windows)(BellSouth顧客免費)http://messenger.bellsouth.net/
- Chatterbox (Web-JavaScript 及 Windows) http://www.clientside.co.uk/
- Chatopus (PalmOS) http://www.chatopus.com/
- Jabber Messenger (Windows) http://www.jabber.com/
- Neos (Windows) http://www.neosmt.com/
- TipicME (J2ME-PersonalJava) http://www.tipic.com/
- TipicWeb (Java Applet) http://www.tipic.com/
- TSIM (Windows) http://triplesoftware.nl/
[编辑] 支持Jabber的多协议客户端软件
[编辑] 開放源碼
- Adium X(Mac OS X)http://www.adiumx.com/
- Bitlbee(跨平台)http://www.bitlbee.org/
- Centericq(跨平台)http://konst.org.ua/en/centericq/
- Fire (Mac OS X) http://fire.sourceforge.net/
- Gaim(跨平台)http://gaim.sourceforge.net/
- Kopete(Linux/Unix)http://kopete.kde.org/
- Miranda IM(Windows)http://miranda-im.org/
- Simple Instant Messenger(跨平台)http://sim-icq.sourceforge.net/
[编辑] 免費軟體
[编辑] 商業軟體
- Proteus (Mac OS X) http://www.defaultware.com/proteus/
- Trillian Pro (Windows)(透過插件)http://www.ceruleanstudios.com/
- iChat(只在 Mac OS X v10.4 Tiger 以上)http://www.apple.com/macosx/features/ichat/
[编辑] Jabber服务器端软件
- Antepo OPN(Java,商业软件)http://www.antepo.com/?products.opnserver
- Corporate Hardened Instant Messaging Engine(Java, GPL)http://www.codecobra.com/chime/(尚未提供S2S支持)
- ejabberd(跨平台的,GPL)http://ejabberd.jabber.ru/
- Jabber XCP(Linux/Solaris/Windows,商业软件)http://www.jabber.com/
- jabberd(跨平台的,GPL)http://jabberd.jabberstudio.org
- jabberd2(跨平台的,GPL)http://jabberd.jabberstudio.org/2/
- Jive Wildfire(now is OpenFire) (Java, GPL) http://www.jivesoftware.org/wildfire/
- Merak IM(Windows,商业软件)http://www.icewarp.com/products/instant_messaging/
- Tigase (Java, GPL) https://tigase.dev.java.net/
- xmppd.py(跨平台的,GPL)http://sf.net/projects/xmpppy/
- SoapBox Server(.NET,商业软件)http://www.coversant.net/server
[编辑] 使用Jabber协议的客户端与服务器端对话的例子
客户端(kuusipuu)连接到一个Jabber服务器(amessage.de:5222/TCP),发送一条消息(主题和内容均为“test 1449”)到另一个客户端(tero),然后登出。
kuusipuu:
<?xml version="1.0"?> <stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="amessage.de">
amessage.de:
<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='amessage.de' id='1461777714'>
kuusipuu:
<iq type="set" id="auth_2" to="amessage.de" >
<query xmlns="jabber:iq:auth">
<username>kuusipuu</username>
<password>mypassword</password>
<resource>Work</resource>
</query>
</iq>
amessage.de:
<iq from="amessage.de" id='auth_2' type='result'/>
kuusipuu:
<message to="tero@example.com" > <subject>test 1449</subject> <body>test 1449</body> </message> <presence type="unavailable" > <status>Logged out</status> </presence> </stream:stream>
amessage.de:
</stream:stream>



