1、xmpp协议简介:
xmpp可扩展消息和表示协议,extensible messaging and presence protocol,是一种基于标准通信协议xml的子集,基于xmpp的应用具有超强的扩展性,一种主流的即时消息。xmpp比较灵活。XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。
2、xmpp协议的基本网络结构
xmpp中定义了三个角色,客户端、服务端、网关,通信能在两者之间任意双向发生。服务器主要承担了客户端消息记录,接入管理与消息路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
3、xmpp通过tcp传输内容
xmpp传输即时通讯相关指令,在xmpp中协议形式变成了XML格式的纯文本,这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。
4、xmpp工作原理
client到client之间的消息传递都需要经过xmpp server。步骤如下:
1、client连接到server;
2、server利用本地系统进行认证
3、client发送目标地址,让server告知状态;
4、server查找,连接并进行相互认证
5、client之间进行交互
5、xmpp协议地址模式
统一的JID(jabber identifier)
JID=[node"@"]domian["/"resource] eg:[email protected]/resource
node:用户名
domain:服务器域名
resource:属于用户的位置或设备
一个用户可以同时以多种资源与同一个xmpp服务器连接。
6、xmpp中xml格式定义
xmpp包括三个元素,简单示例如下:
<stram>
<presence>
<status/>
</presence>
<message>
<body/>
</message>
<iq>
<bind/>
</iq>
</stram>
6.1 消息格式定义-presence
presence此元素确定用户状态
eg: <presence
from="" to="">
<status>online</status>
</presence>
6.2 消息格式定义-message,用于标识用户之间发送消息体
eg:<message
from="" to="" type="char">
<body>hello</body>
</message>
6.3 消息格式定义iq,信息/请求,是一个请求响应机制,管理xmpp服务器上两个用户转换,允许他们通过xml格式查询和响应
eg:<iq
from="" id="id1" type="result">
</iq>
iq属性type包括:
get:获取当前值
set:设置或替换get查询的值
result:表示成功响应之前请求
error:查询和响应中出现错误
7、核心的XML流传输协议
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。
XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。
XMPP的扩展协议Jingle使得其支持语音和视频。
8. XMPP系统特点:
(1)客户机/服务器通信模式;(2)分布式网络;(3)简单的客户端;(4)XML的数据格式。