XMPP基本内容简单介绍

即时通信技术简单介绍node


   即时通信技术(IM)支持用户在线实时交谈。假设要发送一条信息,用户需要打开一个小窗体,以便让用户及其朋友在当中输入信息并让交谈两方都看到交谈的内容.有不少的IM系统,如AOL IMYahoo IM MSN以及QQ。它们最大的差异在于各自通信协议的实现,因此即时通信技术的核心在于它的传输协议。浏览器

     协议用来讲明信息在网络上怎样传输。假设有了统一的传输协议,那么应当可以实现各个IM之间的直接通信,为了建立即时通信的统一标准,眼下已经出现过的IM协议包含:IETF的对话初始协议(SIP)和即时通信对话初始协议和表示扩展协议(SIMPLE)、应用交换协议(APEX)、显示和即时通信协议(PRIM)及基于XML且开放的可扩展通信和表示协议(XMPP)协议(常称为 Jabber 协议).安全

    人们屡次努力,试图统一各大主要IM供应商的标准(AOLYahoo Microsoft)。但无一成功,且每一种IM仍然继续使用本身所拥有的协议.网络


XMPP起源架构


    XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探測。最初,XMPP做为一个框架开发。目标是支持企业环境内的即时消息传递和联机状态应用程序。当时的即时消息传递网络是私有的,不适合企业使用。XMPP前身是Jabber1998年),是一个开源组织定义的网络即时通讯协议。框架

    XMPP是一个分散型通讯网络,这意味着。仅仅要网络基础设施赞成,不论什么XMPP用户都可以向其它不论什么XMPP用户传递消息。多个XMPPserver也可以经过一个专门的server-server协议相互通讯,提供了建立分散型社交网络和协做框架的可能性dom

       虽然XMPP的出现是为了知足我的-我的即时消息传递的要求。但它全然没必要局限于此任务。分布式


XMPP概述ide


   XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。post

这代表XMPP是可扩展的。可以经过发送扩展的信息来处理用户的需求,以及在 XMPP的顶端创建如内容公布系统和基于地址的服务等应用程序。

而且,XMPP包括了针对server端的软件协议。使之能与还有一个进行通话,这使得开发人员更easy创建客户应用程序或给一个配置好的系统加入功能。XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通讯协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够很美丽

    XMPP的即时通信扩展应用部分是依据IETF在这以前对即时通信的一个抽象定义的,与其它业已获得普遍使用的即时通信协议。诸如AIMQQ等有功能完整,无缺等先进性

    XMPP的扩展协议Jingle使得其支持语音和视频。眼下iOS尚不支持

    XMPP的官方文档时RFC3920

    XMPP协议之前是Google力推的即时通讯协议。其表明做品是GTalk


XMPP定义


    MPPThe Extensible Messaging and Presence Protocol(可扩展通信和表示协议)

    XMPP可用于服务类实时通信、表示和需求响应服务中的XML数据元流式传输XMPPJabber协议为基础,而Jabber是即时通信中常用的开放式协议

    XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探測。促进server之间的准即时操做。

这个协议可能终于赞成因特网用户向因特网上的其它不论什么人发送即时消息,即便其操做系统和浏览器不一样.


XMPP的基本结构


    XMPP是一个典型的C/S架构。而不是像大多数即时通信软件同样,使用P2Pclient到client的架构,也就是说在大多数状况下。当两个client进行通信时,他们的消息都是经过server传递的。採用这样的架构,主要是为了简化client。将大多数工做放在server端进行。

    XMPP中定义了三个角色,client,server。网关。通讯能够在这三者的随意两个之间双向发生。

       server同一时候承担了client信息记录,链接管理和信息的路由功能.

       网关承担着与异构即时通讯系统的互联互通,异构系统可以包含SMS(短信),MSNICQ

       主要的网络形式是单client经过TCP/IP链接到单server,而后在之上传输XML.


XMPP工做原理


   1:节点链接到server

     2:server利用本地文件夹系统中的证书对其认证

     3:节点指定目标地址,让server告知目标状态

     4:server查找、链接并进行相互认证

     5:节点之间进行交互


XMPP工做原理示意图

     


