XMPP协议及其扩展简介.doc_第1页
XMPP协议及其扩展简介.doc_第2页
XMPP协议及其扩展简介.doc_第3页
XMPP协议及其扩展简介.doc_第4页
XMPP协议及其扩展简介.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XMPP协议Extensible Messaging and Presence Protocol即可扩展消息与在线感知协议,它是一个基于XML流的即时通信协议。由Jabber工作组于1999年开始研发,2003(有待确认)被IETF工作组确立为标准的即时通信协议。此后又经过几年的发展与完善,逐渐形成了现在的协议框架i。核心文档Extensible Messaging and Presence Protocol (XMPP): Core这里XMPP协议框架中最重要的文档,它定义了XMPP协议框架下应用的网络架构,这是一个非常开放的框架,从而使XMPP协议的极具可扩展性、极具开放性。它引入了XML Stream与XML Stanza,并规定XMPP协议在通信过程中都使用XML标签。使用XML标签从根本上说是由于协议开放性与扩展性的需要。此外,在通信的安全方面,把TLS安全传输机制与SASL认证机制与引入到内核,与XMPP进行无缝的连接,为协议的安全性、可靠性奠定了基础。Core文档还规定了错误的定义及处理、XML的使用规范、JID的定义、命名规范等等。所以这是所有基于XMPP协议的应用都必需支持的文档ii。Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and PresenceCore文档中只对支持XMPP协议的应用作出了最基本的规范,并没有对消息与在线状态进行详细的定义。从应用的角度来讲,Core文档(RFC3920)中定义的是从连接服务器到用户上线之前的工作。本节中讨论的文档,规定的是用户成功登陆到服务器之后,发布更新自己的在线、好友管理、发送即时聊天消息等等业务。所有的这些业务都是通过3种基本的XML Stanza来完成的,IQ Stanza, Presence Stanza, Message Stanza。RFC3921还对阻塞策略进行了定义,定义是多种阻塞方式。可以说,RFC3921是RFC3920的充分补充。两个文档结合起来,就形成了一个基本的IM通信协议平台,在这个平台上可以开发出各种各样的应用。XMPP把复杂的具体的应用通过扩展来规定iii。其他文档Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)Internationalized Resource Identifiers (IRIs) and Uniform Resource Identifiers (URIs) for the Extensible Messaging and Presence Protocol (XMPP)(Todo增加对它的说明)XMPP协议的扩展框架RFC3920与RFC3921两个核心文档奠定了XMPP协议框架的基础,在这个框架上可以方便的扩展出各种各样的应用。如果说核心的文档规定的XMPP的骨架的话,那么这些扩展就是XMPP应用上的肉。Jabber Software Foundation对扩展进行了规范。如果一个扩展协议可发布成为公开的扩展应用,那么它必需遵循XMPP Extension Protocolsiv。到目前为止,已经有很多的应用扩展,这些扩展涉及到实际IM系统中需的各种需求。扩展协议的标准化进程Todo:查阅有关文档,在此做简要说明主要可分为以下几个方面基础应用扩展1 XEP-0004 Data Forms2 XEP-0030 Service Discovery3 XEP-0076 Malicious Stanzas4 XEP-0053 XMPP Registrar5 XEP-0090 Entity Time6 XEP-0092 Software Version7 XEP-0114 Jabber Component Protocol8 XEP-0115 Entity Capabilities9 XEP-0124 HTTP Binding10 XEP-0138 Stream Compression11 XEP-0154 User ProfileIM应用扩展1 XEP-0045 Multi-User Chat2 XEP-0047 In-Band Bytestreams (IBB) 3 XEP-0049 Private XML Storage4 XEP-0055 Jabber Search5 XEP-0060 Publish-Subscribe6 XEP-0077 In-Band Registration7 XEP-0083 Nested Roster Groups8 XEP-0084 User Avatar9 XEP-0107 User Mood10 XEP-0146 Remote Controlling Clients11 XEP-0163 Personal Eventing via Pubsub12 XEP-0172 User NicknameP2P扩展1 XEP-0096 File Transfer2 XEP-0003 Proxy Accept Socket Service3 XEP-0166 Jingle4 XEP-0167 Jingle Audio Content Description Format5 XEP-0176 Jingle ICE Transport6 XEP-0177 Jingle Raw UDP Transport7 XEP-0180 Jingle Video Content Description Format8 XEP-0181 Jingle DTMF9 XEP-0183 Jingle Telepathy Transport MethodTodo:对上面列出的文件做简单的介绍,如果不是很确定的文件,则特别说明上面列出的只是笔者工作中涉及到的一些文档,并实现了部分的扩展协议。由于工作上原因,有些文档只是有所了解,而没有深入研读。XMPP官方网站上列出了v基于XMPP协议的产品现在已经有很多基于XMPP协议开发的产品,很多公司也选择她作为即时通信的协议。Blogcn公司新开发的Rabo3.0中即时通信采用就是XMPP协议。Google公司推出即时通信工具,gtalk也采用的是XMPP协议参考gtalk。在开源领域,也已经出现了很多开源的工程,即有开源的客户端也有开源的服务器vivii。Jingle扩展框架Jingle是XMPP协议上的扩展协议,它着手解决在XMPP协议框架下的点对点的连接问题,也即P2P连接。在Jingle框架下,即使用户在防火墙或是NAT网络保护之下,也能够建立连接,从而提供文件传送、视频、音频服务等。Jingle扩展Jingle扩展主要包含以下几个文件:XEP-0166 Jingle这是Jingle扩展框架的纲领文件,这个扩展定义Jingle协议应用的特点、应用的场合,也决定了Jingle协议自身的特点viii。从作者信息来看,Jingle协议是由google公司开发的。它作了如下的规定:1) 目标是建立点对点的连接,不管是否在防火墙或是NAT网络下2) 将传输与内容分离3) 有关Jingle会话的过程XEP-0167 Jingle RTP SessionixTodo增加描述This specification defines a Jingle application type for negotiating one or more sessions that use the Real-time Transport Protocol (RTP) to exchange media such as voice or video. The application type includes a straightforward mapping to Session Description Protocol (SDP) for interworking with SIP(Session Initation Protocal) media endpoints.XEP-0176 Jingle ICE Transport在Jingle框架下,它属于Jingle的传输方式。这个文件解决了如何让防火墙或是NAT保护下的实体建立P2P连接的问题x。从协议的名字可以看出,它是利用了ICE协议xi来建立P2P连接的。ICE协议是一个基于STUN协议xii的一个旨在建立实体间P2P连接的协议(下文中有专门的说明)。XEP-0176所做的工作就是,将ICE协议与XMPP协议结合起来,也就是用XMPP协议作为ICE的signal channel,在它的协调之下建立连接。XEP-0177 Jingle Raw UDP Transport顾名思义,XEP-0177 Jingle Raw UDP Transport是直接建立连接,它也是一种传输的方式。但是与XEP-0176 Jingle ICE Transport方式不同,它只能建立没有防火墙且在同一网络下面的P2P连接xiii。XEP-0180 Jingle Video Content Description FormatxivTodo增加描述XEP-0181 Jingle DTMFxvXEP-0183 Jingle Telepathy Transport MethodxviRabo3.0中采用的文件传输协议由于到目前为止,Jingle框架下还没有专门的文件传送协议(即内容为文件)。所以,Rabo在开发中,采用的是自定义的基于Jingle框架的文件传送协议。这个协议的正文请参考P2P文件、文件夹传送扩展协议BFTBlogcned File Transfer 1.0版本xviiJingle框架的特点传输内容与传输方式分离Jingle在设计时,就将传输的内容与传输的方式进行分离,内容可以利用多种传输方式进行传输,内容是复杂多样的,对传输方式也有着不同的要求。而传输方式也有多种,不同的传输方式,可以应用到不同的场合。在Jingle中目前有对Audio、Video进行专门的规定。XEP-0167: Jingle Audio via RTP与XEP-0180 Jingle Video via RTP。由于还没有专门对它进行研究过,所以这里先不作进一步的描述todo。在传输方式上,也有很多种,这些在前面介绍Jingle扩展的文件时有提到过。可扩展性Jingle框架传承了XMPP协议的特点,也极具可扩展性。这得益于传输内容与传输方式的分离的设计理念。基于Jingle提供的几种传输方式下,我们可以根据需求设计支持不同的传输内容。比如文件传送、目录共享,都可以很方便的添加进来。这些扩展在gtalk中也得到应用。值得专门提出的是,Rabo3中的采用的文件传输协议也是基于XEP-0176 Jingle ICE Transport专门设计的。可部署性Jingle扩展框架在应用时,非常的方便。在两个实体之间要建立P2P连接时,只要实体双方都支持相应的传输方式与传输内容,在理想的情况下,它不需要XMPP服务器的任务支持,也不需要其它第三方的中转,就可以建立连接。理想的情况是指,双方可以直接建立连接的情况下,比如在同一个局域网或者没有防火墙保护。如果在不理想的情况下,原先的XMPP网络框架2:C1-S1-S2-C3 |C2-+-G1=FN1=FC1 只需要作简单的扩展即可支持Jingle的P2P连接。由于在不理想的情况下,两个实体之间建立连接需要通过XEP-0176 Jingle ICE Transport协议来建立。这种传输方式是基于ICE&STUN的,所以只需要部署STUN服务器。如果愿意的话,还可以部署stun relay server,这样就可以支持所有情况下的P2P连接,但是部署stun relay server的代价是昂贵的参考stun relay server的部署。Jingle与P2P技术Jinlge中XEP-0176 Jingle ICE Transport传输方式支持在防火墙与NAT网络保护下的P2P连接的。XEP176本身并没有探讨如何建立P2P连接,它所做的工作就是使用ICE与STUN协议来建立连接。ICE是一个标准的建立P2P连接性检查的协议,它自身不能独立的工作,而需要在信号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论