微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 解析XMPP协议分析与应用

解析XMPP协议分析与应用

时间:09-16 来源:互联网 点击:

使数据高效路由至最合适的请求源,并最大限度地简化客户机上的实现,使跨应用实时交流信息成为可能。

2 工作过程

(1)节点(如yb、pt)向本地服务器连接。

①XMPP用户通过开启一个从客户端到服务器端的XML流,来申请一个在服务器上的Socket连接。

SEND: stream:stream

to=′sdpt.com′

xmlns=′jabber:client′

xmlns:stream=′http://etherx.jabber.org/streams′>

②服务器通过开启一个从服务器到客户端的XML流进行回复。

RECV: stream:stream

from=′sdpt.com′

id=′180763465′

xmlns=′jabber:client′

xmlns:stream=′http://etherx.jabber.org/streams′>

(2)节点向本地服务器申请登录。

①用户询问登录服务器时需提供的信息。

SEND: iq id=′2′ type=′get′>

query xmlns=′jabber:iq:auth′>

username>yb/username>

/query>

/iq>

②服务器回应用户,告知用户登录所需要的信息。

③用户提供所需的信息。

④服务器响应一个空的类型为“result”的iq元素,表明登录成功。

RECV:iq id=′3′ type=′result′/>

⑤yb用户发送当前状态给服务器,表明其在线。

SEND: presence>

status>Online/status>

/presence>

(3)用户获得花名册,好友增加一个联系人(如yb获知朋友sd在线)。

(4)用户间发送消息(如yb向sd发送消息)。

用户发送一条消息:

SEND: message to′sd@jabber.org′>

body>Where are you?/body>

/message>

服务器会根据XMPP用户的会话信息加上一个源地址,这样接收者收到消息时,消息中已经包含了源地址。

(5)XMPP服务器根据目标JID中的域名查找、连接到目标服务器并进行认证(如sdpt.com使用DNS查找jabber.org,连接到jabber.org服务器上并进行认证)。

(6)XMPP服务器jabber.org证实sd连接到该服务器上,yb被授权与sd进行通信。

(7)数据在yb与sd间流动。

(8)用户退出,退出时只需要关闭stream>。3 安全机制

3.1 简单认证和安全层协商机制

简单认证和安全层(Simple Authentication and Security Layer,SASL)可以为基于连接的协议加入认证机制,提供KERBEROS_V4、PLAIN和DIGEST-MD5等多种认证方法。每种认证机制包含认证机制名、认证过程初始化命令、认证控制命令、特定8位码和解释器等信息。

在认证过程中,认证服务器完成认证、授权标识传送、简单认证和安全层协商3个方面的工作。在XMPP中,SASL处理步骤如下(C:客户端,S:SASL认证服务器):

(1)C、S之间建立连接。(2)S向C提供认证机制列表。(3)C在认证机制列表中选择一种认证机制。(4)S向C询问授权信息。(5)C向S提交授权信息。(6)S向C返回认证成功或失败信息。

3.2 回拨认证

在通信过程中,2个XMPP服务器之间经常需要通信,为避免利用服务器欺骗方式进行信息伪造,XMPP 采用了回拨认证机制。回拨认证依靠DNS技术完成,利用回拨认证机制,一个服务器可以确认与自己建立连接的服务器是否经过合法授权,回拨认证过程为:(1)源服务器和接收服务器建立连接,并向接收服务器请求认证。接收服务器回应,并分配认证会话ID。(2)源服务器向接收服务器发送认证密钥。(3)接收服务器与认证服务器建立连接。认证服务器同时为该认证会话分配一个验证会话ID。(4)接收服务器把源服务器提交来的密钥和验证会话ID 发送给认证服务器,请求验证。(5)认证服务器验证密钥,并给接收服务器返回认证结果。(6)接收服务器给源服务器返回认证结果。

3.3 加 密

虽然SASL提供了先进的认证机制,通信双方必须经过特定的授权认证才能进行正常通信,但是登录信息一般都是密码和用户名等重要信息,它们大多采用明文方式传送,因此很容易被窃听。为解决该问题,XMPP采用基于传输层安全协议的“STARTTLS”扩展来为通信双方提供机密性和数据完整性服务。TLS 协议包括两个协议组DD TLS 记录协议和 TLS 握手协议DD每组具有很多不同格式的信息。TLS 记录协议是一种分层协议。每一层中的信息可能包含长度、描述和内容等字段。记录协议支持信息传输、将数据分段到可处理块、压缩数据、应用 MAC 、加密以及传输结果等。对接收到的数据进行解密、校验、解压缩、重组等,然后将它们传送到高层客户机。TLS 连接状态指的是TLS 记录协议的操作环境。它规定了压缩算法、加密算法和 MAC 算法。TLS 记录层从高层接收任

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top