XMPP的wiki简介摘录:
XMPP(Extensible Messaging and Presence Protocol,前称Jabber[1])是一种以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是最灵活的。
特色
(1)优点
开放
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网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已内置于核心XMPP技术规格中。
可扩展
XML名字空间的威力可使任何人在核心协议的基础上建造定制化的功能;为了维持通透性,常见的扩展由XMPP标准基金会。
弹性佳
XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。
多样性
用XMPP协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各种领域;用XMPP技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。
(2)缺点
数据负载太重
随着通常超过70%的XMPP协议的服务器的数据流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的数据提供给多个收件人。新的议定书正在研究,以减轻这一问题。
没有二进制数据
XMPP协议的方式被编码为一个单一的长的XML文件,因此无法提供修改二进制数据。因此, 文件传输协议一样使用外部的HTTP。如果不可避免,XMPP协议还提供了带编码的文件传输的所有数据使用的Base64。至于其他二进制数据加密会话(encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。
运作方式
XMPP网络是基于服务器的(即客户端之间彼此不直接交谈),但是也是分散式的。不像AOL实时通或MSN Messenger等服务,XMPP没有中央官方服务器。Jabber.org的公众服务器上有大量的用户,所以有些人误解了,以为它是官方服务器,不过事实上任何人都可以在自己的域名上运行XMPP服务器。
Jabber识别符(JID)是用户登录时所使用的账号,看起来通常像一个电子邮件地址,如
someone@example.com;前半部分为用户名,后半部分为XMPP服务器域名,两个字段以@符号区隔。
假设朱丽叶(
juliet@capulet.com)想和罗密欧(
romeo@montague.net)通话,他们两人的账号分别在Capulet.com及Montague.net的服务器上。当朱丽叶输入消息并按下发送钮之后,一连串的事件就发生了:
(1)朱丽叶的XMPP客户端将她的消息发送到Capulet.com XMPP服务器。
(2) Capulet.com XMPP服务器打开与Montague.net XMPP服务器的连接。
(3)Montague.net XMPP服务器将消息寄送给罗密欧。如果他目前不在在线,那么存储消息以待稍后寄送。
罗密欧与朱丽叶两人的XMPP服务是由两家不同的业者所提供的,而他们彼此传讯时,不须拥有对方服务器的账号,也不须成为对方业者的会员。
XMPP协议的另一功能是运输(transports),也被称为网关(gateways),可允许用户通过网络使用其它协议。这可以是其他的实时通信协议,也可以是不同协议,如短信(SMS)或电子邮件。
XMPP协议通过HTTP传输
在原来的规格,XMPP协议可以使用HTTP的方式有两种:轮询(polling)[4]与绑定(binding)[5]。轮询现在不推荐,基本上,轮询意味着HTTP邮件存储在服务器端的数据库上,客户端必须一再地以HTTP的GET和POST的方式去抓取(以及刊出)其中的消息。然而使用绑定的方式时,客户端会保留一个长存的HTTP连接,等待一旦服务器有新的消息时,就立刻接收消息。因为轮询的结果往往是服务端没有新消息,这种推送的通知模式比轮询的方式更有效率。
由于客户端使用HTTP,大多数防火墙允许客户端获取和留言没有任何障碍。因此,即使使用XMPP协议的TCP端口被拦截,服务器也能正常地倾听一般的HTTP端口,其上的消息也能保持畅通。还有一些网站更允许大众经由浏览器登录进XMPP。尤有甚者,还有一些公共的服务器同时拥有标准HTTP(80端口)和HTTPS(443端口),因此又有助于通过防火墙。
实现
XMPP客户端软件
XMPP协议是由大量的XMPP协议的客户端,服务器和程序库。主要的文章包含了几个XMPP协议列表客户的多种平台。
XMPP服务器端软件
使用XMPP协议的客户端与服务器端对话的例子
客户端(kuusipuu)连接到一个XMPP服务器(amessage.de:5222/TCP),发送一条消息(主题和内容均为“test 1449”)到另一个客户端(tero),然后注销。
kuusipuu:
<?xml version="1.0"?>
<stream:stream xmlns:stream="http://etherx.jabber.org/streams"
xmlns="jabber:client" to="amessage.de">
amessage.de:
<stream:stream xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
from='amessage.de' id='1461777714'>
kuusipuu:
<iq type="set" id="auth_2" to="amessage.de" >
<query xmlns="jabber:iq:auth">
<username>kuusipuu</username>
<password>mypassword</password>
<resource>Work</resource>
</query>
</iq>
amessage.de:
<iq from="amessage.de" id='auth_2' type='result'/>
kuusipuu:
<message to="tero@example.com" >
<subject>test 1449</subject>
<body>test 1449</body>
</message>
<presence type="unavailable" >
<status>Logged out</status>
</presence>
</stream:stream>
amessage.de:
</stream:stream>
相关推荐
### XMPP学习入门笔记知识点详解 #### 一、XMPP简介 XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的即时通讯协议。它最初由Jabber发展而来,并于2004年成为国际标准(RFC 3920 和 RFC 3921)...
XMPP,全称为可扩展消息和出席(存在)协议,是一种用于实时通信和协作的开放标准。它起源于即时信息和出席协议(IMPP)...通过深入学习XMPP,我们可以理解如何构建安全、可扩展的实时通信解决方案,满足各种业务需求。
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,主要用于实现即时消息(IM)和在线状态服务。XMPP的设计理念是开放、可扩展,并且支持多种应用程序和服务的集成。它由Jabber社区...
这篇笔记主要介绍了XMPP的核心组件和基本工作原理。 1. **Jabber协议概述** Jabber协议是一种开放的XML协议,它与传统的即时通讯系统不同,因为它允许第三方开发者创建扩展以满足特定需求。协议包括三个顶级XML...
- **协议概述**:XMPP起源于Jabber项目,它基于TCP/IP协议,通过XML数据进行实时传输,支持文本、语音、视频等多种类型的数据。 - **组件架构**:XMPP系统由客户端、服务器和各种扩展服务(如多用户聊天室、代理...
在Android平台上实现XMPP(Extensible Messaging and Presence Protocol)客户端是一项常见的任务,因为XMPP是一种广泛使用的即时通讯协议,尤其适用于构建实时通信应用,如聊天、视频通话等。本篇文章将深入探讨...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,最初源自开源项目Jabber。这个协议主要用于即时消息传递(IM)和在线状态(Presence)的探测。XMPP的设计理念是开放、可扩展,...
#### 一、简介与概述 《XMPP:终极指南》是一本全面介绍XMPP(可扩展消息处理协议)及其在实时应用中的应用的权威书籍。XMPP是一种基于XML的开放标准协议,用于实现即时消息(IM)、在线状态通知(如可用性或“在线”...
【安卓XMPP聊天通讯Socket相关-仿微信即时聊天xmpp4Android第一期.rar】这个压缩包文件主要包含了一个基于XMPP协议实现的Android即时聊天应用的初步开发资源。XMPP(Extensible Messaging and Presence Protocol)是...
在深入学习XMPP时,阅读“XMPP核心.PDF”文档将有助于理解其基本原理和工作流程。同时,获取并安装agsXMPP库可以帮助开发者实践和理解如何在实际项目中使用XMPP协议。对于想要开发XMPP应用的人员来说,这是一个非常...
- "XMPP协议原理介绍.mht" 可能是关于协议的概述,涵盖了XMPP的核心概念和技术细节。 - "开源项目之Android 推送框架(androidpn) - banketree - 博客频道 - CSDN_NET.mht" 提到了一个Android推送框架,这将涉及XMPP...
### XMPP正式RFC标准3920:可扩展的消息与出席信息协议 #### 概述 **XMPP正式RFC标准3920**是互联网工程...通过学习此文档,开发者和研究人员可以获得全面的XMPP技术知识,从而更好地利用这一强大的实时通信协议。
Jabber(XMPP)服务协议的概述中文版
内含xmpp即时通讯协议的中文翻译文档,即时通讯协议(Openfire服务器版),协议介绍以及学习笔记;Openfire服务器下载地址http://www.igniterealtime.org/downloads/index.jsp
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放通信协议,主要用于实时通信和存在信息的交换。这个“XMPP.rar_xmpp 通讯协议中文”压缩包包含了一个名为“XMPP.doc”的文档,很可能是关于...
**XMPP (可扩展消息和出席协议)** 是一种基于XML的实时通信协议,起初由Jabber开源社区创建,后来成为Internet Engineering Task Force (IETF) 的即时消息和出席信息技术的一部分。RFC 3920是XMPP的核心协议文档,...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,主要用于即时消息和在线状态...如果该项目提供了详细的文档和源代码,那么对于学习XMPP协议和服务器开发来说,将是一份宝贵的资源。
#### 一、概述与背景 **XMPP**(Extensible Messaging and Presence Protocol)是一种基于XML(可扩展标记语言)的即时消息与在线状态协议,它提供了一种开放的标准来实现实时通信,主要用于即时消息(IM)和在线...
通过学习本书,读者不仅可以掌握XMPP的基础知识,还能学会如何利用这一强大的工具来构建实时联邦应用。随着技术的发展,XMPP的应用场景也在不断扩展,对于希望从事实时通信领域开发的人员来说,《Packt.Practical....