`
vanadiumlin
  • 浏览: 504656 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

一.摘要
这是我粗略读了一遍Jabber协议和相关技术文章后的产物,有些地方不一定准确。在文章中引用的一些代码来自www.jabber.org上的文章。

二. 什么是Jabber
    Jabber就像ICQ,MSN一样,是一个基于Internet的即时通讯系统,但是同这些即时通讯软件不同的是,它是一个开放的即时通讯系统,也是一 个基于XML Stream 的协议,用于在Internet上的两个实体之间交换信息,现场状态(divsence)和其他的结构化信息。你可以自己架设自己的Jabber服务器, 使用不同的Jabber Client 软件,而不象ICQ或MSN一样,依赖于AIM或MSN的服务器和软件。
  第一个Jabber技术在 1998由Jeremie Miller 开发,到目前为止,Internet上已经有数以万计的Jabber服务器和数以百万的Jabber用户。IETF已经将Jabber定为即时通讯和现场 技术的标准协议,称为XMPP(Extensible Messaging and Presence Protocol),相关的规范是RFC3920和RFC3921,并且,JSF(Jabber Software Foundations)也在它的JEP中制定了更多扩展协议(例如GroupChat和文件传输等),这些扩展协议目前还没有成为标准,但是将来有成为 标准的可能。
  作为一个标准协议,目前有大量的基于各种语言,各种平台,和各种 license (商业,GPL, Apache )和Open Source的Jabber服务器和Client端被开发出来,同时还有大量的Library,在这些Library的基础上,大家可以自己开发自己的 Jabber应用。
    更多的信息,请看www.jabber.org
三. Jabber的使用
    Jabber使用同其他的即时通讯软件差不多,你根据你的平台,下载一个Jabber的Client (例如windows 下的Exodus, linux下的Gabber, PSI等),在Internet上寻找一个Jabber服务器(例如Jabber.cn),注册一个帐号,然后再通讯列表 中加入你的好友,就可以开始聊天了。你也可以自己架设一个自己的Jabber服务器,这需要先下载相应的Jabber服务器软件(例如Jive, Jabberd等),安装配置后,把这个服务器的地址告诉你的朋友,你们就可以拥有一个自己的即时通讯服务器了。
  Jabber可以实现不同即时通讯软件之间互联互通。例如,通过一个Jabber Client,你可以用你的MSN或ICQ帐号,通过Jabber网关登陆到MSN或ICQ 服务器上,和你的MSN和ICQ好友进行通讯。
    在实时通讯的功能上,Jabber同其他的即时通讯软件没有什么太大的不同,普通的即时通讯;群组聊天,好友列表的分类,上线提醒等,这些功能随着具体Jabber Client软件的不同而略有不同,但大体上都是差不多的。
四. Jabber的架构
    Jabber从结构上来,更类似于一个邮件服务器,它是分布式的,也就是说,并不象其他即时通讯软件那样,所有的即时通讯用户都连接到同一个服务器上,而是象邮件服务器那样,不同的用户连接到自己的服务器上,在服务器之间通过一个标准协议来交换信息
一个实体在Jabber网络上被称为一个接点,它有唯一的标识,被称为JID,统称用来表示一个Jabber用户,但是也可以表示其他内容,例如一个聊天室。它的格式是node@domain/resource, node@domain有点类似电子邮件的地址格式,resource用来表示node不同的设备或位置,这个是可选的,例如我在Server1上注册了一个用户,用户名为doom,那么我的JID就是doom@server1, 在发送消息时,指明doom@server1就可以了,resource可以不用指定,但我在登录到这个Server时,我的JID可能是doom@server1/exodus(如果我用Exodus软件登录),也可能是doom@server1/psi(如果我用psi登录)
   Jabber是一个典型的C/S 架构,而不是象大多数即时通讯软件一样,使用P2P的架构,也就是说在大多数情况下,在两个Client进行通讯时,他们的消息都是通过Server传递 的(也有例外,例如在两个Client传输文件时)。采用这种架构,是为了简化Client端,将大多数工作放在Server段进行,这样,Client 端的工作就比较简单,而且,当增加功能时,多数是在Server端进行。
  Jabber是一套基于XML Stream的协议,当一个Jabber Client连接到一个Jabber Server上时,Client建立了一个从Client到Server的XML流,Server也同时建立了一个从XML到Server的XML流,这 个流看起来像这个样子:
   |--------------------|
   |            |
   |--------------------|
   |          |
   |             |
   |         |
   |--------------------|
   | |
   |        |
   |      |
   |--------------------|
   |      |
   |        |
   |           |
   |--------------------|
   | ...             |
   |--------------------|
   |       | 所有的信息都是以XML格式加入到这个流中(这些信息被称为stanzas),例如如下的消息:
 from='juliet@capulet.com' to='romeo@montague.net'>
   Wherefore art thou, Romeo?
 
    因为是XML格式的数据,用户可以自己对数据进行扩充,加入自己的基于XML的私有数据。
五. XMPP协议简单介绍
   XMPP在2004年10 月被IETF认定为标准协议,它包括RFCS 3920和RFCS 3921,其中,3920被称为Extensible Messaging and Presence Protocol (XMPP): Core,描述了Jabber 中XML Stream的核心技术,包括安全和国际化的一些技术; 3921被称为Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence,主要是基于即时通讯的一些技术,例如通讯列表,黑名单等。
IETF还制定了两个扩展协议,3922,被称为Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM);3923,被称为 End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)。
同时,JSF还制定了一系列有关Jabber的扩展协议,称为JEPS(Jabber Enhancement Proposals) ,用来制定一些Jabber的扩展功能,这些协议虽然还没有称为XMPP的一部分,但估计也是迟早的事情。
以下是XMPP中的一些需要特殊说明概念:
Message:Stream的一个子元素,,用来表示传输的消息,有一些相关属性,例如to, from, type等,来表明发送方或接受方,它可以包括一些子元素,例如,等,当用户发送一条信息时,就会在流的上下文中插入一个Message元素,中间有相关的信息。
Gateway: 用于把XMPP协议转化为非XMPP协议,或将非XMPP协议转化为XMPP协议,应用于Jabber同其他IM的通讯,或是其他系统,例如Email
Presence: Stream的一个子元素, 用来表明用户的状态,如在线,离线等,当用户离线或改变自己的状态时,就会在stream的上下文中插入一个Presence元素,来表明自身的状态。
I/Q: Info/Query Stream的一个子元素,,一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行相应。例如,client在stream的上下文 中插入一个元素,向Server请求得到自己的好友列表,Server返回一个,里面是请求的结果。
Subscriptions: 订阅机制,用来保证用户可以管理订阅指定用户的Presence
TLS/SASL: Jabber的安全认证机制(这部分我没有太看懂,大意是,在Client和Server,Server和Server进行通讯前,必须有一套安全机制进行认证,在经过认证后,才能进行通讯 TLS和SASL就是基于认证的两种技术)
六. Jabber的发展趋势
    我个人觉得,由于MSN,QQ,ICQ经过多年发展,已经拥有庞大的消费级终端用户群,对这些用户来说,Jabber高举开放协议的大旗在这方面并没有多 少优势而言。同时在这些即时通讯软件所上的附加功能越来越多(例如语音,视频,游戏等),Jabber在这方面功能较弱。但是,我觉的在企业即时通讯和应 用领域,可能会有比较大的作为。目前的商业的Jabber软件,针对的都是企业即时通讯服务。
    由于Jabber是基于XML的流传输协议,它更适合与传输结构化的信息,这样,在企业的应用领域,会有比较大的发展前途,比较典型的就是,Jabber 已经作为COE(公共操作环境)的一部分,在美军的FBS(Future Combat Systems)系统中提供服务,用于提供Chat服务和接受来自传感器的战场信息,使得实时信息可以单兵作战平台,传感器和其他资源间传送。
    同时,由于Jabber跨平台的特性,已经出现了支持Jabber的IP电话和手持设备;有报道说,已经有公司在Jabber的基础上开发订阅/分发平台。
    正如Jabber 的创始人Jeremie Miller所希望的,Jabber将来可能更加用于实时的XML数据传输上,而不是仅仅作为一个即时通讯的平台。

七.常用开源Jabber
1. Openfire (Wildfire) 3.x
授权: GPL or 商用
操作系统平台:所有(使用Java开发)
XMPP Jabber 协议实现情况:98%
Tim 评价:
安装和使用非常简单,安装后进入Web界面进行2~3分钟的配置所有的东西都设好了。使用Java语言开发,在目前Java开发人员到处普及的情况下进行 维护和扩展的成本非常低。在我的测试中加上 Connection Manager 的情况下单台服务器可支持 30 万并发用户。缺点是目前还不支持cluster。如果企业内部部署IM使用 Wildfire + Spark 是最佳的组合。


2. ejabberd
授权: GPL
操作系统平台:Linux, Windows, MacOS X 等
XMPP Jabber 协议实现情况:91%
Tim 评价:
Ejabberd目前是可扩展性最好的一种Jabber/XMPP服务器,支持分布多个服务器,并且具有容错处理,单台服务器失效不影响整个cluster运作。
顾虑就是它采用一种大家都没听过的语言Erlang开发,所以很多人可能会象我一样因为这个原因放弃了它。

3. Jabberd 2.x
授权: GPL
操作系统平台:主要是 Linux, (Windows 也支持,但不知道性能怎样)
XMPP Jabber 协议实现情况:76%
Tim 评价:
自从jabber.org改用ejabberd之后,Jabberd一直都在走下坡路。扩展性比不上ejabberd, 易用性比不上 Wildfire,唯一的优势是使用C开发,如果你坚持要用C开发,那么还是选择jabberd吧。

4. Jabberd 1.x
授权: GPL
操作系统平台:主要是 Linux, (Windows 也支持,但不知道性能怎样)
XMPP Jabber 协议实现情况:45%
Tim 评价:
在几年前 jabberd 就是 Jabber 的代名词,至今很多 Jabber 文档仍然介绍的是 Jabber 1.4,
在我以前写的《Jabber 服务器占有率比较》中仍然排名第一。但是它很多新的规范都不支持,相信大部分用户都将转向新的服务器。


5. 后起之秀 DJabberd
授权: open source
操作系统平台:主要是 Linux, (Perl写的,其他平台应该也支持)
XMPP Jabber 协议实现情况:N/A
Tim 评价:
djabberd 使用 epoll 技术,理论上单台服务器可以支持更多用户。Djabberd目前主要应用在LiveJournal上,大部分XMPP协议都支持,稳定性也不用置疑。但是因为推出时间尚短,很多细节功能可能需要时间慢慢完善。

分享到:
评论

相关推荐

    Jabber服务协议的概述

    Jabber服务协议详解 **一、Jabber——开源即时通信系统的先驱** Jabber,一个由开源社区发起并主导的即时消息与在线状态系统,在即时通信领域独树一帜。与其他即时消息(IM)服务不同的是,Jabber采用了一套开放的...

    jabber概述

    ### Jabber概述与关键技术知识点 #### 一、Jabber简介 Jabber是一个由开源社区发起并领导开发的即时消息和在线状态的系统。它最大的特点在于采用了开放的XML协议,这使得Jabber系统与其他即时消息(IM)服务相比具有...

    Cisco Jabber For MacOS 12.5.1

    Cisco Jabber是一款由思科公司开发的企业级即时通讯和协作工具,专为MacOS平台设计。此版本"12.5.1"是针对Mac用户的最新更新,旨在提供高效、安全且集成化的通信体验。Cisco Jabber支持多种通信方式,包括文字聊天、...

    网络通信 jabber协议

    Jabber协议是一种基于XML的即时通讯协议,由开源社区主导开发,主要用于实现即时消息和在线状态的交换。它的核心优势在于其开放性,允许开发者根据需求进行扩展和定制。Jabber协议主要包括三个顶级XML元素:`...

    cisco jabber

    Cisco Jabber是一款由思科公司开发的企业级即时通讯和协作工具。它整合了多种通信方式,包括文字聊天、语音通话、视频会议、桌面共享、文件分享等,旨在提高工作效率并促进团队间的协作。 **1. Cisco Jabber简介** ...

    jabber协议分析及开发文档

    包含①《Instant Messaging in Java,The Jabber Protocols》、②《Developing Applications Using Jabber》、③RFC-3920、④RFC-3921。 ①英文文档,详细分析jabber协议。This book is dedicated to the Jabber ...

    Jabber 协议 即时消息和在线状态的系统

    Jabber 协议是一种基于XML的开放即时通讯协议,主要设计用于实现即时消息和在线状态的传递。这个协议由Jabber开源社区发起,并且不断演化以适应各种扩展需求。Jabber协议的核心特点在于其开放性,允许开发者创建...

    Cisco Jabber SIP URI呼叫

    在这种设定下,Jabber A通过MRA或内部连接能够呼叫Jabber B,而配置在CUCM、Expressway C和E上的设置对于组织1来说是相同的。 #### 3. 假设条件 - Jabber A用户和Jabber B用户能够在XMPP联邦上交换即时消息(IM)和...

    思科Jabber令企业协作轻而易举

    思科Jabber是一款高效的统一通信应用程序,旨在为企业提供随时随地、跨设备的即时通信与协作体验。在这个信息快速流通的时代,员工常常需要面对不同地点、不同时区的工作挑战,而思科Jabber正是针对这一需求应运而生...

    jabber/xmpp技术研究与应用

    根据给定文件的信息,本文将深入探讨Jabber/XMPP技术的相关知识点,重点解析其技术体系、安全机制以及在即时通信系统中的应用。 ### Jabber/XMPP技术概述 Jabber/XMPP(eXtensible Messaging and Presence ...

    Cisco Jabber 服务器设置 中文

    根据提供的文件信息,我们可以总结出以下关于Cisco Jabber服务器设置的知识点: 1. Cisco Jabber软件概述 - Cisco Jabber是一种企业级通信解决方案,它可以集成即时消息(IM)、语音、视频通话和电话功能,提供统一...

    Cisco Jabber Lab v9.6

    本文档是关于Cisco Jabber Lab v9.6的最新实验室指南,由Cisco官方提供,主要面向CCIE Voice认证考试的考生。Jabber是Cisco公司推出的一个统一通信软件,它支持即时消息传递(IM)、语音、视频和屏幕共享等功能。 ###...

    基于开源jabber_XMPP_架设内部即时通讯服务的解决方案.pdf

    标题与描述均提到了"基于开源jabber_XMPP_架设内部即时通讯服务的解决方案",这指向了一个具体的IT领域知识点:如何利用开源技术Jabber和XMPP来构建企业内部的即时通讯系统。这一知识点包含了即时通讯的基础概念、...

    jxa1.2—jabber开源框架

    **JXA1.2——Jabber开源框架详解** JXA1.2是针对移动设备,特别是基于Java 2 Micro Edition (J2ME) 平台的 jabber 开源框架。Jabber 是一个开放标准的即时通讯协议,它允许用户进行实时通信,包括文字聊天、语音...

    JeCat-Jabber PHP开源即时通讯软件[Version 0.1]

    顾名思义 JJ 使用 Jabber 协议(XMPP) ,因此可以 和 包括 GTalk 在内的 其它任何 XMPP 即时通讯软件 聊天。 JJ 项目的初衷在于 演示 桌面窗口 和 PHP 多任务处理,这两大 在长期在 PHP程序员 眼中 几乎是“不可能”...

    Jabber协议概述

    **Jabber协议概述** Jabber协议,全称为Extensible Messaging and Presence Protocol(XMPP),是一种基于XML的即时通信协议。它最初由Jabber开源社区开发,并在2002年被互联网工程任务组(IETF)采纳为RFC 3920和...

    思科视频会议jabber

    思科视频会议jabber,MAC端软件,支持思科视频会议接入。

    JeCat-Jabber

    通过使用Jabber协议,JeCat-Jabber实现了与标准XMPP服务器的互操作性,这意味着用户可以与其他使用相同协议的用户进行交流,无论他们使用的是哪个IM应用。 在提供的压缩包文件中,我们可以找到以下三个文件: 1. *...

Global site tag (gtag.js) - Google Analytics