XMPP协议

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的数据格式。

你可能感兴趣的:(XMPP协议)