可扩展消息与存在协议

✍ dations ◷ 2025-09-08 04:26:16 #即时通讯,公开标准,基于XML的标准,应用层协议

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

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

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

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

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

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

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

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

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

相关

  • 小写字母小写字母,亦作小写体,是罗马字母、希腊字母、西里尔字母等字母表中所存在的两种字母形式之一,如罗马字母表中第一个字母有两种形式,大写为A,小写则为a。在使用这几种字母表的语言
  • 加斯帕尔·博安加斯帕尔·博安(法语:Gaspard Bauhin,Caspar Bauhin;拉丁化:Casparus Bauhinus,1560年-1624年),文艺复兴时期欧洲科学家之一。出生于巴塞尔,其父母是法国人,后来,他在巴塞尔大学担任希腊
  • 神圣的人神圣之人(拉丁语:Homo sacer,字面意为“分别的人”)是罗马法中的一个刑法概念。这样的人,一方面被驱逐出人类社会,因此不受法律保护,任何人都可以杀死他而不构成犯罪。但另一方面他
  • 双盲实验双盲是科学方法的一种,目的是避免研究结果受安慰剂效应或观察者偏向所影响。在各种科学研究领域中,从医学、食品、心理到社会科学及法证都有使用双盲方法进行实验。单盲(Single
  • 阿尔勒阿尔勒(法语:Arles; 加斯科:Arle)是法国南部罗讷河口省的一个市镇,位于该省西北部,同时也是该省的一个副省会,下辖阿尔勒区,2016年时的人口数量为52857人。阿尔勒是法国管辖面积最大
  • 谢明山谢明山(1911年-1991年),台湾化工业元老,台湾现代化工研究、化工教育的主要奠基人之一。浙江鄞县人。大清宣统三年(1911年),生于宁波府鄞县。家庭信奉基督教。祖父为宁波府长老教会长
  • 鹅贡战役美国等国正式介入之后美国撤出至南越灭亡鹅贡战役是越战中一场小型战役,发生于1963年9月3日。越南南方民族解放阵线认为这场战役是对抗南越军队的另一个北村。对南方来说,这次
  • 新泽西州肯顿肯顿(英语:Camden)是美国新泽西州康登县的县治。根据2010年人口普查,本镇共有人口77,344人,相对2000年来说下降了2,560人,即下跌了3.2%。而2000年的人口相对1990年来说亦下降了7,5
  • 肺螺亚纲非正式群组 肺螺类 PulmonataCuvier, 1814肺螺类(学名:Pulmonata),亦作有肺类,旧作有肺目、肺螺目或肺螺亚纲,是腹足纲异鳃类支序之下的一个非正式群组。这个群组包括有螺和蛞蝓,均
  • 太子河区太子河区是辽宁省辽阳市下辖的一个市辖区。下辖2个街道、2个乡、1个镇,19个社区、44个行政村: