XMPP(Jabber)

1. 关于XMPP

www.xmpp.org

Jabber/XMPP是一项技术或协议。XMPP(ExtensibleMessaging and Presence Protocol),前称Jabber

可扩展消息发送和出场协议(XMPP)是一项用于即时通信的开放技术,支持广泛的应用,包括即时消息发送,出场,多方通讯聊天,声音和视频调用,协作,轻量级中间件,内容聚合,及XML数据的一般路由。

XMPP背后的核心技术由JeremieMiller1998年发明,并于19992000年在Jabber开源社区得到发展,在20022003年由IETF进行了规范化,最终在2004年发布了XMPPRFCs文档并于2011年进行了更新。

虽然核心技术已经稳定,但XMPP社区通过一个开放的标准程序继续定义了一些XMPP扩展,这套流程由XMPStandardsFoundation (XSF)运行。也有一个开源的活跃社区和商业开发者,提供了大量基于XMPP的软件。

FAQ

XMPPJabber之间的关系是什么?

这有点复杂。:)

然而,实质上,XMPP是来自1999年在Jabber开源社区出现的XML流协议(streaming XMLprotocol)的名字。当2002年这个社区提交此协议到IETF时,使用了”XMPP”这个名字代替”Jabber”,以消除开源社区和商业公司Jabber.com(此公司被Cisco收购)的可能冲突。

我可以使用XMPPlogo吗?

XMPP logo与本站其他内容在相同条款的许可之下,即slightlymodified MIT license。你可以找到logs的不同格式:png,svd,AI.


2. XMPP技术概览

XMPP最初是在Jabber开源社区中开发,提供一个开放、非集中式的用来代替当时已经关闭的即时消息服务。XMPP在类似的服务中有几个关键的优点:

开放XMPP协议是免费,开放,公开,并且容易理解的;另外,已经有多种实现形式,客户端,服务器,服务器组件,及代码库等。

