XMPP - 即时通讯技术

XMPP-即时通讯技术简介

(IM -- Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容

有许多的IM系统,如AOL、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的官方文档是RFC 3920
XMPP协议曾经是Google力推的即时通信协议,其代表作品是GTalk

Google Talk是Google的IM工具,除了具有IM功能外,另外还加上了Voip功能,“界面清新大方”,可直接链接Gmail,接受查看邮件

由于Google Talk是基于Jabber开源标准,这种标准允许用户和其它的即时讯息系统相连,比如苹果电脑的iChat,GAIM,Trillian Pro以及Psi。Google Talk只能够在Windows平台上运行

Google Talk的用户无法使用这种软件与AIM,MSN Messenger或者雅虎Messenger的用户进行互通

2013年5月,在Google I/O大会上,Google推出统一跨平台聊天应用Hangouts(环聊)取代Google Talk

Google Hangouts不支持XMPP协议。Google Hangouts用户与非Google服务如XMPP协议的强有力支持者jabber.org之间的交流无法进行

目前,Google Wave是基于XMPP协议的,并且Google还开发Jingle扩展进行基于XMPP协议的视频聊天。尽管Google尚未宣布Talk的关闭日期,不过从Google关闭Reader和iCal支持来看,Talk关闭之日不会太远

XMPP-定义

XMPP: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-工作原理

节点连接到服务器
服务器利用本地目录系统中的证书对其认证
节点指定目标地址,让服务器告知目标状态
服务器查找、连接并进行相互认证
节点之间进行交互

XMPP-传输内容

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

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

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

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

[XMPP官方网站](http://xmpp.org)

XMPP-优缺点

优点
开放
标准(XMPP的技术规格已被定义在RFC 3920及RFC 3921)
证实可用,谷歌证实了GTalk
分散
安全
可扩展

缺点
数据负载过重XML
没有二进制传输
时间: 2024-10-09 20:16:30

XMPP - 即时通讯技术的相关文章

分享基于Android系统的XMPP即时通讯技术项目实战(仿微信开发架构,自定义控件)

即时通讯技术是 网络技术中的明珠.即时通讯产品改变了人们的生活习惯.经过十几年的发展,即时通讯功能的应用也逐渐从专门软件才能实现的功能逐渐成为标准配置.即时通讯技术的应用不仅仅只是用于社交领域,在大多的协同工作领域,以及需要分布结构的网络通讯领域都是非常重要的.讲师本人在android领域有多年的开发经验,在即时通讯系统方面也有深入的研究.在本课程中,详细讲解了android开发中要解决的一些主要的问题,即时通讯在客户端实现的过程,并手把手的进行操作,方便学习和理解.因为课时的原因,对于一些初级

xmpp即时通讯协议的特性---长处和缺点!

xmpp协议的定义? XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性. 因此.基于XMPP的应用具有超强的可扩展性.经过扩展以后的XMPP能够通过发送扩展的信息来处理用户的需求.以及在XMPP的顶端建立如内容公布系统和基于地址的服务等应用程 序. 并且,XMPP包括了针对server端的软件协议,使之能与还有一个进行通话,这使得开发人员更easy建立客户应用程序或给一个配好系统加入功能. 在此我概括一下xmpp协议的优缺点: 长处: XMPP协议是自由.

新手入门:史上最全Web端即时通讯技术原理详解

前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM(相关文章请参见:<IM架构篇>.<IM综合资料>.<IM/推送的通信格式.协议篇>.<IM心跳保活篇>.<IM安全篇>.<实时音视频开发>).消息推送应用(参见:<推送技术好文>)的通信原理介绍也较多

Web端即时通讯技术原理详解

前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM(相关文章请参见:<IM架构篇>.<IM综合资料>.<IM/推送的通信格式.协议篇>.<IM心跳保活篇>.<IM安全篇>.<实时音视频开发>).消息推送应用(参见:<推送技术好文>)的通信原理介绍也较多

Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

摘要 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯 方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events).本文将简要介绍这4种技术的原理,并指出各自的异同点.优缺点等. 1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询. Comet技术.WebSocket技术.SSE(Server-se

SignalR实现即时通讯技术,支持跨域

一.SignalR环境要求 1.需要有 .NET Framework 4.5,服务器端需要 Windows Server 2008 R2 以上的操作系统以及 IIS7 二.实现机制 SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现.在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 PersistentConnection 是实现了长时间的 JavaScript 轮询(类似于 Comet),Hub

xmPP(即时通讯)向远程服务器请求数据

首先在本地初始化一个数据库 - (void)initDatabase { //最终数据库路径 NSString *dbPath  = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/database.db"]; NSFileManager *fm = [NSFileManager defaultManager]; if(![fm fileExistsAtPath:dbPath]) { EGODatabase*

XMPP即时通讯

XMPP:XMPP是基于XML的点对点通讯协议,The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议). XMPP可用于服务类实时通讯,表示和需求响应服务中的XML数据元流失传输.XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议. 基本结构. XML是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器

iOS开发之XMPP即时通讯简单实现

首先搭载服务器和数据库 搭载服务器我用的是openfire,数据库用的是mysql 这里推荐两个链接 配置mysql,用的是mysql workbench http://justsee.iteye.com/blog/1753467 配置服务器 openfire http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html 先配置好数据库然后配置服务器 两个都打开 下一个XMPP客户端,就是用来测试的 我下的是Adium 这里下 ht