当前位置:文档之家› XMPP协议的原理介绍

XMPP协议的原理介绍

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

XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;

在IETF 中,把IM协议划分为四种协议,即即时信息和出席协议(Instant Messaging and Presence Protocol, IMPP)、出席和即时信息协议(Presence and Instant Messaging Protocol, PRIM)、针对即时信息和出席扩展的会话发起协议(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions, SIMPLE),以及可扩展的消息出席协议(XMPP)。最初研发IMPP 也是为了创建一种标准化的协议,但是今天,IMPP 已经发展成为基本协议单元,定义所有即时通信协议应该支持的核心功能集。

XMPP 和SIMPLE 两种协议是架构,有助于实现IMPP协议所描述的规范。PRIM 最初是基于即时通信的协议,与XMPP 和SIMPLE 类似,但是己经不再使用

1. XMPP 协议是公开的,由JSF开源社区组织开发的。XMPP 协议并不属于任何的机构和个人,而是属于整个社区,这一点从根本上保证了其开放性。

2. XMPP 协议具有良好的扩展性。在XMPP 中,即时消息和到场信息都是基于XML 的结构化信息,这些信息以XML 节(XML Stanza)的形式在通信实体间交换。XMPP 发挥了XML 结构化数据的通用传输层的作用,它将出席和上下文敏感信息嵌入到XML 结构化数据中,从而使数据以极高的效率传送给最合适的资源。基于XML 建立起来的应用具有良好的语义完整性和扩展性。

3. 分布式的网络架构。XMPP 协议都是基于Client/Server 架构,但是XMPP协议本身并没有这样的限制。网络的架构和电子邮件十分相似,但没有结合任何特定的网络架构,适用范围非常广泛。

4. XMPP 具有很好的弹性。XMPP 除了可用在即时通信的应用程序,还能用在网络管理、内容供稿、协同工具、档案共享、游戏、远端系统监控等。

5. 安全性。XMPP在Client-to-Server通信,和Server-to-Server通信中都使用TLS (Transport Layer Security)协议作为通信通道的加密方法,保证通信的安全。任何XMPP服

务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术更加增强了通信的安全性。如下图所示:

XMPP协议的组成

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

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

RFC 3921:用户成功登陆到服务器之后,发布更新自己的在线好友管理、发送即时聊天消息等业务。所有的这些业务都是通过三种基本的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协议网络架构

XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客

户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的(也有例外,例如在两个客户端传输文件时).采

用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行,这样,客户端的工作就比较简单,而且,当增加功能时,多数是在服务器端进行.XMPP 服务的框架结构如下图所示.XMPP中定义了三个角色,XMPP客户端,XMPP服务器、网关.通信能够在这三者的任意两个之间双向发生.服务器同时承担了客户端信息记录、连接管理和信息的路由功能.网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信)、MSN、ICQ等.基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML,工作原理是:

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

XMPP客户端

XMPP 系统的一个设计标准是必须支持简单的客户端。事实上,XMPP 系统架构对客户端只有很少的几个限制。一个XMPP 客户端必须支持的功能有:

1. 通过TCP 套接字与XMPP 服务器进行通信;

2. 解析组织好的XML 信息包;

3. 理解消息数据类型。

XMPP 将复杂性从客户端转移到服务器端。这使得客户端编写变得非常容易,更新系统功能也同样变得容易。XMPP 客户端与服务端通过XML 在TCP 套接字的5222 端口进行通信,而不需要客户端之间直接进行通信。

基本的XMPP 客户端必须实现以下标准协议(XEP-0211):

RFC3920 核心协议Core

RFC3921 即时消息和出席协议Instant Messaging and Presence

XEP-0030 服务发现Service Discovery

XEP-0115 实体能力Entity Capabilities

XMPP服务器

XMPP 服务器遵循两个主要法则:

l 监听客户端连接,并直接与客户端应用程序通信;

l 与其他XMPP 服务器通信;

XMPP开源服务器一般被设计成模块化,由各个不同的代码包构成,这些代码包分别处理Session管理、用户和服务器之间的通信、服务器之间的通信、DNS (Domain Name System)转换、存储用户的个人信息和朋友名单、保留用户在下线时收到的信息、用户注册、用户的身份和权限认证、根据用户的要求过滤信息和系统记录等。另外,服务器可以通过附加服务来进行扩展,如完整的安全策略,允许服务器组件的连接或客户端选择,通向其他消息系统的网关。

基本的XMPP 服务器必须实现以下标准协议

RFC3920 核心协议Core

RFC3921 即时消息和出席协议Instant Messaging and Presence

XEP-0030 服务发现Service Discovery

XMPP网关

XMPP 突出的特点是可以和其他即时通信系统交换信息和用户在线状况。由于

