天天看点

聊聊四种即时通信(Instant Messaging)IM协议

四种协议英文全称与简称

1->IMPP(Instant Messaging And PresenceProtocol):即时信息和空间协议

2->PRIM(Presence and Instant Messaging Protocol):空间和即时信息协议

3->SIP(Session Initialion Protocol):回话发起协议

SIMPLE(SIP for Instant Messaging and Presence Leveraging Extensiong):,SIP即时消息和表示扩展协议,即SIP的扩展协议

4->XMPP(Extensible Messaging and Presence Protocol):可扩展消息与存在协议

一:即时信息和空间协议

IMPP

IMPP

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

二:空间和即时信息协议

PRIM

PRIM

XMPP

SIMPLE

类似,已经不再使用了。与之相关的资料也非常有限~

三:回话发起协议

SIP

SIMPLE

SIP

的扩展协议,

SIMPLE

是目前为止制定的较为完善的一个。

SIMPLE

XMPP

两个协议,都符合RFC2778和RFC2779 。

SIMPLE

计划利用

SIP

来发送presence信息。

SIP

是IETF中为终端制定的协议。

SIP

一般考虑用在建立语音通话中,一旦连接以后,依靠如实时协议(RTP)来进行实际上的语音发送。但

SIP

不仅仅能被用在语音中,也可以用于视频。

SIMPLE

被定义为建立一个IM进程的方法。

SIMPLE

在2002年夏季得到额外的信任,目前,微软和IBM都致力于在它们的即时通讯系统中实现这个协议。

四:可扩展消息与存在协议

XMPP

都知道在这四种协议中,

XMPP

是最灵活的。

XMPP

是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于

XMPP

的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在

XMPP

的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,

XMPP

包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

XMPP

由Jabber软件基金会开发,最早在Jabber上实现。Jabber项目由Jeremie Miller在1998年开始的一个免费、开源的项目,用于提供给MSN、Yahoo!的IM服务。由于

XMPP

是一种基于XML架构的开放式协议,在 IM通讯中被广泛采用,已经得到了互联网工程任务组(IETF )的批准。2002年,这个产品有超过5万的下载量。

XMPP

拥有成千的Jabber开发者,以及大约数万台配置的服务器和超过百万的终端用户。

XMPP

的前身是Jabber,一个开源形式组织产生的网络即时通信协议。

XMPP

目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分:

1>核心的XML流传输协议

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

XMPP

的核心XML流传输协议的定义使得

XMPP

能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得

XMPP

的协议能够非常漂亮。

XMPP

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

XMPP

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

XMPP

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

XMPP

的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是

XMPP

的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,

XMPP

用TCP传的是XML流。

XMPP

协议优点:

(1)开放:

XMPP

协议是自由、开放、公开的,并且易于了解。而且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。

(2)标准:互联网工程工作小组(IETF)已经将Jabber的核心XML流协议以

XMPP

之名,正式列为认可的实时通信及Presence技术。而

XMPP

的技术 规格已被定义在RFC 3920及RFC 3921。任何IM供应商在遵循

XMPP

协议下,都可与Google Talk实现连接。

(3)真实可用:第一个Jabber(现在

XMPP

)技术是Jeremie Miller在1998年开发的,现在已经相当稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运作著,并有数以百万计的人们使用

XMPP

实时传讯软件。

(4)分布式:XMPP网络的架构和电子邮件十分相像;

XMPP

核心协议通信方式是先创建一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。

(5)安全:任何XMPP协议的服务器可以独立于公众

XMPP

网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心

XMPP

技术规格中。

(6)可扩展:XML命名空间的威力可使任何人在核心协议的基础上建造客制化的功能;为了维持通透性,常见的扩展由

XMPP

Standards Foundation。

(7)弹性佳:XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。

(8)多样性:用

XMPP

协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各种领域;用

XMPP

技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。

XMPP协议缺点:

(1)数据负载太重:随着通常超过70%的

XMPP

协议的服务器的数据流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的数据提供给多个收件人。新的议定书正在研究,以减轻这一问题。

(2)没有二进制数据:

XMPP

协议的方式被编码为一个单一的长的XML文件,因此无法提供修改二进制数据。文件传输协议一样使用外部的HTTP。如果不可避免,

XMPP

协议还提 供了带编码的文件传输的所有数据使用的Base64。至于其他二进制数据加密会话(encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。

更多链接1 更多链接2 更多链接3 更多链接4