即时通信XMPP协议实现原理介绍

一、 开发背景
1、 国际背景
随着 Internet 技术的高速发展,即时通信已经成为一种广泛使用的通信方
式。1996 年 Mirabilis 公司推出了世界上第一个即时通信系统 ICQ,不到 10 年间,
即时通信( Instant Messaging,简称 IM)以发展成为了最流行的网络应用之一。
特别是近几年的迅速发展,即时通信的功能日益丰富,它不再是个单纯的聊天工
具,它已经发展成集交流、资讯、娱乐、音乐、电视、游戏、电子商务等为一体
的综合化信息平台。
2、 国内背景
目前国内外及时通信软件 IM( Instant Messenger )形势风起云涌,可谓战
况空前, IM 作为继 Email 和 Web 之后最主要的互联网基础应用之一,为商家必
争之地。国内的形势由于 QQ 的垄断性优势明显,表 面稍显平静,实则暗流涌动。
目前来看,胖企鹅公司以压倒性优势占据了国内 IM 市场近八成份额,并且紧紧
抓住低端市场,用户数量庞大,盈利丰厚。其他的 IM 微软 MSN(WLM)、网易 POPO、
新浪 UC、 TOM Skype、 Google Gtalk 等占有率较为惨烈,还有雅虎即时通、 AIM、
ICQ 以及传闻中的 Baidu IM 和搜狐搜 Q 以及一些目前并不出名的如校内网的校
内通, Lava-lava 等等等等,凡在国内叫得上号的叫不上号的互联网企业,几乎
没有不推 IM 的,甚 至连中国移动都力推飞信,希望分得一杯羹。 然而这些即时
通讯不能实现互联互通,限制了用户的扩展。
3、 为什么选择 XMPP 协议
虽然现在即时通信软件有很多,但是它们之间不能互联互通也阻碍了及时通
信用户的继续扩展。因此,在现阶段的各种即使通信服务,没有统一的标准,无
法实现互联互通的局面下,而 XMPP(Extensible Message and presence Protocol)
协议的出现,实现了整个及时通信服务协议的互通。有了这个协议之后,使用任
何一个组织或者个人提供的即使通信服务,都能够无障碍的与其他的及时通信服
务的用户进行交流。例如 google 公司 2005 年推出的 Google talk 就是一款基
于 XMPP 协议的即使通信软件。
目前 IM 即时通信有四种协议:
1.即时信息和空间协议(IMPP)
2.空间和即时信息协议(PRIM)
3.针对即时通讯和空间平衡扩充的进程开始协议 SIP
4.XMPP 协议:该协议的前身是 Jabber,我们采取 XMPP 协议主来实现 IM 主
要是考虑 XMPP 协议是以 XML 为基础的,它继承了在 XML 环境中灵活的发展性。
这表明 XMPP 是可扩展的,所以 XMPP 信息不仅可以是简单的文本,而且可以携带
复杂的数据和各种格式的文件,也就是说 XMPP 协议不仅可以用在人与人之间的
交流,而且可以实现软件与软件或软件与人之间的交流, 目前支持 XMPP 协议的
即时通讯工具有 Gtalk、 FaceBook IM、 Twitter、网易 POPO 等等通讯工具, 具
有非常好的发展情景。
正如任何事物都有其自身的发展规律一样,技术和产品的进步也有其自身
的规律。
从萌芽到混乱最终标准化,这是互联网产品的基本规律。IM 跟其实发展自 Email,
跟 Email 有着很多共同点。让我们来对比一下 Email 目前的情况,或许会有些启
示。 Email 现在已经被广泛应用,谁都不能质疑其互联网第二应用的地位(第一
应用是 Web)。 Email 之所以能广泛地被应用最关键的原因应该是 Email 有一套
开放标准的协议规范(包括 SMTP、 POP、 IMAP 等),任何人都可以基于这些协
议规范开放自己的 Email 产品,不管是 Email 服务器也好, Email 收发客户端也
罢还是现在颇为流行的 Web 形式的 Email 界面,它们都是基于同一套标准。在
这套标准的框架下,各个 Email 相关厂商都各自占据产业链的相应位置,相互合
作相互竞争,这才是一个百花齐 放的健康竞争环境,而且这种健康竞争最终受
益者还是广大用户。
XMPP(www.xmpp.org)由 Jabber 软件基金会开发,最早在 Jabber 上实现。
Jabber 项目由 Jeremie Miller 在 1998 年开始的一个免费、开源的项目,用于
提供给 MSN、 Yahoo!的 IM 服务。由于 XMPP 是一种基于 XML 架构的开放式协议,
在 IM 通讯中被广泛采用。
XMPP 的基础部分已经在 2002-2004 年得到了互联网工程任务组(IETF)的批
准, 这意味着 XMPP 在将来就像我们认为理所当然的 Internet 协议 TCP/IP、
HTTP、 FTP、 SMTP、 POP 一样成为 Internet 标准;这 意味着以后我们就像使用
Web、使用 Email 和使用 FTP 一样开放地使用 IM。甚至若干年后人们会理所当然
地认为 163 的邮箱可以给 Hotmail 发邮 件一样,QQ 用户也可以添加 Gtalk 用户,
人们会逐渐忘却当年军阀割据纷乱的历史。这是一种革命性的进步!不支持 XMPP
的 IM 将会像 IBM 的 Token-Ring 一样孤芳自赏或者像 DEC NET 协议一样被人遗
忘。遥想当年 DEC NET 和 IBM Token-Ring 也是多么意气风发羽扇纶巾啊!
在 XMPP 被批准之前,世界上已经存在了数十种支持 XMPP 的服务器端和客户
端以及数百万用 户。嗅觉灵敏的 Google 作为开放源代码社区和开放标准的最大
受益者,第一时间感受到了这种趋势,所以花重金将 Gaim 的作者挖去 Google,
于是就 有了基于 XMPP 的 Gtalk。
开放的标准协议会导致产品的竞争更为健康和良性,整个产业链更为完善。
当然产品之间的竞争唯 一的趋势就是同质化,产品发展到后期比拼的只有服务。
这一点在传统产业已经被完全验证,互联网产业也不能逃脱。至于到时用户是选
Gtalk 呢还是选 POPO 呢,就像用户现在选 Gmail 还是 163 的邮箱一样,可以各
有所好。不过 IM 在扩展功能以及增值服务上还有非常大的竞争余地。
二、 Xmpp协议介绍
1、 Xmpp 协议概述
XMPP( Extensible Messaging and Presence Protocol,前称 Jabber[1])
是一种以 XML 为基础的开放式实时通信协议,是经由互联网工程工作小组( IETF)
通过的互联网标准。
XMPP 是一种基于 XML 的协议,它继承了在 XML 环境中灵活的发展性。因此,
基于 XMPP 的应用具有超强的可扩展性。经过扩展以后的 XMPP 可以通过发 送扩
展的信息来处理用户的需求,以及在 XMPP 的顶端建立如内容发布系统和基于地
址的服务等应用程 序。而且, XMPP 包含了针对服务器端的软件协议,使之能与
另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加
功能。
可扩展消息处理现场协议(eXtensible Messaging and Presence Protocol ,
XMPP) 是一种基于可扩展标记语言(eXtensible Markup Language, XML)的近端
串流式即时通信协议。它将现场和上下文敏感信息标记嵌入到 XML 结构化数据
中, 使得人与人之间、应用系统之间以及人与应用系统之间能即时相互通信。
XMPP 协议已被批准为互联网即时通信协议标准。
2、 Xmpp 协议内容
XMPP 中定义了三个角色, 客户端,服务器,网关。通信能够在这三者的任意
两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由
功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括 SMS(短
信), MSN, ICQ 等。基本的网络形式是单客户端通过 TCP/IP 连接到单服务器,
然后在之上传输 XML。
3、 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 网络(例如在企业内部网络
中),而使用 SASL 及 TLS 等技术的可靠安全性,已自带于核心 XMPP 技术规格中。
可扩展—XML 命名空间的威力可使任何人在核心协议的基础上建造客制化的功
能;为了维持通透性,常见的扩展由 XMPP Standards Foundation。
弹性佳—XMPP 除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、
协同工具、文件共享、游戏、远程系统监控等。
多样性—用 XMPP 协议来建造及布署实时应用程序及服务的公司及开放源代码计
划分布在各种领域;用 XMPP 技术开发软件,资源及支持的来源是多样的,使得
使你不会陷于被“ 绑架” 的困境。
4、 Xmpp 协议缺点
数据负载太重:随着通常超过 70%的 XMPP 协议的服务器的数据流量的存在和近
60%的被重复转发, XMPP 协议目前拥有一个大型架空中存在的数据提供给多个
收件人。新的议定书正在研究,以减轻这一问题。
没有二进制数据: XMPP 协议的方式被编码为一个单一的长的 XML 文件,因此无
法提供修改二进制数据。因此, 文件传输协议一样使用外部的 HTTP。如果不可
避免, XMPP 协议还提供了带编码的文件传输的所有数据使用的 Base64。至于其
他二进制数据加密会话( encrypted conversations)或图形图标( graphic icons)
以嵌入式使用相同的方法。
5、 Xmpp 提供电子名片协议
vCard 是一种现存的、广泛使用的,用户个人信息存储的标准,有点像是电子名片。 基
础的功能是存储和获取用户的电子身份,该信息是用 XML 表示的,数据的存储取决于所有
现存的 Jabber 服务器的实现。
6、 XMPP 系统特点
客户机/服务器通信模式、 分布式网络、 简单的客户端、XML 的数据格式。
三、 服务器端介绍
1、 什么是 Openfire
Openfire 采用 Java 开发,开源的实时协作( RTC)服务器基于 XMPP ( Jabber)
协议。 您可以使用它轻易的构建高效率的即时通信服务器.
Openfire 安装和使用都非常简单,并利用 Web 进行管理。单台服务器可支持
上万并发用户。
由于是采用开放的 XMPP 协议,您可以使用各种支持 XMPP 协议的 IM 客户端
软件登陆服务.
2、 为什么使用 Openfire
AOpenfire 为 Java 开源项目
B采用开放的 XMPP 协议
C有多种针对不通系统的版本
D使用 Socket 通讯
E单台服务器可支持上万并发用户,搭建分布式云服务器可轻松提供大量
并发用户。
FSocket 长连接
G服务器稳定

H提供接口,可自己开发插件


良心的公众号,更多精品文章,不要忘记关注哈

《Android和Java技术栈》


你可能感兴趣的:(Android相关学习)