协议不同,XMPP 和其他系统交换信息必须通过协议的转换来实现,目前几种

主流即时通信协议都没有公开,所以XMPP 服务器本身并没有实现和其他协议的转换,但它的架构允许转换的实现。实现这个特殊功能的服务端在XMPP 架构里叫做网关(gateway)。目前,XMPP 实现了和AIM、ICQ、IRC、MSN Massager、RSS0.9 和Yahoo Massager 的协议转换。由于网关的存在,XMPP 架构事实上兼容所有其他即时通信网络,这无疑大大提高了XMPP 的灵活性和可扩展性。

XMPP地址格式

一个实体在XMPP网络结构中被称为一个接点,它有唯一的标示符jabber identifier(JID),即实体地址,用来表示一个Jabber用户,但是也可以表示其他内容,例如一个聊天室.一个有效的JID包括一系列元素:(1)域名(domain identifier);(2)节点(node identifier);(3)源(resource identifier).它的格式是node@domain/resource,node@domain,类似电子邮件的地址格式.domain用来表示接点不同的设备或位置,这个是可选的,例如a在Server1上注册了一个用户,用户名为doom,那么a的JID就是doom@serverl,在发送消息时,指明doom@serverl就可以了,resource可以不用指定,但a在登录到这个Server时,fl的JID可能是doom@serverl、exodus(如果a用Exodus软件登录),也可能是doom@serverl/psi(如果a用psi软件登录).资源只用来识别属于用户的位置或设备等,一个用户可以同时以多种资源与同一个XMPP服务器连接。

XMPP消息格式

XMPP中定义了3个顶层XML元素: Message、Presence、IQ,下面针对这三种元素进行介绍。

用于在两个jabber用户之间发送信息。Jsm(jabber会话管理器)负责满足所有的消息,不管目标用户的状态如何。如果用户在线jsm立即提交;否则jsm就存储。

To :标识消息的接收方。

from : 指发送方的名字或标示(id)o

Text: 此元素包含了要提交给目标用户的信息。

结构如下所示:

你好,在忙吗

用来表明用户的状态,如:online、away、dnd(请勿打扰)等。当用户离线或改变自己的状态时,就会在stream的上下文中插入一个Presence元素,来表明自身的状态.结构如下所示:

From =‘lily @ https://www.doczj.com/doc/ac11536035.html,/contact’

To = ‘yaoman @ https://www.doczj.com/doc/ac11536035.html,/contact'

Online

元素可以取下面几种值:

Probe :用于向接受消息方法发送特殊的请求

subscribe:当接受方状态改变时,自动向发送方发送presence信息。

< IQ >

一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行响应.例如,client在stream的上下文中插入一个元素,向Server请求得到自己的好友列表,Server返回一个,里面是请求的结果.

主要的属性是type。包括:

Get :获取当前域值。

Set :设置或替换get查询的值。

Result :说明成功的响应了先前的查询。

Error: 查询和响应中出现的错误。

结构如下所示:

xmpp协议的使用

在android里面用的smack包其实叫做asmack,该包提供了两种不同的连接方式:socket和httpclient。该并且提供了很多操作xmpp协议的API,也方便各种不同自定义协议的扩展。我们不需要自己重新去定义一套接收机制来扩展新的协议,只需继承然后在类里处理自己的协议就可以了。而本文今天主要说两点,一点就是消息是如何接收的,另一点就是消息是如何通知事件的。 总的思路 1.使用socket连接服务器 2.将XmlPullParser的数据源关联到socket的InputStream 3.启动线程不断循环处理消息 4.将接收到的消息解析xml处理封装好成一个Packet包 5.将包广播给所有注册事件监听的类 逐步击破 (声明在看下面的文章时,最好先理解一下smack的使用,这样才能达到深入的理解)

