`

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协议--即时通讯工具实现原理

    在即时通讯工具的实现原理中,XMPP协议扮演着关键角色。客户端和服务器之间通过TCP/IP建立连接,使用XMPP协议进行数据交换。服务器作为中心节点,负责接收和转发消息,同时处理用户登录、状态更新和会话管理等功能。...

    xmpp客户端协议实现源代码

    让我们深入探讨一下SMACK库和XMPP协议的相关知识点。 **SMACK库** 1. **SMACK简介**:SMACK是Simple XMPP Client Library for Java的缩写,是一个开源的Java库,用于构建XMPP客户端应用。它提供了与XMPP服务器交互...

    XMPP协议 C#实例

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,主要用于即时消息和在线...通过学习和理解这段代码,开发者可以进一步了解XMPP协议的工作原理,以及如何在C#中构建即时通讯应用。

    xmpp协议介绍,XMPP体系架构

    XMPP(可扩展消息处理现场协议)是一种基于XML的实时通信协议,最初源自开源项目Jabber。它的设计目的是用于即时消息(IM)服务和在线状态检测。XMPP的核心概念是构建在TCP/IP协议之上的XML流,使得数据在客户端和...

    XMPP协议工具openfire_3_10_3

    **XMPP协议工作原理** XMPP基于TCP/IP连接,采用客户端-服务器架构。每个用户都有一个唯一的JID(Jabber ID),格式为`username@domain/resource`。当用户登录时,客户端与服务器建立持久连接,并发送认证信息。...

    xmpp协议demo

    这个“xmpp协议demo”很显然是一个演示如何使用XMPP协议的项目,可能包含客户端和服务器端的实现。让我们深入探讨XMPP协议以及这个项目中的关键组成部分。 1. **XMPP协议**:XMPP最初设计用于即时通讯,但现在也被...

    XMPP协议及NAT穿透介绍文档

    综上所述,"XMPP协议及NAT穿透介绍文档"可能是阐述如何在XMPP系统中实现NAT穿透,以便用户在不同网络环境下顺畅地进行即时通信。文档可能包含对NAT工作原理的解释、XMPP协议的详细描述,以及如何利用Jingle和NAT穿透...

    xmpp协议详解

    学习和掌握XMPP协议,不仅可以帮助开发者理解实时通信的基础原理,还能为构建自己的即时通讯应用打下坚实的基础。实践XMPP协议,意味着可以创建跨平台、高度集成的通信系统,满足各种业务需求。

    xmpp协议说明ppt

    总的来说,XMPP协议提供了一套灵活、安全且标准化的即时通讯解决方案,其强大的可扩展性使得开发者可以根据具体需求构建复杂的企业级或个人通信应用。通过理解XMPP的基本概念、架构、工作原理和安全机制,我们可以更...

    gloox1实现xmpp协议

    本文将深入探讨gloox1.0的实现原理、核心功能以及如何利用它进行XMPP应用的开发。 一、gloox1.0概述 gloox是用C++编写的,它的设计目标是为开发者提供一个简单、高效且符合XMPP标准的API。gloox1.0版本进一步优化...

    基于XMPP协议的Android即时通信应用项目源码

    1. **理解XMPP协议原理**:学习XMPP的底层工作方式,包括XML流的解析和构建,以及如何处理连接、认证和消息传递。 2. **Smack库使用**:深入研究Smack的API文档,了解如何创建连接、发送和接收消息、管理用户状态等...

    中文版 xmpp协议之 可扩展消息出席协议:核心 RFC3920

    - 客户端通过TCP连接直接连接到服务器,并使用XMPP协议实现各种即时通讯和出席服务。 - 客户端可能使用多种资源,如不同的设备或位置,它们通过XMPP地址的资源标识符区分。 - 客户端与服务器之间的通信端口通常为...

    基于XMPP协议文件传输的研究与实现

    本文介绍了如何基于XMPP协议实现一个功能全面的即时通信系统,重点探讨了文件传输功能的设计与实现。通过实证分析,证明了基于XMPP协议进行XML流传输的优势,尤其是在与其他通用协议相比时的表现。未来的研究可以...

    XMPP.rar_xmpp _通讯协议中文

    这个“XMPP.rar_xmpp 通讯协议中文”压缩包包含了一个名为“XMPP.doc”的文档,很可能是关于XMPP协议的中文详细解读。 XMPP最初由Jabber项目开发,后来被IETF标准化,成为了RFC 6120、6121和6122。它的设计目标是...

    XMPP协议之RFC6120

    XMPP协议的工作原理可以概括为以下几个核心概念: 1. XMPP使用基于XML的流格式进行通信,使得数据交换可以轻松地与XML处理工具和库集成。 2. 它使用“即时”或“推送”通信模型,而不是传统的请求/响应模型,这...

    xmpp服务器端介绍

    - "XMPP协议原理介绍.mht" 可能是关于协议的概述,涵盖了XMPP的核心概念和技术细节。 - "开源项目之Android 推送框架(androidpn) - banketree - 博客频道 - CSDN_NET.mht" 提到了一个Android推送框架,这将涉及XMPP...

    xmpp 协议即时通讯

    这个压缩包文件包含了使用VC6(Visual C++ 6.0)编译的一个XMPP客户端应用的源代码,可以帮助开发者了解XMPP协议的工作原理以及如何在C++环境下实现它。 首先,我们来看看`Jabba`系列的文件。`Jabba.aps`是Visual ...

    基于XMPP协议的简单IM实现的Demo(iOS)

    本教程将介绍如何在iOS平台上利用XMPP协议开发一个简单的即时通讯应用Demo。首先,我们需要理解XMPP的核心概念和工作原理。 **XMPP核心概念** 1. **Jabber ID (JID)**:类似于电子邮件地址,用于标识XMPP网络中的...

    Android 基于XMPP协议IM聊天实现(客户端+服务端) 源码

    在本文中,我们将深入探讨如何使用XMPP协议在Android平台上实现一个完整的即时通讯(IM)系统,包括客户端和服务器端的实现。XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,广泛用于...

Global site tag (gtag.js) - Google Analytics