传输内容


   XMPP应用传输的是与即时通信相关的指令。在曾经这些命令要么用二进制的形式发送(比方QQ),要么用纯文本指令加空格加參数加换行符的方式发送(比方MSN

     而XMPP传输的即时通信指令的逻辑与以往相仿,仅仅是协议的形式变成了XML格式的纯文本。

这不但使得解析easy了。人也easy阅读了,方便了开发和查错

     而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。

这个流协议是XMPP的即时通信指令的传递基础,也是一个很重要的可以被进一步利用的网络基础协议。可以说,XMPPTCP传的是XML.


XMPP 通讯的结构(XMPP——JID


   每个 XMPPclient用户必须拥有一个全局唯一标识符。基于历史缘由,这些标识符称为 Jabber IDJID

鉴于协议的分布式特征,JID应包括联系用户所需的所有信息,JID的结构相似于电子邮件地址,但不要求 JID同一时候也是有效的电子邮件收件人。

     client和server节点。被统称为 XMPP实体,都拥有JID一个有效的JID包含一系列元素:(1)域名(domain identifier)(2)节点(node identifier)(3)(resource identifier)它的格式是node@domain/resourceresource这个是可选的。resource就是用于区分同一用户不一样端登录。

     好比:SomeCorp公司的员工 John Doe可能拥有JIDJohn.Doe@somecorp.com。当中somecorp.com SomeCorp公司的XMPPserver的地址,John.DoeJohn Doe的username。

还可以使用JID链接到其它资源。这赞成在一个XMPP实体标识符以外进一步处理拓展


通讯类别及公共XML属性


    使用XMPP的实时消息传递系统包括三大通讯类别:

    消息传递,当中数据在有关各方之间传输

    联机状态,赞成用户广播其在线状态和可用性

    信息/查询请求,它赞成XMPP实体发起请求并从还有一个实体接收响应


以上三种类型的XMPP节都拥有下面公共属性:


  from:源XMPP实体的JID

  to:目标接收者的JID

  id:当前对话的可选标识符

  type:节的可选子类型

  xml:lang:假设内容是人们可读的。则为消息语言的描写叙述.

基于 XMPP的传输数据发生在一些 XML流上,默认在port5222上操做。这些 XML流其实是两个完整的 XML文档。每个文档相应一个通讯方向。一旦会话创建。stream元素将打开。

这个元素将封装整个通讯文档。

而后,一些节被注入这个文档的第二层。最后,一旦通讯结束,stream元素将关闭,造成一个完整的文档。


XMPP协议的组成


基本的XMPP协议范本及当今应用很是广的XMPP扩展:

RFC3920 XMPP:核心。定义了XMPP协议框架下应用的网络架构。引入了XML StreamXML流)与XML StanzaXML节),并规定XMPP协议在通讯过程当中使用的XML标签。

使用XML标签从根本上说是协议开放性与扩展性的需要。此外,在通讯的安全方面,把TLS安全传输机制与SASL认证机制引入到内核,与XMPP进行无缝的链接,为协议的安全性、可靠性奠基了基础。Core文档还规定了错误的定义及处理、XML的使用规范、JIDJabber IdentifierJabber标识符)的定义、命名规范等等。

因此这是所有基于XMPP协议的应用都必需支持的文档。

RFC3921:用户成功登录到server以后。公布更新本身的在线好友管理、发送即时聊天消息等业务。所有的这些业务都是经过三种主要的XML节来完毕的:IQ StanzaIQ节), Presence StanzaPresence节), Message StanzaMessage节)。RFC3921还对堵塞策略进行了定义,定义是多种堵塞方式。可以说,RFC3921RFC3920的充分补充。两个文档结合起来。就造成了一个主要的即时通讯协议平台,在这个平台上可以开发出各类各样的应用。

XEP-0030服务搜索。一个强大的用来測定XMPP网络中的其余实体所支持特性的协议。

XEP-0115实体性能。XEP-0030的一个经过即时出席的定制。可以实时改变交变广告功能。

XEP-0045多人聊天。一组定义參与和管理多用户聊天室的协议,相似于InternetRelay Chat,具备很是高的安全性。

XEP-0096文件传输。

定义了从一个XMPP实体到还有一个的文件传输。

XEP-0124 HTTP绑定。将XMPP绑定到HTTP而不是TCP。主要用于不能够持久的维持与serverTCP链接的设备。

XEP-0166 Jingle。规定了多媒体通讯协商的整体架构。

XEP-0167 Jingle Audio Content Description Format。定义了从一个XMPP实体到还有一个的语音传输过程。

XEP-0176 Jingle ICEInteractive Connectivity EstablishmentTransportICE传输机制,文件攻克了怎样让防火墙或是NATNetwork Address Translation)保护下的实体创建链接的问题。

XEP-0177 Jingle Raw UDP Transport。纯UDP传输机制,文件讲述了怎样在没有防火墙且在同一网络下创建链接的。

XEP-0180 Jingle Video Content Description Format。定义了从一个XMPP实体到还有一个的视频传输过程。

XEP-0181 Jingle DTMFDual Tone Multi-Frequency)。

XEP-0183 Jingle Telepathy Transport Method


XMPP 要点


1. client(C) 和server端(S) 经过TCP链接5222port进行全双工通讯.

2. XMPP 信息均包括在 XML streams中.一个XMPP会话, 開始于<stream> 标签, 并结束于</stream>标签.所有其它的信息都位于这俩标签之间.

3. 出于安全目的考虑, 開始<stream>以后, 兴许的内容会被适度的使用 Transpor Layer Security (TLS) 协商传输 和强制性的 Simple Authentication 和 Security Layer (SASL) 协商传输。

4. SASL协商完毕后, 一个新的 stream 将会被迅速打开, 它将会更加安全和保密.


XMPP的优缺点


长处:开放,标准(XMPP的技术规格已被定义在RFC3920RFC3921,证明可用,分散,安全,可扩展

缺点:数据负载太重,没有二进制传输


XMPP的传输小结


XMPP是一种相似于HTTP协议的一种传输数据协议,其过程就如同解包装--〉包装的过程。

仅仅需要理解其接收的类型及返回的类型。便可以很是好的利用XMPP来进行数据通信.

XMPP官方站点——http://xmpp.org


推荐:

http://blog.csdn.net/woaifen3344/article/details/44559733

相关文章
相关标签/搜索