(谨记:上图只显示本文章解释所要用到的类和方法,减缩了一些跟本文主题无关的代码,只留一条贯穿着从建立连接到接收消息的线。) 解析这块东西打算从最初的调用开始作为入口,抽丝剥茧,逐步揭开。 1. PacketListener packetListener = new PacketListener() { @Override public void processPacket(Packet packet) { System.out .println("Activity----processPacket"+ packet.toXML()); } }; PacketFilter packetFilter = new PacketFilter() { @Override

基于XMPP协议和Openfire的即时通信系统的开发

万方数据

万方数据

万方数据

基于XMPP协议和Openfire的即时通信系统的开发 作者:潘凤, 王华军, 苗放, 李刚 作者单位:潘凤(成都理工大学信息工程学院,四川,成都,610059;运城学院计算机科学与技术系), 王华军,苗放(成都理工大学信息工程学院,四川,成都,610059), 李刚(华商世纪(北京)科贸发 展股份有限公司) 刊名: 计算机时代 英文刊名:COMPUTER ERA 年,卷(期):2008,(3) 被引用次数:1次 参考文献(5条) 1.许鼎即时通信四种协议简述 2003 2.庞怡即时通讯工具现状及发展趋势分析[期刊论文]-科技情报开发与经济 2006 3.Jason Kichten.李军用基于XML的即时消息开发Jabber 2003 4.Peter S A XMPP Instant Messaging and Presenee 2004 5.Jabber官方组织"Jabber::Protocol" 相似文献(6条) 1.学位论文付莎基于XMPP协议企业级IM的研究与实现2009 近年来即时通信技术的飞速发展使即时通信工具的应用更为广泛,给个人的网络生活、企业的日常办公都带来了极大的便利性与高效性。XMPP( eXtensible Messaging and Presence Protocol)可扩展消息与出席协议技术便是其中较为活跃的一种即时通信技术。由于即时通信工具在企业中的应用给企业的运营管理带来诸多便利,因而在企业中的应用越来越广泛,具有很高的研究与应用价值。 目前常用的即时通信软件的协议种类繁多,本文在研究比较了当前流行的几种协议之后,选用了基于可扩展标记语言XML的XMPP协议,由于其开放性、扩展性、安全性良好等诸多优势,并可以实现与使用其他协议的即时通信软件的互联互通,且发展前景良好,因而对于开发一款企业级即时通信系统有着十分明显的优势。本文从对XMPP协议的介绍与分析入手,首先简要介绍了XMPP协议及其发展,XMPP协议的特点,然后又深入介绍了XMPP协议的内容:XMPP协议的系统构架、地址空间、数据的传输结构、以及通信链路的建立过程等。在对协议进行了深入研究的基础上,根据本文的研究目标,针对企业级即时通信系统的特点进行需求分析,并设计与实现。在实现了即时通信的消息收发、名册管理、出席信息的交换等基本功能的基础上,着重研究了用户的管理控制问题、权限划分、可追溯性管理及功能性、扩展性的要求,实现了会议功能、文件传输,以及广播功能,模拟了与非XMPP系统进行交互的过程。在开源软件系统Openfire及Gloox库的支持基础上,最终设计并实现了一套完善的面向企业级的即时通信系统。 最后对系统进行了测试,完成了测试平台的搭建工作,建立相应的测试用例。系统实验测试的结果表明:系统功能完善、稳定,界面友好简洁,满足企业级即时通信系统的需求。 2.学位论文招俏春基于XMPP协议的即时通讯系统的研究2008 随着互联网的普及和发展,即时通讯已经成为人们交流的重要手段。目前有许多的IM系统,如AOL IM、Yakoo IM和MSN IM,它们使用了不同的技术,而且它们互不兼容。XMPP/Jabber的提出打破了传统即时通信系统之间无法实现互联互通的局面。XMPP对于即时通信是一个开放的基于xml的数据模型和协议,采用了分布式的网络体系机构,模块化可扩展的系统架构,使得扩展它的功能变得简单。 利用Jabber/XMPP的体系结构,构建了一个基于XMPP协议的即时通信系统,包括即时通信系统的客户端和服务器。其中服务器采用开源的Jabber服务器Openfire,客户端基于XMPP核心及扩展协议利用Google Talk的开发包libjingle进行研究开发。设计了一个与Openfire互联通信的客户端系统,实现与客户音的文字、语音、视频、文件及实时数据通信功能;研究了XMPP协议及其在协同通讯领域的应用。 介绍了即时通讯的现状、发展趋势,分析了客户端软件的开发环境和所要用到的几个相关技术。在此基础上设计出基于)(MPP协议的能与Jabber服务器Openfire实现互通的客户端软件的总体架构和基本模型,并对即时通讯客户端的具体设计进行了全方位的阐述:在XMPP流通信基础上的文字通信及扩展的群组通讯;基于JEP扩展协议Jingle协议完善了系统功能,进行了客户问的P2P(Peer-to-Peer,点对点)连接扩展,从而实现了可靠的实时语音视频、文件、实时数据等P2P通信。另外还对客户端设计中的几个关键问题,网络安全机制和带NAT的防火墙穿越等方面的进行了较为深入的研究,并论述了本系统所采用的方案。最后总结了本设计的工作与成果,并提出下一阶段的研究设想。 3.期刊论文路璐.王华军.苗放.李刚.Lu Lu.Wang Huajun.Miao Fang.Li Gang基于Jingle协议及Opnefire的语音通信原理与实现-办公自动化(综合版)2007(12) 本文对Jingle协议及Openfire开源项目进行研究和分析,在此基础上进行点对点语音通信原理的分析和实现,并指出该通信方式的优点和不足. 4.学位论文罗伟基于Android平台的即时通讯系统的研究与实现2009 随着移动通信与Internet的飞速发展及相互融合,GPRS使无线网络高速接入到Internet成为现实,移动用户从而可以享受到Internet提供的服务。即时通讯是基于互联网协议的应用程序,它能够使应用不同设备的用户进行通信,随着手机的不断普及以及性能的不断提升,为即时通讯系统从传统的PC机到手机的移植提高了很好的条件。而且在中国庞大的手机用户中,通过手机使用即时通讯软件的用户越来越多。当前的手机操作系统都过于封闭 ,各大即时通讯软件采用的通讯协议也不统一,而Android是基于Linux的开源的手机操作系统平台,XMPP是基于XML的开源的即时通讯协议,因此基于Android平台和XMPP协议开发即时通讯系统具有很好的应用前景。 本文给出了系统的研究背景,对当前手机操作系统、即时通讯软件和即时通讯协议的发展现状做了简单的介绍。进而详细的分析了Android的特征、架构以及Android应用的构成和工作机制,并对Android与其他手机操作系统进行了比较,说明了Android在手机操作系统中的优势。提出了系统的架构 ,以及系统服务器端和客户端的解决方案,采用开源的Openfire作为系统的即时通讯平台,实现移动客户端之间的即时通讯。对系统客户端的组成模块进行了介绍,对即时通讯协议XMPP以及系统的通讯机制进行了分析。针对当前通信数据的安全问题并结合本系统的特点,对IDEA数据加密算法进行了改进,提出了A—IDEA算法的设计,并对两种算法从几个方面进行了对比分析,对于图片文件的加密,采用A—IDEA与RSA算法相结合的方案。对服务器的运行流程进行了分析并对系统客户端进行了详细的设计与实现,对系统进行了部署和测试。 5.期刊论文剧忻.苗放.JU Xin.MIAO Fang基于MINA开发高性能网络应用程序——以实现XMPP协议

XMPP协议即时通讯(Openfire服务器版)

XMPP协议即时通讯(Openfire服务器版) 一、什么是XMPP XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的IM(IM:instant messaging,即时消息)协议之一。 XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML 环境中灵活的发展性。 XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。 服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ 等。 XMPP即时通信协议,采用C/S体系结构。基本的网络形式是客户端连接到服务器,然后由服务器去连接到另一个客户端进行两个客户端之间的通信。 而他们传输的是XML流。 XMPP工作原理说明: 所有从一个客户端到另一个客户端的消息和数据都要通过服务器。 1、客户端连接服务器 2、服务器利用本地目录系统的证书对其认证 3、客户端制定目标地址,让服务器告知目标状态 4、服务器查找,连接并进行相互认证 5、客户端间进行交互 二、搭建服务器(Openfire) 通过上述的了解,我们知道要想进行通信,我们必须要有一个服务器。服务器端采用Openfire作为服务器。 允许多个客户端同时登录并且并发的连接到一个服务器上。 服务器对每个客户端的连接进行认证,对认证通过的客户端创建会话,客户端与服务器端之间的通信就在该会话的上下文中进行。 首先安装Openfire

点击继续

点击安装 安装成功后再偏好设置中就会有Openfire的图标。点击Openfire的图标

XMPP协议分析-原理篇

XMPP协议分析-原理篇 XMPP协议简介 XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的,最早是在Jabber上实现的。它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。并且XML很易穿过防火墙,所以用XMPP构建的应用不易受到防火墙的阻碍。利用XMPP作为通用的传输机制,不同组织内的不同应用都可以进行有效的通信。 XMPP协议特点 1)所有XMPP信息都是以XML为基础的,信息交换的事实标准,扩展性强 2)XMPP系统是一个分布式系统,每台服务器控制自己的资源,但是如果需要,它能与外在的系统进行通 信。XMPP服务器利用开放的XML协议来进行S2S(Serverto Server)通信,就像在C2S(Client to Server)一样。相比之下,大多数的IM系统使用了只是支持C2S/S2C通信的协议,因此Jabber/XMPP服务器具有更大的灵活性。 3)XMPP协议是公开的,程序则开放源代码。定义了客户端和服务器端的交互要经由XML流。普通消息类型(message),如改变状态(presence),传递消息内容或查询/更新(info/quey)应用则用每个指定的命名空间(namespace)来建立。 4)状态(Presence)在整个持久连接中。通过持久连接的有效维持,XMPP协议一直有在网络中维持存在和可用信息的能力。 5)XMPP允许建立并行的TCP套接字连接对所有连接上的客户端和服务器端。一旦建立连接,则只有当状态改变,例如存在的改变,通过这个连接传输数据。既然这个连接是持久的,那么设置、认证、状态查找功能都不用每次都重复执行。这种持久的套接字的连接使得XMPP能够更有效的支持高级的具有存在能力的应用在带宽和处理资源的使用中。 6)Jabber/XMPP系统是模块化的,而且Jabber/XMPP的设计强调如何实现可伸缩性、安全性和可扩展性。 XMPP协议分析 XMPP中定义了三个角色:客户端,服务器,网关。 通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS (短信),MS N,IC Q等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。 XMPP的基本网络结构如下: C1----S1---S2---C3 | C2----+--G1===FN1===F C1 符号表示:C1,C2,C3=XMPP客户端;S1,S2=XMPP;服务端G1=在XMPP和使用外部消息网络(非XMPP)的协议之间转换的网;FN1=外部消息网络;F C1=外部消息网络的客户端。 (1)服务器

