关于XMPP
www.
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-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:///protocols/internet-drafts/>.
实现
有很多对核心XMPP规范的实现。见下列页面:
客户端
一个XMPP客户端是一个能使你连接到XMPP的软件或应用,用于同Internet上其他人进行即时通信。对于不同设备或操作系统,都有很多免费的客户端可用。
http:///xmpp-software/clients/
服务器
一个XMPP服务器提供基本的消息发送,到场,和XML路由等功能。此页面列出了Jabber/XMPP服务器软件,你可以用来运行你自己的XMPP服务,基于Internet或局域网。
http:///xmpp-software/servers/
jabberd 1.x (Linux)
jabberd 2.x (Linux/Solaris/Windows)
Openfire (Java,Linux/Mac/OSX/Solaris/Windows)
……
代码库
来自很多不同编程语言的代码库是可用的,因此使得开发者能构建大量基于XMPP的不同应用。
http:///xmpp-software/libraries/
讨论组
http:///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中描述。
|