`

XMPP协议实现原理介绍(转)

    博客分类:
  • XMPP
 
阅读更多

本文介绍XMPP协议原理及相关信息。

 

XMPP协议简介  

XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩 充的进程开始协议SIP(SIMPLE)。

 

在 这四种协议中,XMPP是最灵活的。XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展 性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

 

1. 什么是XMPP ?

XMPP 的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分; 核心的XML流传输协议 基于XML流传输的即时通讯扩展应用 XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议 能够非常漂亮。 XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完 整,完善等先进性。

 

2. XMPP的基本网络结构是怎样的

XMPP 中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承 担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后 在之上传输XML。

 

3. XMPP通过TCP传什么了?

传 输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而 XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而 XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网 络基础协议。所以可以说,XMPP用TCP传的是XML流。

 

XMPP协议工作原理:

 

 

 

4. XMPP协议地址格式:

 

 

5. XMPP消息格式: 

 

 

 

 

 

 

 

6. 核心的XML流传输协议

基于XML FreeEIM流传输的即时通讯扩展应用

XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。

XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。

XMPP的扩展协议Jingle使得其支持语音和视频。 

XMPP的官方文档时RFC 3920. 

 

7. XMPP应用示例

举个例子看看所谓的XML流是什么样子的?

  客户端:<?xml version='1.0'?>  <stream:stream  to='example_com'  xmlns='jabber:client'  xmlns:stream='http_etherx_jabber_org/streams'  version='1.0'>  服务器:<?xml version='1.0'?>  <stream:stream  from='example_com'  id='someid'  xmlns='jabber:client'  xmlns:stream='http_etherx_jabber_org/streams'  version='1.0'>  ...其他通信...  客户端:<message from='juliet_example_com'  to='romeo_example_net'  xml:lang='en'>  客户端: <body>Art thou not Romeo, and a Montague?</body>  客户端:</message>  服务器:<message from='romeo_example_net'  to='juliet_example_com'  xml:lang='en'>  服务器:<body>Neither, fair saint, if either thee dislike.</body>  服务器:</message>  客户端:</stream:stream>

  服务器:</stream:stream> 

 

 

以 文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的 XML文档。其中的stream标签就是所谓的XML Stream。在<stream>与</stream>中间的那些<message>...< /message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一方发信给另外一方。通信的最后阶段是</stream>关闭流, 关闭TCP/IP连接。 

 

8. XMPP系统特点:

1)客户机/服务器通信模式;(2)分布式网络;(3)简单的客户端;(4)XML的数据格式。 

 

9.通俗解释:

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

 

转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378956.html 

 

完毕。

分享到:
评论

相关推荐

    XMPP协议--即时通讯工具实现原理

    agsXMPP\XMPP协议--即时通讯工具实现原理

    基于xmpp协议消息推送研究与实现.pdf

    本文详细阐述了移动互联网中三种推送技术的原理,通过对它们优缺点和使用场合的分析,探讨了通过XMPP协议保持长久连接方式实现消息推送功能的方法,并针对其实现的关键技术展开了讨论,在开源软件系统0penFi re的...

    计算机毕业设计 - XMPP研究,保证可靠运行,计算机毕业生可参考,免费资源下载

    通过实际开发,我们深入探索了XMPP协议在实时通讯中的实现细节,包括用户注册、登录、添加好友、创建群组、发送消息等功能的实现过程。 此外,我们还对XMPP协议的性能和安全性进行了测试和分析。通过对比测试,我们...

    基于XMPP 的即时通讯系统的设计与实现

    本文首先介绍了XMPP协议的工作原理,并且说明了其优势,然后给出了一套基于XMPP的即时通讯系统设计方案,将其部署在MySql数据库下,以java为编程语言,实现了即时通讯。经测试,本系统实时性好、使用方便、稳定性好...

    IM服务端开发文档

    XMPP协议的原理介绍 6 XMPP协议的文档 6 XMPP的基本网络结构 7 Openfire(服务端) 7 附:《Openfire源代码架构》 8 命名规则 8 系统配置项 9 系统启动流程 9 网络处理 10 Openfire消息包接受处理流程 11 数据库处理...

    XMPP Over WebSocket

    该文档详细地描述了基于WEBSOCKET以XMPP协议实现网页客户端进行及时通讯的原理,实现方法,以及现有的开发包

    WebRTC零基础开发者教程(纯净版)

    6.1.1 原理介绍 6.1.2 XMPP 协议网络架构 6.1.3 XMPP 协议的组成 6.1.4 Xmpp介绍 6.1.5 协议内容 6.2 Stun协议 6.2.1 P2P实现的原理 6.2.2 P2P的常用实现 6.2.3 Stun URI 6.2.4 内容 6.2.5 中文内容 6.2.6 开源...

    GitHub上最火的Android项目,所有开源项目都有详细资料和配套视频

    1- Davik进程linux进程...23-微信扫一扫登录内部实现原理 24- 腾讯QQ三方登录实现原理 25-登录为什么要使用Token 与开发相关测试问题 26-迭代开发的时候如何向前兼容新旧接口 27-应用程序的开发流程 28-ViewPage

    XMPPFramework

    基于XMPP协议的简单IM实现 1、通过自己做了个小Demo来了解其原理,进攻各位初识XMPP的参考 2、服务器采用了openfire的朋友,遇到了诸如列表无法获取等问题,我没试过,会抽时间去实践下,到时候和大家一起探讨,不过...

    webqq.rar_加密 即时通讯

    基于web socket7原理,以及xmpp协议等即时通讯协议,ras base64加密算法,实现的类似qq的通讯软件

    RabbitMQ的原理和使用

    本文来自于cnblogs,文章从应用场景架构介绍,包括使用过程,怎么实现等相关内容。AMQP,即AdvancedMessageQueuingProtocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件...

    深入理解Android网络编程技术详解与最佳实践(带书签目录高清完整版).陈文.郭依正.pdf

    不仅系统讲解了Android网络编程的各项核心技术和功能模块,通过多个案例解读了Android网络编程的方法和技巧,而且从源码角度深入解析了Android核心网络处理方法和关键应用的实现原理,包含大量最佳实践。  全书共11...

    XMPP 及其在即时通信系统的文字通信 模块中的应用 (2008年)

    将XMPP与其他即时通信协议在工作原理等方面进行了比较,分析了XMPP的强大优势,结果表明,XMPP确实能做到不同即时通信系统间的互联互通,在此基础上对基于XMPP的即时通信系统中文字通信模块的实现方法进行了阐述.

Global site tag (gtag.js) - Google Analytics