gopher,协议

竭诚为您提供优质文档/双击可除 gopher,协议 篇一:网络七层模型各层的协议 网络七层模型各层的协议 在互联网中实际使用的是tcp/ip参考模型。实际存在 的协议主要包括在:物理层、数据链路层、网络层、传输层和应用层。各协议也分别对应这5个层次而已。 要找出7个层次所对应的各协议,恐怕会话层和表示层的协议难找到啊。。 应用层 ·dhcp(动态主机分配协议) ·dns(域名解析) ·Ftp(Filetransferprotocol)文件传输协议 ·gopher(英文原义:theinternetgopherprotocol中 文释义:(RFc-1436)网际gopher协议) ·http(hypertexttransferprotocol)超文本传输协 议 ·imap4(internetmessageaccessprotocol4)即 internet信息访问协议的第4版本·iRc(internetRelaychat)

网络聊天协议 ·nntp(networknewstransportprotocol)RFc-977)网络新闻传输协议 ·xmpp可扩展消息处理现场协议 ·pop3(postofficeprotocol3)即邮局协议的第3个版本 ·sip信令控制协议 ·smtp(simplemailtransferprotocol)即简单邮件传输协议 ·snmp(simplenetworkmanagementprotocol,简单网络管理协议) ·ssh(secureshell)安全外壳协议 ·telnet远程登录协议 ·Rpc(Remoteprocedurecallprotocol)(RFc-1831)远程过程调用协议 ·Rtcp(Rtpcontrolprotocol)Rtp控制协议 ·Rtsp(Realtimestreamingprotocol)实时流传输协议 ·tls(transportlayersecurityprotocol)安全传输层协议 ·sdp(sessiondescriptionprotocol)会话描述协议 ·soap(simpleobjectaccessprotocol)简单对象访问

