XMPP协议介绍【2017/05/13】

目前IM有四种协议:

  1. 即时信息和空间协议(IMPP)。
  2. 空间和即时信息协议(PRIM)。
    3.针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。
    4可扩展消息与存在协议(.XMPP)。

其他IM协议:qq协议是二进制的,不开源,不开放。第三方客户端有开源软件LumaQQ(Java) 等
msn协议是文本的,不开源,早期版本开放,msn8以后就封闭了.开源java客户端与类库较多:JMSN等

IMPP主要定义必要的协议和数据格式,用来构建一个具有空间接收、发布能力的即时信息系统。
SIMPLE是目前为止制定的较为完善的一个。SIMPLE和XMPP两个协议,都符合RFC2778和RFC2779 。SIMPLE计划利用SIP来发送presence信息。SIP是IETF中为终端制定的协议。SIP一般考虑用在建立语音通话中,一旦连接以后,依靠如实时协议(RTP)来进行实际上的语音发送。但SIP不仅仅能被用在语音中,也可以用于视频。SIMPLE被定义为建立一个IM进程的方法。目前,微软和IBM都致力于在它们的即时通讯系统中实现这个协议。
XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。这表明XMPP是可扩展的。可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

一、XMPP概述

  1. XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。
  2. XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。
  3. XMPP目前被IETF国际标准组织完成了标准化工作,标准化的核心结果分为两部分:
    (1)核心的XML流传输协议
    (2)基于XML流传输的即时通讯扩展应用
    XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。

二、XMPP的基本网络框架结构介绍:

xmpp定义了三个角色 Server、Client、Gateway,通信能够在这三者的任意两个之间双向发生。

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

三、XMPP体系架构
XMPP Server:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。
功能:
1.会话管理器:负责客户端会话认证,在线状态,用户联系表等
2.数据存储器(XDB):连接数据库系统,保持用户信息、通信日志等
3.连接器管理器:管理与客户端之间的连接
4.服务器连接器:管理xmpp服务器之间的连接
5.传输器:建立xmpp服务器与非xmpp服务器通信

这里写图片描述
这里写图片描述
从图中可以看出,一个Client到另一个Client的jabber消息和数据都要通过XmppServer,Client连接到Server,Server利用本地目录系统的证书对其认证,Client制定目标地址,让Server告知目标状态,Server查找、连接并进行相互认证,然后实现Clien之间的交互!

四、XMPP xml消息格式定义
xmpp xml包括3个元素:简单示例:

<stram>
   <presence>     //<presence>-此元素确定用户的状态(离线,在线)
      <status/>
   </prensence>
   <message>      //<message>-用于两个用户之间发送信息
        <body/>
    </message>
    <iq>          //<iq>-信息/请求 
        <bind/>
    </iq>         //Iq的主要属性:type,包括:
    </stream>       Get:获取当前域值
                    Set:设置或替换get查询的值
                    Result:说明成功的响应了先前的查询
                    Error:查询和响应中出现的错误

五、XMPP的安全机制
1) 在客户端-服务器通讯模式里:客户端必须支持 TLS 和 SASl 握手协议。
2)在服务器-服务器通讯录模式里:服务器必须支持 TLS 和 SASl 来完成跨域的通讯。
3)必须实现的技术:
—— 1. SASL[DIGEST MD5]用来身份认证;
—— 2. TLS使用TLS_RSA_WITH_3DES_EDE_CBC_SHA 密码来完成数据加密。
4 ) 防火墙:XMPPP通讯发生在TCP连接之上,端口是5222(客户端到服务器 ),5269(服务器到客户端)。通过防火墙设置,可以简单的实现对XMPP的开启和关闭。
六、XMPP登录身份认证协议

XMPP采用SASL作为身份认证协议
SASL包含的信息:
<服务名>:XMPP
<初始序列>
<交换序列>
<安全层协商>
顺序:[TCP][TLS][SASL][XMPP]
七、XMPP系统特点:
(1)客户机/服务器通信模式;
(2)分布式网络;
(3)简单的客户端;
(4)XML的数据格式。

八、通俗解释:

其实XMPP 是一种很类似于http协议的一种数据传输协议,它的过程就如同“解包装–〉包装”的过程,用户只需要明白它接受的类型,并理解它返回的类型,就可以很好的利用xmpp来进行数据通讯。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值