标准化互联网工程任务组织(IETF)已经规范化核心的XML流协议(XMLStreaming protocols),并作为一种认可的即时消息发送和出场协议。XMPP规范于2004年发布为RFC3920RFC3921,并且XSF继续发布了很多XMPP扩展协议。在2011年核心RFCs被修订了,产生了最新的规范(RFC6120RFC6121,和RFC6122

已证明–最初的Jabber/XMPP技术由JeremineMiller1998年开发并且现在相当稳定;成百上千的开发者参与这项技术,在今天的Internet中有上万的XMPP服务器在运行,成百上千万的用户通过公开的服务器(如GoogleTalk)和世界范围内的机构部署,使用XMPP来发送即时消息。

非集中式XMPP网络架构与email相似;因此,任何人都可以运行他们自己的XMPP服务器,使得个人和机构能掌控自己的通讯体验。

安全–任何XMPPserver可以隔离于开放的网络(e.g.,在一个公司网络),并且有健壮的安全性,使用SASLTLS作为内建到核心的XMPP协议。另外,XMPP开发者社区正活跃于进行end-to-end加密,将安全性进一步提升。

可扩展– 使用XML的强大性,每个人都能在核心协议上构建定制功能。为保持互操作性,通用扩展发布在XEPseries(http://xmpp.org/xmpp-protocols/xmpp-extensions/),但这样的发布不是必需的,有必要的话各机构可以维护他们自己的私有扩展。

灵活性XMPPIM之外的应用包括网络管理,内容组织,协作工具,文件共享,游戏,远程系统监控,网络服务,轻量级中间件,云计算,等更多。

多样性– 大量公司和开源项目使用XMPP来构建并部署实时应用和服务;你使用XMPP技术的时候永远不会被“锁住”。


下面的页面(链接)提供了不同XMPP技术的介绍,包括规范链接,实现,指南,和特殊目的讨论会。

核心(Core-关于XML流的核心XMPP技术信息

BOSH – XMPP(或其他)通信的一个HTTP绑定

Jingle – SIP兼容的多媒体信号发送,用于声音,视频,文件传输,和其他应用

多用户聊天–灵活,多方通信

PubSub – 提醒和通知用于数据联合,富展现等

2.1核心(Core

概述

作为核心,XMPP是一项在网络进行XML流处理的技术。这项协议,于1999年在Jabber开源社区出现,最初设计用于提供一个开放,安全,分布式的面向客户的即时通信(IM)服务,用于替代如ICQAIMMSN。此核心技术于2004年在XMPP这个名称下进行标准化。核心技术包括:

Ø  基本XML流处理层

Ø  使用传输层安全(TLS)加密通道

Ø  使用简单认证和安全层(SASL)进行强身份验证

Ø  使用UTF-8进行完全的Unicode支持,包括完全国际化的地址

Ø  关于网络可用性的内建信息(“出场”)

Ø  用于双向验证的出场订阅

Ø  可到场的联系列表(“花名册”)

规范

核心的XMPP技术在IETF发布的两个RFC中定义。最初的XMPPRFCRFC3920RFC3921)由IEFTXMPP工作组在200410月发布。在2011年它们被修订,结果产生了当前的规范。

Ø  RFC6120: XMPP Core

Ø  RFC6121: XMPP IM

Ø  RFC6122: XMPP Address Format

其他网络草稿,扩展等在

<http://xmpp.org/protocols/internet-drafts/>.

实现

有很多对核心XMPP规范的实现。见下列页面:

Ø  客户端

一个XMPP客户端是一个能使你连接到XMPP的软件或应用,用于同Internet上其他人进行即时通信。对于不同设备或操作系统,都有很多免费的客户端可用。

http://xmpp.org/xmpp-software/clients/

Ø  服务器

一个XMPP服务器提供基本的消息发送,到场,和XML路由等功能。此页面列出了Jabber/XMPP服务器软件,你可以用来运行你自己的XMPP服务,基于Internet或局域网。

http://xmpp.org/xmpp-software/servers/

jabberd 1.x (Linux)

jabberd 2.x (Linux/Solaris/Windows)

Openfire (Java,Linux/Mac/OSX/Solaris/Windows)

……

Ø  代码库

来自很多不同编程语言的代码库是可用的,因此使得开发者能构建大量基于XMPP的不同应用。

http://xmpp.org/xmpp-software/libraries/

讨论组

http://xmpp.org/participate/discuss-xmpp/

2.2 BOSH

概述

BOSH 是”Bidirectional-streams Over Synchronous HTTP”基于同步HTTP的双向流,一项用于HTTP的双向通信技术。BOSH模仿了很多与TCP相似的传输元素。对于同时需要”push”和”pull”通信的应用程序,BOSH比起其他基于HTTP的双向传输协议或AJAX技术,更加高效利用带宽和响应灵敏。BOSH达成此效率和和低延迟,是通过避免HTTPpolling,并不像Comet技术那样重排序HTTP块响应。BOSH主要用于Jabber/XMPP客户端和服务器之间的通信交换。然而,BOSH并不仅限用于XMPP,也可用于其他类型的通信。

实现

支持BOSHXMPP服务器

·        ejabberd

·        JabberXCP

·        IsodeM-Link

·        Openfire

·        Prosody

·        Tigase

2.3 Jingle

概述

大体上,Jingle提供了一种方法用于客户端建立,管理和解除多媒体会话。这种会话能支持宽泛的应用类型(如声音,视频聊天,和文件传输),和使用各种媒体传输方法(如TCPUDPRTP,或甚至XMPP自身传输)。建立Jingle会话的信号(signalling)XMPP中发送,并且媒体通常直接通过peer-to-peer或媒体传送器传送。Jingle为应用类型和媒体传输提供了一个可插入的框架,在声音和视频聊天的情形下,Jingle协议通常使用实时传输协议(Real-timeTransport ProtocolRTP)传输媒体,因此与现存的多媒体技术如会话发起协议(SessionInitiation ProtocolSIP)兼容。而且,Jingle信号语义被设计为与SIPSDPSessionDescriptionProtocol, SDP)一致,使得它能很直观的在XMPP网络或SIP网络之间提供信号网关。

实现

代码库

·        libjingle (C/C++)

·        Smack (Java)

·        TelepathyGabble (C)

·        yjingle (C++)

2.4多用户聊天

概述

MUCMulti-UserChat)多用户聊天,用于多方信息交换的XMPP扩展,相似于互联网中继聊天(IRC,Internet Relay Chat),通过它多个XMPP用户能在一个房间或通道环境下交换信息。在标准聊天室功能(如房间主题和发起)之外,协议一个强的房间控制模型,包括踢人和禁止用户,命名房间主持人和管理者,要求会员资格或密码以加入房间等。因为MUC房间基于XMPP,不仅能用来进行文本信息交换,也能用于各种XML装载物。

规范

实现

包含内部MUC支持的XMPP服务器:

·        ejabberd

·        JabberXCP

·        M-Link

·        Openfire

·        Prosody

·        Tigase

PubSub

概述

XMPPPubSub是一个协议扩展,用于一般的发布订阅功能,在XEP-0060中描述。此协议使XMPP实体可以在pubsub服务上创建节点(主题)并在节点上发布信息,通过事件通知(有或无负载)广播给所有订阅了此节点的实体。Pubsub使用经典的Observer设计模式,作为基础服务于大量应用,包括新闻订阅,内容聚合,富展现,地理位置,工作流系统,网络管理系统,和其他需要事件通知的应用。XEP-0163中定义的个人事件协议(personalenventing protocalPEP),提供了一个Pubsub的出现通知描述,能使每个用户的JabberID作为一个虚拟的pubsub服务用于富展现,微博,社会网络,和实时交互。

定义

XEP-0060:Publish-Subscribe

XEP-0163:Personal Eventing Protocol

XEP-0248:PubSub Collection Nodes



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值