XMPP 协议

XMPP 协议 1. XMPP 优缺点 X MPP (Extensible Messaging and Presence Protocol) (前称Jabber) 是一种以 X ML 为基础的开放式即时通讯协议,是经由互联网工程工作小组 (IETF) 通过的互联网标准。[1] 1.1 XMPP 协议的优点 1.1.1 可扩展性 X MPP 的数据传输基于 X ML 格式,可扩展性强。X MPP 的核心协议栈 (Core Stack) 部分只定义了基础的 Presence,Message,Iq 等最主要数据格式和传输逻辑,更多的功能则通过定义扩展 (Extensions) 实现。 1.1.2 受 IETF 组织规范 Internet Engineering Task Force (IETF) 在2002年开始规范 X MPP 协议,使其协议的修订和扩展的添加都经过严格的流程审核,防止 X MPP 协议因缺乏标准而分裂。并且这也保证了 X MPP 协议是完全开放的。 1.1.3 应用广泛 X MPP 协议的应用比其他开放即时通讯协议更为广泛。较有名的使用 X MPP 协议的聊天服务有 Google Gtalk 和 Facebook Chat 等。此外,X MPP 在各平台下都有若干服务端、客户端和程序库的实现,二次开发时成本较低。 X MPP 协议的可扩展性和开放性是该协议被广泛应用的保证。 1.2 XMPP 协议的缺点 1.2.1 不内置支持二进制数据的传输 X MPP 的核心部分没有包含对二进制数据传输的支持,这使得 X MPP 的基本数据限定在文本文件范围内。X MPP 社区认为,X MPP 应该用于传输 meta 信息,辅助其他应用进行协议握手,X MPP 本身不应负担海量信息的传输。

RFC3920(XMPP协议)中文版

RFC3920 可扩展的消息和出席信息协议(GMPP):核心协议 关于本文的说明 本文为互联网社区定义了一个互联网标准跟踪协议,并且申请讨论协议和提出了改进的建议。请参照“互联网官方协议标准”的最新版本( STD1 )获得这个协议的标准化进程和状态。本文可以不受限制的分发。 版权声明 本文版权属于互联网社区(C)TheInternetSocietP(20GG). 摘要 本文定义了可扩展消息和出席信息协议(GMPP )的核心功能,这个协议采用 GML流实现在任意两个网络终端接近实时的交换结构化信息。GMPP提供一个 通用的可扩展的框架来交换GML数据,它主要用来建立即时消息和出席信息应用以实现RFC2779的需求。 目录 1. 绪论 2. 通用的架构 3. 地址空间 4. GML 流

