Jabber介绍(补充)

顾均
2023-12-01

dull 发表于 2006-4-21 1:07:00
 

from: wiki

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的分布式特色。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 的服务器上。当朱丽叶输入讯息并按下传送钮之后,一连串的事件就发生了:

1、朱丽叶的Jabber客户端将她的讯息传送到Capulet.com Jabber服务器。
2、Capulet.com Jabber服务器开启与Montague.net Jabber服务器的连接。
3、Montague.net Jabber服务器将讯息寄送给罗密欧。如果他目前不在在线,那麽储存讯息以待稍后寄送。

 罗密欧与朱丽叶两人的Jabber服务是由两家不同的业者所提供的,而他们彼此传讯时,不须拥有对方服务器的帐号,也不须成为对方业者的会员。


连接其他协定

Jabber系统有一个独特的网关(也称作传送器)功能,该功能允许用户可以使用其他协议,如AOL, ICQ, MSN, Yahoo, SMS或者E-mail。和Trillian或Gaim等其他多协议客户端不同的是,Jabber在服务器级别提供这个功能,任何Jabber用户都可以注册一个这样的网关来登录其他网络。也就是说任何支持Jabber协议的客户端都可以访问一个存在的网关,来与其他网络上的用户联系。


Jabber客户端软件列表
仅支持Jabber协议的客户端软件

开放源码
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/

免费软件
Gizmo (VoIP) (跨平台) http://www.gizmoproject.com/

商业软件
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 Messenger (Java, GPL) http://www.jivesoftware.org
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/

使用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>

 

-----------文章来源:http://www.blog.edu.cn/user1/12124/archives/2006/1248671.shtml

 

 类似资料: