XMPP基本内容简介

即时通讯技术简介

即时通讯技术(IM)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容.有许多的IM系统,如AOL
IM、Yahoo IM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议。

协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已经出现过的IM协议包括:IETF的对话初始协议(SIP)和即时通讯对话初始协议和表示扩展协议(SIMPLE)、应用交换协议(APEX)、显示和即时通讯协议(PRIM)及基于XML且开放的可扩展通讯和表示协议(XMPP)协议(常称为
Jabber 协议).

人们多次努力,试图统一各大主要IM供应商的标准(AOL、Yahoo及
Microsoft),但无一成功,且每一种IM仍然继续使用自己所拥有的协议.

XMPP起源

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

XMPP是一个分散型通信网络,这意味着,只要网络基础设施允许,任何XMPP用户都可以向其他任何XMPP用户传递消息。多个XMPP服务器也可以通过一个专门的“服务器-服务器”协议相互通信,提供了创建分散型社交网络和协作框架的可能性

尽管XMPP的出现是为了满足“个人-个人”即时消息传递的要求,但它完全不必局限于此任务。

XMPP概述

XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。这表明XMPP是可扩展的。可以通过发送扩展的信息来处理用户的需求,以及在
XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能。XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮

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

XMPP的扩展协议Jingle使得其支持语音和视频,目前iOS尚不支持

XMPP的官方文档时RFC3920

XMPP协议曾经是Google力推的即时通信协议,其代表作品是GTalk

XMPP定义

MPP:The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议)

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

XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同.

XMPP的基本结构

XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的。采用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行。

XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。

服务器同时承担了客户端信息记录,连接管理和信息的路由功能.

网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等

基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML流.

XMPP工作原理

1:节点连接到服务器

2:服务器利用本地目录系统中的证书对其认证

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

4:服务器查找、连接并进行相互认证

5:节点之间进行交互

XMPP工作原理示意图

传输内容

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

而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错

而XMPP的核心部分就是一个在网络上分片段发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。可以说,XMPP用TCP传的是XML流.

XMPP
通信的结构(XMPP——JID)

每个 XMPP客户端用户必须拥有一个全局惟一标识符。基于历史原因,这些标识符称为
Jabber ID或JID。鉴于协议的分布式特征,JID应包含联系用户所需的所有信息,JID的结构类似于电子邮件地址,但不要求
JID同时也是有效的电子邮件收件人。

客户端和服务器节点,被统称为 XMPP实体,都拥有JID。一个有效的JID包括一系列元素:(1)域名(domain
identifier);(2)节点(node identifier);(3)源(resource
identifier).它的格式是[email protected]/resource,resource这个是可选的,resource就是用于区分同一用户不同端登陆。

例如:SomeCorp公司的员工 John Doe可能拥有JID:[email protected],其中somecorp.com是
SomeCorp公司的XMPP服务器的地址,John.Doe是John Doe的用户名。

还可以使用JID连接到其他资源。这允许在一个XMPP实体标识符之外进一步处理拓展

通信类别及公共XML属性

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

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

联机状态,允许用户广播其在线状态和可用性

信息/查询请求,它允许XMPP实体发起请求并从另一个实体接收响应

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

from:源XMPP实体的JID

to:目标接收者的JID

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

type:节的可选子类型

xml:lang:如果内容是人们可读的,则为消息语言的描述.

基于 XMPP的数据传输发生在一些 XML流上,默认在端口5222上操作。这些
XML流实际上是两个完整的 XML文档,每个文档对应一个通信方向。一旦会话建立,stream元素将打开。这个元素将封装整个通信文档。然后,一些节被注入这个文档的第二层。最后,一旦通信结束,stream元素将关闭,形成一个完整的文档。

XMPP协议的组成

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

RFC3920 XMPP:核心。定义了XMPP协议框架下应用的网络架构,引入了XML
Stream(XML流)与XML Stanza(XML节),并规定XMPP协议在通信过程中使用的XML标签。使用XML标签从根本上说是协议开放性与扩展性的需要。此外,在通信的安全方面,把TLS安全传输机制与SASL认证机制引入到内核,与XMPP进行无缝的连接,为协议的安全性、可靠性奠定了基础。Core文档还规定了错误的定义及处理、XML的使用规范、JID(Jabber
Identifier,Jabber标识符)的定义、命名规范等等。所以这是所有基于XMPP协议的应用都必需支持的文档。

RFC3921:用户成功登陆到服务器之后,发布更新自己的在线好友管理、发送即时聊天消息等业务。所有的这些业务都是通过三种基本的XML节来完成的:IQ
Stanza(IQ节), Presence Stanza(Presence节),
Message Stanza(Message节)。RFC3921还对阻塞策略进行了定义,定义是多种阻塞方式。可以说,RFC3921是RFC3920的充分补充。两个文档结合起来,就形成了一个基本的即时通信协议平台,在这个平台上可以开发出各种各样的应用。

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

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

XEP-0045多人聊天。一组定义参与和管理多用户聊天室的协议,类似于Internet的Relay
Chat,具有很高的安全性。

XEP-0096文件传输。定义了从一个XMPP实体到另一个的文件传输。

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

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

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

XEP-0176 Jingle ICE(Interactive Connectivity Establishment)Transport。ICE传输机制,文件解决了如何让防火墙或是NAT(Network
Address Translation)保护下的实体建立连接的问题。

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

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

XEP-0181 Jingle DTMF(Dual Tone Multi-Frequency)。

XEP-0183 Jingle Telepathy Transport Method

XMPP 要点

1. 客户端(C) 和服务器端(S) 通过TCP连接5222端口进行全双工通信.

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

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

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

XMPP的优缺点

优点:开放,标准(XMPP的技术规格已被定义在RFC3920及RFC3921),证实可用,分散,安全,可扩展

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

XMPP的传输小结

XMPP是一种类似于HTTP协议的一种数据传输协议,其过程就如同“解包装--〉包装”的过程。只需要理解其接收的类型及返回的类型,便可以很好的利用XMPP来进行数据通讯.

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

时间: 2024-10-08 02:51:32

XMPP基本内容简介的相关文章

开源新闻采集器(一)内容简介

1.最近闲来无事,想把自己最近一段时间工作的东西整理下. 目标:新闻采集器 1.只需要输入列表网址,采集器将自动采集所有的文章.  2.采集器最后无需写任何采集规则. 3.基于静态爬虫的HTML分页获取 策略(自己捉摸的,准确度不高) 4.基于开源项目的内容提取算法(Html2Article) 5.基于编码的探测的开源项目(NUniversalCharDet) 开源新闻采集器(一)内容简介

《HTML 5网页开发实例详解》样章、内容简介、前言

http://spu.jd.com/1167757597.html http://product.dangdang.com/23484942.html 样章 http://download.csdn.net/download/hdzn0603/7421803 内容简介 <HTML 5网页开发实例详解>从实际的应用场景出发,结合当下的热门技术,深入浅出地介绍了 HTML 5所包含的各项新技术.本书分为 14章.第 1~4章介绍了 HTML 5和浏览器的发展史. HTML 5新特性的使用,最新的前

《构建跨平台APP:PhoneGap移动应用实战》内容简介、目录

当当网链接 http://product.dangdang.com/23567381.html 内容简介 PhoneGap是一款优秀的移动跨平台开发框架,开发者通过它能够快速地将Web应用打包成在各个平台上运行的本地APP. 李柯泉.欧阳薇编著的<构建跨平台APP PhoneGap移动应用实战>分4篇共19章,第一篇是入门篇,包括了PhoneGap的小伙伴们.在安卓开发环境下的配置.对HTML 5前景的简单介绍.第二篇是基础知识篇,包含了设备信息.通讯录.加速度传感器.设备传感器.音频.文件.

《Spring Data JPA从入门到精通》内容简介、前言

内容简介 本书以Spring Boot为技术基础,从入门到精通,由浅入深地介绍Spring Data JPA的使用.有语法,有实践,有原理剖析. 本书分为12章,内容包括整体认识JPA.JPA基础查询方法.定义查询方法.注解式查询方法.@Entity实例里面常用注解详解.JpaRepository扩展详解.JPA的MVC扩展REST支持.DataSource的配置.乐观锁.SpEL表达式在Spring Data里面的应用.Spring Data Redis实现cacheable的实践.Intel

Html内容简介

HTML内容的简介 最近在学习php开发,也因此全面学习html,css等相关内容.学习进度依靠视频内容,现在简介视频中介绍的关于html部分的内容: 关于传智播客韩顺平老师的php从入门到精通视频我一共收录149讲.其中1-9讲为html部分,10-22讲为css部分.22讲之后为php部分,因为主要是学习php,也因此老师对html以及css的内容注定不会过分详细,强调到重点即可. HTML部分 第001讲: Html的介绍,html的运行原理.Html4.0到html5.0 xhtml与x

《PHP 5.5从零开始学(视频教学版)》内容简介、目录

<PHP 5.5从零开始学(视频教学版)>当当网购买地址: http://product.dangdang.com/23586810.html <PHP 5.5从零开始学(视频教学版)>源代码.教学视频下载地址: http://pan.baidu.com/s/1zt9hW 内 容 简 介 本书循序渐进地介绍了PHP 5.5开发动态网站的主要知识和技能,提供了大量的PHP应用实例供读者实践.每一章节都清晰讲述了代码作用及其编写思路,使读者能在最短时间内迅速掌握PHP的应用开发技能.

【原创翻译】ArcGis Android 10.2.4更新内容简介

翻译不当和错误之处敬请指出 更新内容官方描述 https://developers.arcgis.com/android/guide/release-notes.htm 10.2.4的版本注释 本主题介绍Android版本的SDK 10.2.4 ArcGIS运行时的变化. 如果你使用的是Eclipse或ADT作为你的开发环境,你可以使用Upgrade ArcGIS projects工具,提供的SDK,更新你的ArcGIS项目最新安装的版本. 最低支持的android api版本 10.2.4支持

《开源安全运维平台:OSSIM最佳实践》内容简介

<开源安全运维平台:OSSIM最佳实践 > 李晨光 著 清华大学出版社出版 内 容 简 介在传统的异构网络环境中,运维人员往往利用各种复杂的监管工具来管理网络,由于缺乏一种集成安全运维平台,当遇到故障时总是处于被动“救火”状态,如何将资产管理.流量监控.漏洞管理.入侵监测.合规管理等重要环节,通过开源软件集成到统一的平台中,以实现安全事件关联分析,可从本书介绍的OSSIM 平台中找到答案.本书借助作者在OSSIM 领域长达10 年开发应用实践经验之上,以大量生动实例阐述了基于插件收集日志并实现

ISO/IEC 14496 文档内容简介, MPEG标准

ISO/IEC 14496是MPEG专家组制定的MPEG-4标准于1998年10月公布第1版,1999年1月成为国际标准,1999年12月公布了第2版,2000年初成为国际标准. 全文分为21个部分:(1)ISO/IEC 14496-1系统部分,描述了组成一个场景的音频和视频成分之间的关系(2.3)ISO/IEC 14496-2视频部分和ISO/IEC 14496-3音频部分,分别规定自然的和合成的视频对象.音频对象的编码表示.(4)ISO/IEC 14496-4一致性测试部分,定义了比特流和设