5. TLS的使用 6. SASL的使用 7. 资源绑定 8. 服务器回拨 9. GML 节 10. 服务器处理GML节的规则 11. GMPP中的GML用法 12. 核心的兼容性要求 13. 国际化事项 14. 安全性事项 15. IANA 事项 16. 参考 1. 绪论 1.1. 概览 GMPP是一个开放式的GML协议,设计用于准实时消息和出席信息以及请求- 响应服务。其基本的语法和语义最初主要是由Jabber开放源代码社区于1999 年开发的。20GG年,GMPP工作组被授权接手开发和改编 Jabber协议以适应 IETF的消息和出席信息技术。作为GMPP工作组的成果,本文定义了 GMPP1.0 的核心功能;在RFC2779[IMP-REQS]中指定的提供即时消息和出席信息功能的扩展,定义在GMPP-IM 协议

物联网四大协议

物联网四大协议物联网协议

协议一:物联网协议XMPP XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。 基本网络结构 XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。 工作原理 XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一方发信给另外一方。通信的最后阶段是关闭流,关闭TCP/IP 连接。

功能 传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。 优点 XMPP协议是自由、开放、公开的,并且易于了解。而且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。 缺点 网络通信过程中数据冗余率非常高,网络流量中70% 都消耗在 XMPP 协议层了。对于物联网来说,大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备,省电、省流量是所有底层服务的一个关键技术指标,XMPP协议看起来已经落后了。

XMPP 协议工作流程

XMPP 协议工作流程详解 分类:翻译文章2014-04-23 11:11 2221人阅读评论(0) 收藏举报原文: https://www.doczj.com/doc/ac11536035.html,.au/content/how-xmpp-works-step-step 作者: Yilun Fan, 日期2011-01-05 13:09 XMPP 核心协议https://www.doczj.com/doc/ac11536035.html,/rfcs/rfc3920.html XMPP 要点. ? 1. 客户端(C) 和服务器端(S) 通过TCP连接5222端口进行全双工通信. ? 2. XMPP 信息均包含在XML streams中.一个XMPP会话, 开始于 标签, 并结束于标签.所有其他的信息都位于这俩标签之间. ? 3. 出于安全目的考虑, 开始之后, 后续的内容会被适度的使用Transpor Layer Security (TLS) 协商传输和强制性的Simple Authentication 和Security Layer (SASL) 协商传输. ? 4. SASL协商完成后, 一个新的stream 将会被迅速打开, 它将会更加安全和保密.第一步: 打开 stream Client: 客户端发送打开stream 的片段到服务器, 请求一个新的session. [html]view plaincopy 1. 这里“https://www.doczj.com/doc/ac11536035.html,” 是客户端试图连接的服务器的域名. Server: Server 返回XML stream, 以 开头, 包含要求TLS 或者 SASL 协商谈判之一, 或者2个都要求. [html]view plaincopy

Android基于XMPP协议的数据推送技术

深入学习XMPP协议 一.XMPP(协议简介) XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的,最早是在Jabber上实现的。它继承了在XML 环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。并且XML很易穿过防火墙,所以用XMPP构建的应用不易受到防火墙的阻碍。利用XMPP作为通用的传输机制,不同组织内的不同应用都可以进行有效的通信。 二.IM(即时通讯软件简介) Instant Messenger,及时通信软件,就是大家使用的QQ、MSN Messenger和Gtalk等等。其中Gtalk 就是基于XMPP 协议的一个实现,其他的则不是。当前IM 几乎作为每个上网者必然使用的工具,在国外的大型企业中有一些企业级的IM应用,但是其商业价值还没完全发挥出来。设想既然XMPP 协议是一个公开的协议,那么每个企业都可以利用它来开发适合本身企业工作,提高自身生产效率的IM;甚至,你还可以在网络游戏中集成这种通信软件,不但让你可以边游戏边聊天,也可以开发出适合游戏本身的IM 应用,比如说一些游戏关键场景提醒功能,团队语音交流等等都可以基于IM来实现。

三.本文主要内容 本文主要讲解在android使用xmpp协议进行即时通信,所涉及3个主要的东西,它们是openfire、smack和spark,这个三个东东结合起来就是完整的xmpp IM实现,这里简单介绍一下这3个东东在下文的作用: openfire主要是作为服务器,负责管理客户端的通信连接,以及提供客户端一些通信信息和连接信息。 Smack主要是xmpp协议的实现,提供了一套很好的api,所以下面操作xmpp都是通过使用smack的api来实现,当然因为是在android里,所以使用的是asmack这个包,里面方法跟smack包差不多。 Spark 是IM客户端的实现,其实就是使用了smack 的api实现的。 数据通讯具体实现的流程:

基于XMPP协议的即时通信系统服务器集群的研究

基于XMPP协议的即时通信系统服务器集群的研究 陈武,杨世达 武汉理工大学计算机学院,武汉(430071) E-mail:chenwu0211@https://www.doczj.com/doc/ac11536035.html, 摘要:本文描述了在实现基于xmpp协议的即时通信系统的服务器集群时遇到的关键性问题,从安全、性能和通用性方面考虑提出了解决方案,重点介绍了服务器间的寻址和路由机制、服务期间通信的安全机制、故障转移机制。 关键词:xmpp;集群;服务器;安全 中图分类号:TP319 文献标识码:A 1. 引言 XMPP是一个开放的、基于XML的数据模型和协议。对用户而言,在面对现有的各种即时通讯服务,没有统一标准,无法实现互联互通的局面下,XMPP 的出现实现了整个即时通信服务协议的统一。它提供了一种开放式的、基于XML的、能在分布式网络中传输即时消息和在线发现的标准,并解决了不同IM 系统间互操作的问题[1],但是对于即时消息系统服务器集群的实现并没有统一的标准,各个系统服务器集群的实现不尽相同。 2. 集群技术 2.1集群的概念 简单的说,集群就是两台或多台计算机或节点在一个群组内共同工作。与单独工作的计算机相比,集群能够提供更高的可用性和可扩充性。集群中的每个节点通常都拥有自己的资源(处理器、内存、操作系统),并对自己的用户集负责。集群中的每一个服务器都相当于一个结点,各个结点之间通过网络互联,并且在各个节点上都有集群软件用以实现节结点之间寻址和路由,同时保证各节点间通信时的安全,当某个结点出现故障时能实现故障转移和动态的负载平衡。 2.2集群的体系结构 每个用户都有自己的本地服务器,并从该服务器上接受信息, 所有从一个客户端发给另一个客户端的消息和数据都必须通过服务端。每一个服务器都独立于其他服务器,并且拥有其自身的用户列表,通过Internet这些服务器构成了一个分布式网络。服务器通过发送一个探针了解一个用户是否在线,这是实现即时通信的关键。当用户量不是很大时,一台服务器就可以承受,但当用户量超过服务器所能承受的极限时,我们需要多台服务器来分摊负荷,这就带来了新的问题:但不同服务器下的客户端通信时,服务器之间的交互方式。这就要引入服务器集群的概念。集群就是两台或多台计算机或节点共同工作,与单独的计算机相比,集群具有高效性、稳定性和安全性。集群由授权服务器、应用程序服务器和数据库服务器组成,其结构如下所示:

什么是网络协议

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。 简介 协议是用来描述进程之间信息交换数据时的规则术语(参见“法律学”对于“协议”的定义)。在计算机网络中,两个相互通信的实体处在不同的地理位置,其上的两个进程相互通信,需要通过交换信息来协调它们的动作达到同步,而信息的交换必须按照预先共同约定好的规则进行。 要素 网络协议是由三个要素组成: 1. 语义:语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成 的动作与做出什么样的响应。 2. 语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。 3. 时序:时序是对事件发生顺序的详细说明。(也可称为“同步”)。 人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。 工作方式 网络上的计算机之间又是如何交换信息的呢?就像我们说话用某种语言一样,在网络上的各台计算机之间也有一种语言,这就是网络协议,[4]不同的计算机之间必须使用相同的网络协议才能进行通信。 网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。一台设备上的第n层与另一台设备上的第n层进行通信的规则就是第n层协议。在网络的各层中存在着许多协议,接收方和发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息。网络协议使网络上各种

物联网的七大通信协议

物联网的七大通信协议 通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联网的发展。而在通信中,通信协议尤其重要,是双方实体完成通信或服务所必须遵循的规则和约定。 在物联网协议中,我们一般分为两大类,一类是传输协议,一类是通信协议。传输协议一般负责子网内设备间的组网及通信;通信协议则主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。那么物联网都有哪些通信协议呢?随着iBeacon生产厂家-云里物里科技一起来看下吧

物联网七大通信协议 一、REST/HTTP(松耦合服务调用) REST即表述性状态传递,是基于HTTP协议开发的一种通信风格。 适用范围:REST/HTTP主要为了简化互联网中的系统架构,快速实现客户端和服务器之间交互的松耦合,降低了客户端和服务器之间的交互延迟。因此适合在物联网的应用层面,通过REST开放物联网中资源,实现服务被其他应用所调用。 特点: 1.REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。 2.客户端和服务器之间的交互在请求之间是无状态的。 3.在服务器端,应用程序状态和功能可以分为各种资源,它向客户端公开,每个资源都使用URI得到一个唯一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。 4.使用的是标准的HTTP方法,比如:GET、PUT、POST和DELETE。 二、CoAP协议 CoAP(Constrained Application Protocol),受限应用协议,应用于无线传感网中协议。 适用范围:CoAP是简化了HTTP协议的RESTful API,CoAP是6LowPAN协议栈中的应用层协议,它适用于在资源受限的通信的IP网络。 三、MQTT协议(低带宽) MQTT(Message Queuing Telemetry Transport),消息队列遥测传输,由IBM 开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。 适用范围:在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。

