XMPP协议的工作原理

XMPP地址格式

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

XMPP消息格式

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

<Message>

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

To :标识消息的接收方。

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

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

结构如下所示:

<message to= ‘[email protected]/contact’ type
=’chat’>

<body> 你好,在忙吗</body>

</message>

<Presence>

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

<presence>

From =‘lily @ jabber.com/contact’

To = ‘yaoman @ jabber.com/contact‘

<status> Online </status>

</presence>

<presence>元素可以取下面几种值:

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

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

< IQ >

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

<iq > 主要的属性是type。包括:

Get :获取当前域值。

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

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

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

结构如下所示:

<iq from =‘lily @ jabber.com/contact’id=’1364564666’ Type=’result’>

XMPP工作机制:

  例如:一个终端名字是Remeo,通过服务器montague.lit与其他的用户相连,其他的用户

通过服务器[email protected]建立连接。

第一步Romeo开始通过发送一个stream包与服务器montague.lit取得联系,这一步包含了鉴权,登录等等。

第二步Romeo获取了他的联系人列表,通过向服务器montague.lit发送<iq/>字段请求,按照下面的协议。

<iq type=‘get’from=‘[email protected]/pda’>

<query xmlns=‘jabber:iq:roster’/>

</iq>

<iq type=‘result’to=‘[email protected]/pda’>

<query xmlns=‘jabber:iq:roster’>

<item jid=‘[email protected]’/><item jid=‘[email protected]’/>

<item jid=‘[email protected]’/>

</query>

</iq>

第三步Romeo发送了一个presence请求到服务器montague.lit,然后会将这个信息广播到他的所有好友。

<presence from=‘[email protected]/pda’/>

<presence from=‘[email protected]/pda’to=‘[email protected]’/>

<presence from=‘[email protected]/pda’to=‘[email protected]’

/>

<presence from=‘[email protected]/pda’to=‘[email protected]’

/>

第四步如果Romeo的联系人都在线,就会将presence回复给Romeo,告知自己的状态。

<presence to=‘[email protected]/pda’from=‘[email protected]/balcony’/>

<presence to=‘[email protected]/pda’from=‘[email protected]/chamber’/>

<presence to=‘[email protected]/pda’from=‘[email protected]/home’/>

第五步Romeo和Juliet开始交换信息,进行聊天。

<message from=‘[email protected]/pda’to=‘[email protected]’>

<body>hi!</body>

</message>

<message from=‘[email protected]/balcony’to=‘[email protected]/pda’

>

<body>hi yourself!</body>

</message>

以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML
Stream。在<stream>与</stream>中间的那些<message>...</message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML
Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一个方发信给另外一方。通信的最后阶段是</stream>关闭流,关闭TCP/IP连接。

所以这种方式和传统的http不一样了!

传统的http是请求之后,去服务器回去数据

而xmpp是,服务器给客户端数据!

时间: 2024-10-07 05:51:09

XMPP协议的工作原理的相关文章

spi协议及工作原理分析

转自----http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的, 它允

【基础】ARP协议-交换机工作原理-及广播风暴问题分析

一.实验拓扑: 使用华为ENSP模拟器(版本V100R002C00 1.2.00.350) 二.实验需求: 1.   了解ARP协议及其作用 2.  掌握交换机的工作原理 3.   解决以太网广播风暴问题 三.实验步骤: 1.  iP规划: c1:192.168.1.10 c2:192.168.1.20 c3:192.168.2.30 R1:g0/0/1192.168.1.1  g0/0/2 192.168.2.1 2.       ARP协议作用: 1)  概念:ARP(全称Address R

FTP协议及工作原理

1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明 和可靠高效地传送数据.简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载 (download)”文件.若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)

SPI协议及其工作原理浅析

转载自:http://bbs.chinaunix.net/thread-1916003-1-1.html一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的, 它允许 MCU 以全双工的同步串

ARP协议-攻击与欺骗分析-交换机工作原理--(精华全篇版)

ARP协议攻击与欺骗分析-交换机工作原理 一:交换机的工作原理 (一):实验拓扑 1:主机A与主机B通信 交换机的工作原理 (1):主机A将一个带有主机A的的ip地址和MAC地址的数据进行封装成帧,向局域网中发送广播. (2):交换机1的接口G0/0/1接收到主机A发送来的数据帧,会立即将数据帧的源MA地 址和接收数据帧的接口G0/0/1记录在它的MAC地址表中.此时的源MAC地址是主机A. (3):交换机这个时候查看自己MAC地址表,看看自己的MAC地址表中是否记录了数据帧的目标MAC地址和默

HTTPS工作原理

目标读者:理解HTTP协议,对称和非对称加密,想要了解HTTPS协议的工作原理 读完本文,你能明白 什么是HTTPS,TLS(SSL),TLS和HTTPS是什么关系 什么是证书和数字签名,它们是如何传递信任的 HTTPS有什么样的功能,它是如何实现这样的功能的 简介 HTTPS,也称作HTTP over TLS.TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3.本文着重描述TLS协议的1.2版本 下图描述了在TCP/I

XMPP协议的原理介绍

XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探測.它在促进server之间的准即时操作.这个协议可能终于同意因特网用户向因特网上的其它不论什么人发送即时消息,即使其操作系统和浏览器不同. XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议.XMPP眼下被IETF国际标准组织完毕了标准化工作.标准化的核心结果分为两部分: 在IETF 中,把IM协议划分为四种协议,即即时信息和出席协议(Instant Messaging

XMPP协议实现原理介绍

本文介绍XMPP协议原理及相关信息. XMPP协议简介   XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP).空间和即时信息协议(PRIM).针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE). 在这四种协议中,XMPP是最灵活的.XMPP是一种基于XML的协议,它继承了在XML环境中

TCP/IP协议工作原理简述

TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 协议是什么?协议是一组为完成特定需求或功能而定义的标准通讯格式.协议是服务于具体需求或功能的,它不能独立存在. 制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通讯的问题.TCP/IP协议共有四层:应用层.传输层.网络层.链路层.应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定.传输