XMPP协议简介

关于XMPP

www.xmpp.org

 

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

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

 XMPP背后的核心技术由Jeremie Miller在1998年发明,并于1999和2000年在Jabber开源社区得到发展,在2002和2003年由IETF进行了规范化,最终在2004年发布了XMPP RFCs文档并于2011年进行了更新。

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

FQA

XMPP和Jabber之间的关系是什么?

这有点复杂。J

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

我可以使用XMPP的logo吗?

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

XMPP技术概览

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

核心(Core)

概述

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

Ø  基本XML流处理层

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

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

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

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

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

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

 

规范 

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

Ø  RFC 6120: XMPP Core

Ø  RFC 6121: XMPP IM

Ø  RFC 6122: 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/

 BOSH

概述 

BOSH是” Bidirectional-streams Over Synchronous HTTP” 基于同步HTTP的双向流,一项用于HTTP的双向通信技术。BOSH模仿了很多与TCP相似的传输元素。对于同时需要”push”和”pull”通信的应用程序,BOSH比起其他基于HTTP的双向传输协议或AJAX技术,更加高效利用带宽和响应灵敏。BOSH达成此效率和和低延迟,是通过避免HTTP polling,,,

 

实现 

支持BOSH的XMPP服务器

·        ejabberd

·        JabberXCP

·        Isode M-Link

·        Openfire

·        Prosody

·        Tigase

 Jingle

概述 

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

 

实现 

代码库

·        libjingle (C/C++)

·        Smack (Java)

·        Telepathy Gabble (C)

·        yjingle (C++)

多用户聊天

概述

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

 

规范

 

实现

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

·        ejabberd

·        JabberXCP

·        M-Link

·        Openfire

·        Prosody

·        Tigase

 PubSub

XMPPPubSub是一个协议扩展,用于一般的发布订阅功能,在XEP-0060中描述。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值