XMPP 协议分析-原理篇
XMPP 协议简介
XMPP 协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于 XML 的协
议,目的是为了解决及时通信标准而提出来的,最早是在 Jabber 上实现的。它继承了在 XML 环境中灵活的发展性。因
此,基于 XMPP 的应用具有超强的可扩展性。并且 XML 很易穿过防火墙,所以用 XMPP 构建的应用不易受到防火墙的阻
碍。利用 XMPP 作为通用的传输机制,不同组织内的不同应用都可以进行有效的通信。
XMPP 协议特点
1)所有 XMPP 信息都是以 XML 为基础的,信息交换的事实标准,扩展性强
2)XMPP 系统是一个分布式系统,每台服务器控制自己的资源,但是如果需要,它能与外在的系统进行通
信。XMPP 服务器利用开放的 XML 协议来进行 S2S(Serverto Server)通信,就像在 C2S(Client to Server)一样。相比之
下,大多数的 IM 系统使用了只是支持 C2S/S2C 通信的协议,因此 Jabber/XMPP 服务器具有更大的灵活性。
3)XMPP 协议是公开的,程序则开放源代码。定义了客户端和服务器端的交互要经由 XML 流。普通消息类型
(message),如改变状态(presence),传递消息内容或查询/更新(info/quey)应用则用每个指定的命名空间
(namespace)来建立。
4)状态(Presence)在整个持久连接中。通过持久连接的有效维持,XMPP 协议一直有在网络中维持存在和可用信息
的能力。
5)XMPP 允许建立并行的 TCP 套接字连接对所有连接上的客户端和服务器端。一旦建立连接,则只有当状态改变,
例如存在的改变,通过这个连接传输数据。既然这个连接是持久的,那么设置、认证、状态查找功能都不用每次都重复执
行。这种持久的套接字的连接使得 XMPP 能够更有效的支持高级的具有存在能力的应用在带宽和处理资源的使用中。
6)Jabber/XMPP 系统是模块化的,而且 Jabber/XMPP 的设计强调如何实现可伸缩性、安全性和可扩展性。
XMPP 协议分析
XMPP 中定义了三个角色:客户端,服务器,网关。
通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担
着与异构即时通信系统的互联互通,异构系统可以包括 SMS
(短信),MSN,ICQ 等。基本的网络形式是单客户端通过 TCP/IP 连接到单服务器,然后在之上传输 XML。
XMPP 的基本网络结构如下:
C1----S1---S2---C3
|
C2----+--G1===FN1===FC1
符号表示:C1,C2,C3=XMPP 客户端;S1,S2=XMPP;服务端 G1=在 XMPP 和使用外部消息网络(非 XMPP)的协议之
间转换的网;FN1=外部消息网络;FC1=外部消息网络的客户端。
(1)服务器