微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 解析XMPP协议分析与应用

解析XMPP协议分析与应用

时间:09-16 来源:互联网 点击:

XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。

1 XMPP的地址和数据结构

1.1 实体地址

XMPP整体框架如图1所示。图中,XMPP框架的各类实体(如XMPP客户、服务器和网关等)的地址称为甲吧地址(Jabber Identifier,JID)。JID惟一确定进行即时消息和在线状态信息通信的独立对象或实体,并可兼容其他即时通信系统(如MSN等)相应的实体标识及其在线状态信息。其语法规则为:[节点″@″] 域名[″/″资源],其中各个域的长度不能超过1 023 字节,总长度最大为3 071字节。

XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。

域名指定了实体连接的XMPP服务器。每个可用XMPP服务器都拥有一个完整域名,域名可在域名系统(DNS)中查找;节点可表示某用户、一类应用或某项服务,所有节点都对应一个精确的域名;资源用来识别属于用户的特殊对象(如设备或位置),允许一个用户同时以多个资源与同一XMPP服务器连接。

1.2 XMPP的数据结构

由于XMPP是基于XML的协议,因此用户可根据自己的需要定义标记,表述几乎任何一种结构化数据,并可方便地创建定制的应用或增加功能。

1.2.1 三个顶级XML元素

XMPP定义的3个关键顶级XML元素为message/>、presence/>和iq/>(info/query),每个元素都可以通过属性和名字空间包含大量数据,其属性和名字空间都是XMPP的组成部分。

message/>元素用来包含2个XMPP实体间互相发送的消息内容;presence/>元素表示实体可用性信息,可用性信息有“可用”和“不可用”2种;iq/>元素用来构建2个实体间的会话,并且允许实体间来回传送XML格式的请求和响应以便取得或设置公共的用户信息,如名字等。

即时通信中名字冲突问题使用XML的命名空间特性来解决。XML命名空间定义了一种将XML中使用的元素和属性与统一资源定位符(Uniform Resource Locator,URL)引用联系起来对元素和属性进行定义的方法。 统一资源定位符(URL)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL地址,这种地址可以是本地磁盘,也可以是局域网上的某一台计算机,更多的是Internet上的站点。简单地说,URL就是Web地址,俗称“网址”。

1.2.2 XMPP的数据结构

从结构上看,XMPP有3种数据:XML流、流认证和XML节。XML流是实体交换XML元素的容器,以stream>开始,以/stream>结束,是通信双方采用异步方式进行数据传输的标准方法,在整个XMPP通信过程中处于最外层;XML节是实体通过XML流传输的结构化信息单元,在XML流中以深度为1的子标记开头,并以深度为1的子标记结束,这些标记为message/>、presence/>和iq/>。

XMPP为XML流扮演通用“传输层”的角色。XML流中包含传输的认证信息和现场消息,XMPP能

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top