`

XMPP之服务器回拨

    博客分类:
  • XMPP
 
阅读更多

1.流程:

 

发起服务器和接收服务器建立一个连接。

 

发起服务器通过到连接发送一个 'key' 值给接收服务器。

 

接收服务器建立一个连接到授权服务器。

 

接收服务器发送一个相同的 'key' 值给授权服务器。

 

授权服务器回答这个key是否合法。

 

接收服务器通知发起服务器是否被验证通过。

 

我们用用以下图形展示这个事件流程:

 

流程图:

 
1.
1.发起服务器向接收服务器建立连接

2.发送头

 <stream:stream
    xmlns:stream='http://etherx.jabber.org/streams'
    xmlns='jabber:server'
    xmlns:db='jabber:server:dialback'>

 

注意: 'to''from'属性在流的根元素是可选的(OPTIONAL). 其中包含的xmlns:db名字空间向接收服务器声明了发起服务器支持回拨. 如果名字空间不正确,接收实体必须生成一个<invalid-namespace/>流错误条件并且终止XML流和相应的TCP连接.

 

3.接收服务器返回头

 

 <stream:stream
    xmlns:stream='http://etherx.jabber.org/streams'
    xmlns='jabber:server'
    xmlns:db='jabber:server:dialback'
    id='457F9224A0...'>

注意: 'to''from'属性在流的根元素是可选的(OPTIONAL). 如果名字空间不正确,发起服务器必须生成一个<invalid-namespace/>流错误条件并且终止XML流和相应的TCP连接.也要注意,在这里接收服务器应该应答但是可以出于安全策略考虑只是悄悄地终止XML流和TCP连接;无论如何,如果接收服务器希望继续,它必须回送一个流头信息给发起服务器.


4.发送服务器向接收服务器发送一个key

 

<db:result
    to='Receiving Server'
    from='Originating Server'>
  98AF014EDC0...
</db:result>
5.接收服务器向发起服务器所在的域建立TCP连接,连接到的是授权服务器(由于授权服务器可以是发起服务器,所以可以使用重用现有连接)。
6.接收服务器向授权服务器发送一个流头
   <stream:stream
    xmlns:stream='http://etherx.jabber.org/streams'
    xmlns='jabber:server'
    xmlns:db='jabber:server:dialback'>
7.授权服务器返回一个流头
<stream:stream
    xmlns:stream='http://etherx.jabber.org/streams'
    xmlns='jabber:server'
    xmlns:db='jabber:server:dialback'
    id='1251A342B...'>

如果一个流错误发生在接收服务器和 授权服务器 之间,接收服务器必须生成一个 <remote-connection-failed/> 流错误条件并且终止它和 发起服务器 之间的XML流和相应的TCP连接.

8.接收服务器把从发起服务器发过来的key发给授权服务器
<db:verify
    from='Receiving Server'
    to='Originating Server'
    id='457F9224A0...'>
  98AF014EDC0...
</db:verify>
9.授权服务器验证key是否合法:
   <db:verify
    from='Originating Server'
    to='Receiving Server'
    type='valid'
    id='457F9224A0...'/>
<db:verify
    from='Originating Server'
    to='Receiving Server'
    type='invalid'
    id='457F9224A0...'/>
10.如果成功 接收服务器向发起服务器发起通知
<db:result
    from='Receiving Server'
    to='Originating Server'
    type='valid'/>
  • 大小: 44.5 KB
分享到:
评论

相关推荐

    XMPP-RFC3920中文

    **XMPP (可扩展消息和出席协议)** 是一种基于XML的实时通信协议,起初由Jabber开源社区创建,后来成为Internet ...无论是开发者构建XMPP应用,还是系统管理员配置XMPP服务器,都需要深入理解和遵循这个规范。

    XMPP正式RFC标准3920

    - S1、S2:XMPP服务器 - G1:网关,用于将XMPP消息转换为其他非XMPP消息网络的消息格式 - FN1:外部消息网络 - FC1:外部消息网络上的客户端 ##### 2.2 服务器 服务器在XMPP架构中扮演着核心角色,主要负责管理...

    XMPP协议中文版.doc

    文档还详细讲述了地址空间、XML流的使用、TLS和SASL(安全认证)的集成、资源绑定、服务器回拨机制、XML节的处理规则,以及XMPP中的XML用法。此外,文档还涉及了兼容性要求、国际化问题、安全性考虑和IANA(互联网...

    XMPP协议(可扩展消息出席协议):核心.doc

    服务器回拨机制允许服务器在客户端断开连接时主动发起重连,确保服务的连续性和可用性。 #### 八、XML节 XML节是指XML流中包含的数据单位。XMPP中的消息、出席信息以及其他数据都通过XML节的形式进行传输。服务器...

    XMPP协议详解

    服务器回拨机制则用于验证客户端的身份,防止中间人攻击。 XMPP协议还规定了XML元素的处理规则,包括服务器如何解析和处理接收到的XML数据。XMPP使用XML流来封装所有的通信,这使得数据传输更有序,且易于处理。 ...

    XMPP协议中文版

    服务器回拨章节描述了一种机制,使得服务器能够主动与客户端建立连接。 XML节章节讨论了XML在XMPP中的使用方式,包括如何构建和解析XML数据。服务器处理XML节的规则章节则给出了服务器如何处理接收到的XML节的具体...

    XMPP 3920协议

    XMPP服务器作为中介,负责转发消息和出席信息。每个服务器都有自己的域名标识。 ##### 2.3 客户端 客户端是发起请求的一方,它可以是任何能够发送和接收XML数据的设备或软件。 ##### 2.4 网关 网关作为不同通讯...

    xmpp协议+ios

    - **连接管理**:建立和维持到XMPP服务器的TCP连接,处理断线重连。 - **认证**:实现SASL认证,确保用户安全登录。 - **消息处理**:发送和接收XML消息,解析XML数据并展示给用户。 - **资源管理**:处理多设备登录...

    xmpp-core中文版

    资源绑定和服务器回拨机制确保了客户端可以在多个资源上同时在线并保持唯一标识。 XMPP中的XML使用遵循一定的规范,如Nodeprep和Resourceprep,确保节点和资源的命名合法性。服务器处理XML节的规则确保了数据的有效...

    RFC3920 - Jabber XMPP中文版

    1. **域名**:用于标识XMPP服务器,类似于电子邮件中的后缀,是XMPP地址的一部分,确保地址的唯一性。 2. **节点名**:表示服务器上的账户或实体,类似于电子邮件中的用户名。 3. **资源名**:表示同一账户下的...

    XMPP协议整理

    服务器回拨机制允许XMPP服务器主动向客户端发送数据,而不是仅依赖客户端的轮询请求。这提高了通信效率,降低了网络延迟。 **5. 地址空间** 在XMPP中,每个参与通信的实体都有一个唯一的地址标识——JID(Jabber ...

    extensible messaging and presence protocol xmpp co.pdf

    8. **服务器回拨** - 一种服务器验证机制,用于确认请求来自合法的源,增加了网络的安全性。 9. **XML stanza** - XML stanza是XMPP中的基本消息单元,类似于XML文档的独立片段,用于封装消息、请求或响应。 10....

    RFC3920中文翻译版.pdf

    其内容广泛,包括了从协议的基本架构、地址空间、到TLS(传输层安全协议)和SASL(简单认证与安全层协议)的使用,资源绑定,服务器回拨,以及XML的使用规范等关键知识点。 在XMPP协议的通用架构中,通常认为是一种...

    RFC3920:核心协议.doc

    5. **服务器回拨**:服务器回拨机制允许服务器主动向客户端发送数据,例如通知或推送消息,而不仅仅是响应客户端的请求。 6. **XML节处理**:服务器负责处理接收到的XML节,根据它们的内容和结构进行路由和处理。这...

Global site tag (gtag.js) - Google Analytics