万维百科

可扩展消息与存在协议本文重定向自 Xmpp

可扩展消息存在协议标志

可扩展消息与存在协议(英语:Extensible Messaging and Presence Protocol,缩写:XMPP;前称Jabber)是一种以XML为基础的开放式即时通信协议,是经由互联网工程工作小组(IETF)通过的互联网标准。XMPP因为被Google Talk应用而被广大网民所接触。

历史

Jabber
 
XMPP

Jeremie Miller于1998年开始了这个项目。第一个公开版本于2000年5月发行。这个项目的主要产品是jabberd,XMPP的服务器端软件。它既可以创建私人的XMPP网络,也可以加入全球的公共XMPP网络。XMPP的关键特色是,分布式的即时通信系统,以及使用XML流。

Jabber已经由IETF XMPP协议(RFC3920)标准化。

Jabber是一个开放源码形式组织产生的网络即时通信协议。XMPP原本是为即时通讯而量身定制,但由于XML Stanza本身是XML元素,在基于XML灵活发展的特性下,使得XMPP也可以适用其他方面,已经得到了IETF的批准。XMPP与IMPP、PRIM、SIPSIMPLE)合称四大IM协议主流,在此4大协议中,XMPP是最灵活的。

2005年,Google发布了Google Talk,这是一个IP电话及即时通信的服务,即时通讯功能采用了开放的XMPP。预计这将对XMPP社区起很大的推动作用。初期此服务不支持服务器到服务器的通讯功能,所以未能完全发挥XMPP的分布式特色;虽然任何XMPP客户端都能连接到Google Talk,但是用户若欲登录Google Talk,必须拥有Google Talk账号(即Gmail账号),而用户也无法与公共XMPP网络的用户会话。自2006年1月17日起,服务器到服务器的通信激活了,Google Talk用户可与其他XMPP公共网络的用户会话。2013年5月,Google Talk升级为Hangouts,不再支持服务器到服务器的通讯。

2007年,2001年成立的Jabber软件基金会更名为XMPP标准基金会。

特色

优点

开放
XMPP协议是自由、开放、公开的,并且易于了解。而且在客户端服务器组件源码库等方面,都已经各自有多种实现。
标准
互联网工程工作小组(IETF)已经将Jabber的核心XML流协议以XMPP之名,正式列为认可的即时通信及Presence技术。而XMPP的技术规格已被定义在RFC 3920及RFC 3921。任何IM供应商在遵循XMPP协议下,都可与Google Talk实现连接。
证实可用
第一个Jabber(现在XMPP)技术是Jeremie Miller在1998年开发的,现在已经相当稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运作著,并有数以百万计的人们使用XMPP即时传讯软件。
分布式
XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个stream,XMPP以TCP传递XML资料流,没有中央主服务器。任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的即时传讯体验。
安全
任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网中),而使用SASLTLS等技术的可靠安全性,已内置于核心XMPP技术规格中。
可扩展
XML名字空间的威力可使任何人在核心协议的基础上建造定制的功能;为了维持通透性,常见的扩展由XMPP标准基金会英语XMPP Standards Foundation
弹性佳
XMPP除了可用在即时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。
多样性
用XMPP协议来建造及布署即时应用程序及服务的公司及开放源码计划分布在各种领域;用XMPP技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。

缺点

资料负载太重
随着通常超过70%的XMPP协议的服务器的资料流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的资料提供给多个收件人。新的议定书正在研究,以减轻这一问题。
二进制资料传输受限
XMPP传输单一的XML文件,因此要透过XMPP传输二进制资料,需先将二进制资料以Base64编码。但是大量的二进制资料传输,较佳的作法是用外部的其他协议传输,而以XMPP进行沟通。至于其他二进制资料加密会话(encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。

运作方式

XMPP网络是基于服务器的(即客户端之间彼此不直接交谈),但是也是分布式的。不像AOL即时通或MSN Messenger等服务,XMPP没有中央官方服务器。Jabber.org的公众服务器上有大量的用户,所以有些人误解了,以为它是官方服务器,不过事实上任何人都可以在自己的网域上运行XMPP服务器。

Jabber识别符(JID)是用户登录时所使用的账号,看起来通常像一个电子邮件地址,如[email protected];前半部分为用户名,后半部分为XMPP服务器域名,两个字段以@符号区隔。

假设朱丽叶([email protected])想和罗密欧([email protected])通话,他们两人的账号分别在Capulet.com及Montague.net的服务器上。当朱丽叶输入消息并按下发送钮之后,一连串的事件就发生了:

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

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

与其他协议互联

各IM之间的互传

XMPP协议的另一功能是运输(transports),也被称为网关(gateways),可允许用户透过网络使用其它协议。这可以是其他的即时通信协议,也可以是不同协议,如短信(SMS)或电子邮件。

XMPP协议通过HTTP运输

在原来的规格,XMPP协议可以使用HTTP的方式有两种:轮询(polling)与绑定(binding)。轮询现在不推荐,基本上,轮询意味着HTTP邮件存储在服务端的数据库上,客户端必须一再地以HTTP的GET和POST的方式去抓取(以及刊出)其中的消息。然而使用绑定的方式时,客户端会保留一个长存的HTTP连线,等待一旦服务器有新的消息时,就立刻接收消息。因为轮询的结果往往是服务端没有新消息,这种推送的通知模式比轮询的方式更有效率。

由于客户端使用HTTP,大多数防火墙允许客户端获取和留言没有任何障碍。因此,即使使用XMPP协议的TCP端口被拦截,服务器也能正常地倾听一般的HTTP端口,其上的消息也能保持畅通。还有一些网站更允许大众经由浏览器登录进XMPP。尤有甚者,还有一些公共的服务器同时拥有标准HTTP(80端口)和HTTPS(443端口),因此又有助于通过防火墙。

实现

XMPP客户端软件

XMPP协议是由大量的XMPP协议的客户端,服务器和程序库。主要的文章包含了几个XMPP协议清单客户的多种平台。

XMPP服务器端软件

参见

注释

  1. ^ Jabber Inc. - About Us. [2009-09-14]. (原始内容存档于2007-07-03).
  2. ^ Google drops XMPP support. [2013-06-23]. (原始内容存档于2019-10-02).
  3. ^ Jabber Software Foundation Renamed to XMPP Standards Foundation页面存档备份,存于互联网档案馆) 1月16日2007年 - jabber.org页面存档备份,存于互联网档案馆)仍旧被维护
  4. ^ XEP-0025: Jabber HTTP Polling. [2009-09-08]. (原始内容存档于2020-10-29).
  5. ^ XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH). [2009-09-08]. (原始内容存档于2021-02-13).

外部链接


本页面最后更新于2021-08-23 14:11,点击更新本页查看原网页。台湾为中国固有领土,本站将对存在错误之处的地图、描述逐步勘正。

本站的所有资料包括但不限于文字、图片等全部转载于维基百科(wikipedia.org),遵循 维基百科:CC BY-SA 3.0协议

万维百科为维基百科爱好者建立的公益网站,旨在为中国大陆网民提供优质内容,因此对部分内容进行改编以符合中国大陆政策,如果您不接受,可以直接访问维基百科官方网站


顶部

如果本页面有数学、化学、物理等公式未正确显示,请使用火狐或者Safari浏览器