`
cuijiemin
  • 浏览: 265414 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
阅读更多
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流。

4、举个例子看看所谓的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连接。
采用XMPP协议的即时通信应用,当数google吧,Google Talk是基于XMPP协议,而且它还允许其它IM自由使用XMPP协议。如此一来,任何IM供应商在遵循XMPP协议的前提下,都可以随时与Google Talk实现免费连接.

附:主流的四种IM通讯协议简介

IMPP:IMPP主要定义必要的协议和数据格式,用来构建一个具有空间接收、发布能力的即时信息系统。到目前为止,这个组织已经出版了三个草案RFC,但主要的有两个:一个是针对站点空间和即时通讯模型的(RFC 2778);另一个是针对即时通讯/空间协议需求条件的(RFC2779)。RFC2778是一个资料性质的草案,定义了所有presence和IM服务的原理。RFC2779定义了IMPP的最小需求条件。另外,这个草案还就presence服务定义了一些条款,如运行的命令、信息的格式,以及presence服务器如何把presence的状态变化通知给客户。

SIMPLE:SIMPLE是目前为止制定的较为完善的一个。SIMPLE和XMPP两个协议,都符合RFC2778和RFC2779 。SIMPLE计划利用SIP来发送presence信息。SIP是IETF中为终端制定的协议。SIP一般考虑用在建立语音通话中,一旦连接以后,依靠如实时协议(RTP)来进行实际上的语音发送。但SIP不仅仅能被用在语音中,也可以用于视频。SIMPLE被定义为建立一个IM进程的方法。SIMPLE在2002年夏季得到额外的信任,目前,微软和IBM都致力于在它们的即时通讯系统中实现这个协议。 SIMPLE小组致力于进程模式的操作,这将提升运行效率,使基于SIP的机制能够进行会议和三方电话交谈控制,也考虑到能和未来提供的许多新特性实现兼容并提升表现能力。有了进程模式,SIMPLE使用SIP来建立一次进程,再利用SDP(进程描述协议)来实际传输IM数据。

<!-- Search Google -->
Google 输入您的搜索字词 提交搜索表单
<!-- google_ad_client = "pub-7330597899926046"; google_ad_format = "350x30_sdo"; google_link_target = 2; google_color_bg = "ffffff"; google_color_link = "000000"; google_encoding = "GB2312"; //-->
<!-- Search Google --> <!-- google_ad_client = "pub-7330597899926046"; google_ad_slot = "8791774696"; google_ad_width = 468; google_ad_height = 60; //-->
分享到:
评论

相关推荐

    net平台 基于 XMPP协议的即时消息服务端简单实现

    #### 一、XMPP协议简介 XMPP(可扩展消息与存在协议)是一种基于XML的开放标准协议,主要用于即时通讯(IM)系统,文件传输,游戏引擎,物联网(IoT),以及一般实时交互应用程序。该协议的核心在于它的灵活性与可...

    XMPP协议中文参考指南

    XMPP 协议中文参考指南 XMPP(Extensible Messaging and Presence Protocol)是一种基于 XML 的协议,用于实时交换消息和出席信息。该协议的核心功能定义在 RFC 3920 中,包括 XML 流、TLS 和 SASL 加密、流的根...

    基于XMPP协议的Android消息推送设计与实现.pdf

    一、XMPP协议简介 XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放式即时通信协议。XMPP协议具有高效、可靠、安全和可扩展性等特点,广泛应用于即时通信、消息推送和实时协作等领域。 二、...

    XMPP协议中文版

    XMPP协议的核心功能被定义在RFC3920和RFC3921中,分别涉及核心协议和即时消息与出席协议(XMPP-IM)。 通用架构章节阐述了XMPP协议所采用的客户-服务器模型,该模型允许任意两个网络终端通过TCP连接实现结构化信息...

    基于XMPP协议的Android即时通信系统设计

    #### XMPP协议简介 XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的即时通讯协议,最初由Jabber项目开发,后成为国际标准。XMPP的主要特点包括: 1. **开放性**:任何人都可以使用XMPP来构建...

    基于XMPP协议企业级IM的研究与实现

    #### XMPP协议简介 XMPP是一种基于XML(可扩展标记语言)的即时通信协议,它最初由Jabber项目开发,旨在提供一种开放式的即时通信解决方案。XMPP的主要特点包括: - **开放性**:XMPP协议完全公开,任何人都可以...

    XMPP协议(可扩展消息出席协议):核心.doc

    ### XMPP协议(可扩展消息出席协议):核心知识点解析 #### 一、绪论 **1.1 概览** XMPP(可扩展消息和出席协议)是一种开放式的XML协议,旨在支持接近实时的消息传递、出席信息以及请求-响应服务。该协议的基本...

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

    #### 一、XMPP协议简介 XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的即时通讯协议,它最初由Jabber项目开发,现已成为一种开放标准。XMPP的核心优势在于其可扩展性、灵活性以及对实时通信的...

    XMPP协议 C#实例

    在本文中,我们将深入探讨如何使用C#语言实现XMPP协议,并通过一个名为"ConsoleXmpp"的示例项目进行实战演练。这个实例是专为Visual Studio 2010设计的,它能确保在Openfire服务器上实现可靠的通信。 首先,理解...

    XMPP协议中文帮助文档

    这份"XMPP协议中文帮助文档"无疑为那些需要理解和应用XMPP技术的开发者提供了宝贵的资源。 XMPP的核心概念包括以下几个方面: 1. **XML流(XML Stream)**:XMPP的通信基础是XML流,它是一个持续的双向通道,允许...

    xmpp协议相关的jar和中文文档

    1. **XMPP协议基础**: - XMPP的核心是基于TCP/IP连接的客户端-服务器架构,用户通过客户端连接到服务器进行消息交换。 - 协议分为两部分:即时消息(IM)和存在状态(Presence),允许用户发送文本消息和了解其他...

    xmpp 协议介绍(rfc3920)

    ### XMPP协议简介 《XMPP:核心协议》(RFC3920)是一份由互联网工程任务组(IETF)发布的文档,该文档详细介绍了Extensible Messaging and Presence Protocol(可扩展消息与呈现协议,简称XMPP)的核心功能。XMPP...

    XMPP协议中文版.doc

    本文将深入探讨XMPP协议的核心功能及其在现代通信中的应用和重要性。 XMPP,源于Jabber开源社区,是一个用于构建即时消息和出席信息应用的协议。XMPP协议的设计初衷是实现网络间的实时通信,同时保证信息的结构化和...

    类似QQ的xmpp协议聊天

    《基于XMPP协议实现类似QQ的聊天应用》 在当今的移动互联网时代,即时通讯(Instant Messaging,IM)应用已经成为人们日常生活中不可或缺的一部分,而QQ作为国内最具影响力的IM平台之一,其功能强大、用户体验优秀...

    xmpp协议demo

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

    xmpp协议和xmpp扩展协议

    xmpp协议和xmpp扩展协议,chm格式

    Android之基于XMPP协议即时通讯软件(二) - way - 博客频道 - CSDN1

    ### 一、XMPP协议简介 XMPP,最初称为Jabber,是一种基于XML的实时通信协议,它提供了客户端-服务器架构,允许用户进行双向通信,包括文字消息、语音通话、视频聊天等。XMPP协议的优势在于其灵活性、可扩展性和安全...

Global site tag (gtag.js) - Google Analytics