PMON协议通讯程序方案书

PMON协议通讯程序方案书 编制人:李丁山 编制日期:2006-6-15 评审人: 评审日期:

修改历史 评审历史

文档目录 PMON协议通讯程序方案书 (1) 修改历史 (2) 评审历史 (2) 项目背景 (4) 需求简介 (4) 技术解决方案 (5) 开发平台 (5) 系统结构 (5) 报文发送 (6) 报文接收 (7) Life报文发送 (7) Life报文接收 (7) 项目管理方案 (8) 项目管理工具 (8) 项目规模估算 (8) 项目计划 (8) 项目风险 (9)

项目背景 上海大众汽车公司目前生产控制数据的通讯协议是基于德国提供的应用协议PMON,该协议建立在UDP/IP通讯协议基础上,将生产过程数据发送到生产控制服务系统,并从生产控制服务系统获得反馈数据。 由于该协议由德方提供,在应用开发中,只有得到德方的支持才能建立通讯,无论从项目的开发成本,还是项目将来的维护,扩充都非常的昂贵且不方便。因此,上海大众希望能够在充分研究PMON协议的基础上,自主开发一套基于PMON应用协议的通讯程序,为将来的生产应用系统的开发提供公共的通讯基础模块系统。 需求简介 基于目前的理解,本通讯系统需要完成以下功能: 1.通讯连接维护 a)建立UDP网络连接 b)通过指令,建立和PMON Server的应用连接 c)通过指令,断开和PMON Server的应用连接 2.发送数据 a)发送生产过程数据 b)发送协调数据(报文ID) c)分段发送大批量数据 d)发送心跳(Life)数据 3.接受数据 a)接受心跳(Life)数据 b)接受应答数据 c)超时等待数据接受 d)不等待接受数据 e)一直等待接受数据 4.查询通讯的状况 a)通过心跳报文定时检查通讯连接状态 5.通讯队列维护 a)创建通讯队列 b)打开队列 c)关闭队列 d)查询发送队列中的报文数

XMPP协议使用开源jabber(XMPP)协议及openfire架设内部即时通讯服务

XMPP协议使用开源jabber(XMPP)协议及openfire架设内部即时通讯服务 分类:C# jabber/XMPP 2010-12-11 14:59 89人阅读评论(0) 收藏举报Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。 XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的技术来自于Jabber,其实它是 Jabber 的核心协定,所以XMPP有时被误称为Jabber协议。Jabber是一个基于XMPP协议的IM应用,除Jabber 之外,XMPP还支持很多应用。下面就是如何架设内部即时通讯服务的步骤: 第一步:安装Jabber服务器软件 Jabber服务软件有很多,具体可以参考jabber官方网站的列表: Jabber官网地址:https://www.doczj.com/doc/ac11536035.html,/ 常用Jabber服务器软件:https://www.doczj.com/doc/ac11536035.html,/software/servers.shtml 其中最为方便安装搭建的无疑是Openfire(Wildfire),一款基于GPL协议开源软件,Openfire有linux、windows和MAC的不同版本,软件需要java环境支持,不过软件本身自带了环境包,你可以根据你的需要下载不同的版本。 下载地址:https://www.doczj.com/doc/ac11536035.html,/downloads/index.jsp#openfire 最新版本:Openfire 3.3.2 1、Windows版本安装方法: 下载:openfire_3_3_2.exe带java环境版本 安装:直接运行安装文件,程序默认安装至c:/Program Files/Openfire 运行:/bin/openfire.exe 2、Linux/Unix版本安装方法 如果使用rpm包安装,下载:openfire-3.3.2-1.i386.rpm 运行: #rpm -ivh openfire_3_0_0.rpm 默认安装路径位于:/opt/openfire 使用源码包安装,下载:openfire_3_0_0.tar.gz(不带java环境,请自行安装) #tar -xzvf openfire_3_0_0.tar.gz # mv openfire /opt 启动方法: #/opt/openfire/bin/openfire.sh 第二步:配置jabber服务器 Openfire(Wildfire)支持完全的web安装,如果你在本地按安装只需要在浏览器中输入 http://localhost:9090(远程服务器为http://你的服务器地址:9090)即可开始即时通讯服务器配置。(1)语言选择:中文简体

相关主题
文本预览
相关文档 最新文档