XMPP协议学习--RFC2778

转载:http://blog.sina.com.cn/s/blog_53a49285010006mr.html

RFC2778
出席与即时消息模型(Presence and instant messaging)

摘要:
       本文档定义了出席与即时消息系统的一个抽象模型。定义了所涉及的各种实体,术语,略述了系统提供的服务。目标是为进一步研究协议需求与标记出席与即时消息提供通用词汇。

1.介绍
     出席与即时消息系统允许用户彼此订阅并通知状态改变,并用于用户间传送即时短消息。为便于开发提供此类服务的协议套件,我们认为先开发一个系统模型是有价值的。模型涉及各种实体,所提供的基本功能的描述,最重要的是,定义了用于便于讨论的词汇。

     模型的目标是描述性的与普遍的:我们希望模型合理映射到非正式描述的出席或即时消息的所有系统。模型并不打算指定或达到互操作性:出现在模型中的元素并不需要是可互操作协议的一个元素,也可能不是一个好观点。

     本文档中,模型的每个元素以大写出现(如,PRESENCE SERVICE)。

     本档的第一部分是模型的概述。包括图表,为帮助读者理解元素间关系的术语。第二部分是模型实际定义,术语以字母顺序显示以便于参考。

     概述起一定帮助作用但并非确定;可能与模型定义略有不同。对任何不同,模型定义是正确的,而不是概述方面的解释。

2.概述
     模型提供了一种方法,用于理解,对比,描述支持此类主要参照出席与即时消息服务的方法。由许多出现,存在于系统中的命名实体组成。没有实际的实现是每个模型的实体作为独立部分参加。取而代之的是,几乎总是包含两个或两个以上的模型实体作为实现的部分。然而,不同的实现可能以不同的方法联合实体。

     模型定义了两个服务:PRESENCE SERVICE与INSTANT MESSAGESERVICE。
PRESENCE SERVICE接收,存储,发布信息。信息存储就是PRESENCEINFORMATION。INSTANT MESSAGE SERVICE用于接收与传送INSTANTMESSAGES给INSTANT INBOXES。

2.1 PRESENCE SERVICE
       PRESENCESERVICE有两套不同的“clients”(记住,这些可能合并在一个实现里,但在模型中分离对待)。一套客户端为PRESENTITIES,提供PRESENCEINFORMATION用于存储与发布。另一套客户端为WATCHERS,从服务接收PRESENCEINFORMATION。
                   +----------------------------------+
                      PRESENCESERVICE    |
                   +----------------------------------+
                                                    |
                                                     |
                                                    v
                +-----------------+    +-----------------+
                | PRESENTITY|      WATCHER  |
                +-----------------+    +-----------------+
                Fig. 1: Overview of Presence Service
     两类WATCHERS,分别是FETCHERS,SUBSCRIBERS。
     FETCHERS向PRESENCE SERVICE简单请求某些PRESENTITY的PRESENCEINFORMATION的当前值。
     相反,SUBSCRIBER向 PRSENCE SERVICE请求某些PRESENTITY的PRESENCEINFORMATION(将来的)改变通知。
     基于规则基础的一种特殊的获取信息的FETCHER称作POLLER。
             +----------------WATCHER-------------------+
                                                                                |
              +----FETCHER---+ +--SUBSCRIBER--+  |
                                      |
              | +--POLLER--+ |              |
              ||         | |              |
              | +----------+ |              |
              +--------------+ +--------------+  |
             +--------------------------------------=====---+
                  Fig. 2: Varieties of WATCHER

     PRESENCE SERVICE也有相关WATCHERS的WATCHERINFORMATION,他们的行为要根据取消或订阅PRESENCEINFORMATION。PRESENCE SERVICE也可能发布WATCHERINFORMATION给某些WATCHERS,使用用于发布PRESENCEINFORMATION相同的机制。

     PRESENCEINFORMATION的改变通过NOTIFICATION发布到SUBSCRIBERS。图3a-3c显示了P1->P2的PRESENCEINFORMATION改变的信息流。
                  +----------------------------------+
                     PRESENCESERVICE     |
                            P1                               |
                  +----------------------------------+

               +------------+      +------------+
                P1->P2          P1        |
               | PRESENTITY|      | SUBSCRIBER |
               +------------+      +------------+
                  Fig. 3a: NOTIFICATION (Step 1)

                  +----------------------------------+
                     PRESENCESERVICE     |
                          P1->P2          |
                  +---------------------------+
                      ^
                      |P2
               +------------+      +------------+
                  P2                  P1     |
               | PRESENTITY|      | SUBSCRIBER |
               +------------+      +------------+
                  Fig. 3b: NOTIFICATION (Step 2)

                  +----------------------------------+
                     PRESENCESERVICE     |
                            P2                               |
                  +----------------------------------+
                                          |P2
                                          v
               +------------+      +------------+
                  P2               P1->P2   |
               | PRESENTITY|      | SUBSCRIBER |
               +------------+      +------------+
                  Fig. 3c: NOTIFICATION (Step 3)

2.2 INSTANT MESSAGE SERVICE
       INSTANT MESSAGE SERVICE也有两套独立的“client”:SENDERS与INSTANTINBOXES。
       SENDER提供INSTANT MESSAGES给INSTANT MESSAGESERVICE来传送。每个INSTANT MESSAGE都被标记了一个特别的INSTANT INBOXADDRESS,INSTANT MESSAGE SERVICE尝试传消息给相应的INSTANTINBOX。
                +------------------------------------------+
                 INSTANT MESSAGE SERVICE |
                +------------------------------------------+
                                                      |
                                                       v
             +--------------+      +----------------------+
              SENDER       | INSTANT INBOX |
             +--------------+      +----------------------+
           Fig. 4: Overview of Instant Message Service

2.3 协议
       PRESENCE PROTOCOL定义了PRESENCESERVICE,PRESENTITIES,WATCHERS。PRESENCE INFORMATION由PRESENCEPROTOCOL承载。
       INSTANT MESSAGE PROTOCOL定义了INSTANT MESSAGESERVICE,SENDERS,INSTANT INBOXES。INSTANT MESSAGES由INSTNATMESSAGE PROTOCOL承载。
       根据此模型,我们相信IMPP工作组计划为PRESENCE PROTOCOL,PRESENCEINFORMATION, INSTANT MESSAGE PROTOCOL与INSTANTMESSAGES的结构与格式开发细节需求与说明

2.4 格式
       此模型定义的PRESENCE INFORMATION由任意数目的称作PRESENCETUPLES的元素组成。每个元素由一个STATUS标记(可能表达在线/离线/忙碌/离开/不要打扰信息),一个可选COMMUNICATIONADDRESS,和可选的OTHER PRESENCE MARKUP组成。COMMUNICATIONADDRESS包括一个COMMUNICATION MEANS与一个CONTACTADDRESS。一种类型且仅有一种类型的COMMUNICATIONMEANS定义在此模型中,是INSTANT MESSAGESERVICE。一种类型且仅有一种类型的CONTACTADDRESS定义在此模型中,是INSTANT INBOXADDRESS。然而,其它的可能性也存在:COMMUNICATIONMEANS可能指一些电话学形式,例,与CONTACTADDRESS一致,包含一个电话号码。
     +------------------------------------+
     | PRESENCEINFORMATION              |
     +------------------------------------+
      | +-------------------------------+
      =>| PRESENCETUPLE               |
      | +-------------------------------+
        |+-------------------------+
        =>|STATUS                 |
        |+-------------------------+
        |+-------------------------+
        =>| COMMUNICATIONADDRESS   |
        |+-------------------------+
          | +-----------------+
          =>| CONTACT MEANS   |
          | +-----------------+
          | +-----------------+
          =>| CONTACT ADDRESS |
            +-----------------+
        |+-------------------------+
        =>| OTHERMARKUP           |
         +-------------------------+
      | +-------------------------------+
      =>| PRESENCETUPLE               |
      | +-------------------------------+
        |+-------------------------+
        =>|STATUS                 |
        |+-------------------------+
        |+-------------------------+
        =>| COMMUNICATIONADDRESS   |
        |+-------------------------+
          | +-----------------+
          =>| CONTACT MEANS   |
          | +-----------------+
          | +-----------------+
          =>| CONTACT ADDRESS |
            +-----------------+
        |+-------------------------+
        =>| OTHERMARKUP           |
         +-------------------------+
      | +-------------------------------+
      =>| PRESENCETUPLE               |
      | +-------------------------------+
         ...
       Fig. 5: The structure of PRESENCE INFORMATION

       STATUS由模型进一步定义为与INSTANTMESSAGE传送相结合的至少两个状态——OPEN,INSTANTMESSAGES将被接受,与CLOSED,INSTANTMESSAGES将不被接受。OPEN与CLOSED或能也应用于其它COMMUNICATIONMEANS——OPEN映射到某些状态意味着“available”或“open forbusiness”,而CLOSED意味着“unavailable”或“closed tobusiness”。模型允许STATUS包括其它可能由程序或仅由人来叙述的值。模型也允许STATUS由单值或多值组成。

2.5 在即时消息中,出席及其效果
       INSTANT INBOX是INSTANT MESSAGES的容器。它的INSTANT INBOXADDRESS是可以被包括在PRESENCE INFORMATION中的信息,用来定义INSTANTMESSAGE应该怎样被传送至那个INSTANTINBOX。如上所述,STATUS标记的确定值指示是否INSTANTMESSAGES将会被INSTANTINBOX接受。模型并不限制即时消息的传输机制与格式。有理的人可以不同意这种冗长是此模型的优点或缺点。

2.6 PRINCIPALS与它们的代理
       此模型包括其它有利于表现协议与标记如何工作的元素。PRINCIPALS是人,团体,与/或系统之外的“现实世界”中的软件,此系统用于协调与通信。它完全位于模型之外,现实世界怎样映射到PRINCIPALS——模型实体系统仅知道两个不同的PRINCIPALS是独立的,两个同样的PRINCIPALS是同样的。
       PRINCIPAL通过一个或几个用户代理(INBOX USER AGENT;SENDER USERAGENT;PRESENCE USER AGENT;WATCHER USERAGENT)与系统进行交互。通常,不同种用户代理仍分离在模型中,即使大部分实现会把某些用户代理合并在一起。用户代理是PRINCIPAL与一些系统的核心实体(分别为:INSTANTINBOX;SENDER;PRESENTITY;WATCHER)之间单纯的联结。
                  +----------------------------------+
                     PRESENCESERVICE     |
                  +----------------------------------+
                                       |
                      | PRESENCE PROTOCOL |
                                       v
               +------------+      +------------+
               | PRESENTITY|       WATCHER  |
               +------------+      +------------+
                                      ^
                                      |
                                      |
           +--------------+     +-------------+                         o
      /|\  -->| PRESENCE UA     | WATCHER UA  |<--  /|\
           +--------------+     +-------------+     X

  (PRINCIPAL)                                       (PRINCIPAL)

                   Fig. 6: A presence system

                 +---------------------------+
                  INSTANT MESSAGE SERVICE |
                 +---------------------------+
                                       |
                   IM|   INSTANTMESSAGE  |IM
                          PROTOCOL    v
              +------------+       +---------------+
               SENDER        | INSTANT INBOX |
              +------------+       +---------------+
                                        ^
                                        |
                                        |
          +-------------+      +------------------+     o
     /|\  -->|  SENDERUA       INBOXUA       |<--  /|\
          +-------------+      +------------------+     X

  (PRINCIPAL)                                          (PRINCIPAL)

               Fig. 7: An instant messaging system

2.7 例子
       应用模型的简单例子:描述一个普通“好友列表”应用。此应用主要展示用户的出席信息给其他人,并可以看到其他人的出席信息。因此,我们可以描述一个好友列表合并PRESENCEUSER AGENT与WATCHER USERAGENT为一个单PRINCIPAL,使用单PRESENTITY和单SUBSCRIBER。

       然后扩展例子至即时消息并描述一个普遍的“instantmessenger”作为一个有额外能力收发即时消息的好友列表。因此,一个即时消息者将合并PRESENCEUSER AGENT,WATCHER USER AGENT,INBOX USER AGENT,and SENDER USERAGENT为单一的PRINCIPAL,使用单一的PRESENTITY,单一的SUBSCRIBER,和单一的INSTANTINBOX,PRESENTITY的PRESENCE INFORMATION包括一个去向INSTANTINBOX的INSTANT INBOX ADDRESS。

3.模型
     ACCESS RULES:PRESENCE SERVICE怎样使PRESENCEINFORMATION对WATCHERS可利用的约束。对每个PRESENTITY的PRESENCEINFORMATION,ACCESSRULES的可利用性由控制PRESENTITY的PRINCIPAL的PRESENCE USERAGENT操纵。
动机:我们需要谈论一些来自人的隐藏出席信息。

     CLOSED:STATUS标记的一个突出值。在INSTANTMESSAGES上下文中,此值与INSTANT INBOXADDRESS相关,即便,符合一个INSTANT INBOX,也不能接受INSTANTMESSAGE。此值与其它COMMUNICATIONMEANS有相似的意思,但任何那类含义均没定义在模型中。与OPEN对比。

     COMMUNICATION ADDRESS:由COMMUNICATION MEANS与CONTACTADDRESS组成。

     COMMUNICATION MEANS:指通信凭什么能发生的方法。INSTANT MESSAGESERVICE就是COMMUNICATION MEANS的一个例子。

     CONTACT ADDRESS:通过一些COMMUNICATIONMEANS联系的特殊的点。当使用INSTANT MESSAGE SERVICE时,CONTACTADDRESS就是INSTANT INBOX ADDRESS。

     DELIVERY RULES:INSTANT MESSAGE SERVICE怎样传送收到的INSTANTMESSAGES给INSTANT INBOXES。对每个INSTANT INBOX,可应用的DELIVERYRULES由控制INSTANT INBOX的PRINCIPAL的INBOX USER AGENT操纵。

     动机:我们需要讨论过滤即时消息。

     FETCHER:WATCHER的一种形式,向PRESENCESERVICE请求一个或多个PRESENTITIES的PRESENCEINFORMATION,但不要求SUBSCRIPTION去创建。
INBOX USER AGENT:PRINCIPAL操作由PRINCIPAL控制的一个或多个INSTANTINBOXES的方法。

     INSTANT INBOXADDRESS:指PRESENTITY的PRINCIPAL是否并怎样能接收一个INSTANTMESSAGE进INSTANT INBOX。STATUS与INSTANT INBOXADDRESS信息充分决定是否PRINCIPAL出现准备接受INSTANT MESSAGE。

     动机:关于确切的这个怎样工作定义相当松散,即使对即时消息重用Email架构的部分的可能性未解决。

     INSTANT MESSAGE:一个可确认的,小尺寸的,送至INSTANTINBOX的数据单元。
动机:我们不定义“small”,但在定义中查找以避免传输任意长度标记为“即时消息”的流的可能性。

     INSTANT MESSAGE SERVICE:接受并传送INSTANT MESSAGES。
--可能需要SENDER USER AGENTS与/或INSTANT INBOXES的认证。
--对不同的INSTANTINBOXES可能有不同的认证需求,对由一个单PRINCIPAL控制的不同INSTANTINBOXES可能也有不同的认证需求。
--可能有一个涉及多SERVERS与/或PROXIES的一个内部结构。当保留一个单INSTANTMESSAGESERVICE的逻辑连通性,可能会是重定向与/或代理的复杂模式。注意:INSTANTMESSAGESERVICE不需要有一个截然不同的SERVER—此服务可能作为SENDER与INSTANTINBOX间的直接通信被实现。
--可能有涉及其它INSTANT MESSAGESERVICES的内部结构,可以在自己的权力下独立被访问也可以通过初始化INSTANTMESSAGE SERVICE而被获得。

     NOTIFICATION:是当某些感兴趣的PRESENTITY的PRESENCEINFORMATION改变时,从PRESENCESERVICE到一个SUBSCRIBER的消息,以一个或多个SUBSCRIPTIONS记录。

     OPEN:STATUS标记的一个特殊值。在INSTANTMESSAGES上下文中,此值与INSTANT INBOXADDRESS相关,即便,符合一个INSTANT INBOX,准备接受INSTANTMESSAGE。此值与其它COMMUNICATIONMEANS有相似的意思,但任何那类含义均没定义在模型中。与CLOSED对比。

     OTHER PRESENCE MARKUP:任何包含在一个PRESENTITY的PRESENCEINFORMATION中的其它信息。此模型没进一步定义。

     POLLER:是一个基于规则基础请求PRESENCE INFORMATION的FETCHER。

     PRESENCE INFORMATION:由一个或多个PRESENCE TUPLES组成。

     PRESENCE PROTOCOL:PRESENTITY与PRESENCESERVICE间或是WATCHER与
PRESENCE SERVICE间的可以交换的信息。

     PRESENCE SERVICE:接收,存储与发布PRESENCE INFORMATION。
--可能需要PRESENTITIES与/或WATCHERS的认证。
--对不同的PRESENTITIES可能有不同的认证需求。
--不同的WATCHERS可能有不同的认证需求,对由单WATCHER观察的不同的PRESENTITIES可能也有不同的认证需求。
--可能有一个涉及多SERVERS与/或PROXIES的一个内部结构。当保留一个单PRESENCESERVICE的逻辑连通性,可能会是重定向与/或代理的复杂模式。注意:PRESENCESERVICE不需要有一个截然不同的SERVER—此服务可能作为PRESENCE与WATCHERS间的直接通信被实现。
--可能有涉及其它PRESENCESERVICES的内部结构,可以在自已的权力下独立被访问也可以通过初始化PRESENCESERVICE而被获得。

     PRESENCE TUPLE:由一个STATUS,一个可选的COMMUNICATIONADDRESS与可选的OTHER PRESENCE MARKUP组成。

     PRESENCE USERAGENT:PRINCIPAL操纵零个或多个PRESENTITIES的方法。

     动机:这是一个“model/view”的区别:PRESENTITY是被展示的表现模型,在任何用户界面上,独立于它的显示。另外,我们故意不考虑PRESENCEUSER AGENT,PRESENTITY与PRESENCESERVICE怎样跨机器被定位与分布。

     PRESENTITY(出席实体):向PRESENCE服务提供PRESENCEINFORMATION。

     动机:我们不喜欢造新词,但“presentity”看起来值得,因为对出席服务的兴趣实体有清晰的语义。注意:出席实体并不(通常)位于出席服务:出席服务仅有一出席实体出席信息的一个最近版本。出席实体发起出席信息的改变,被出席服务而分布。

     PRINCIPAL:人,程序,或团体与/或程序集(选择对PRESENCESERVICE作为一个单一参与者出现,不同于所有其他PRINCIPALS)
     注意:我们需要关于外部系统参与者的一个清晰概念。“Principal”是个好用语。

     PROXY:一个SERVER,与其他的SERVER交流PRESENCE INFORMATION,INSTANTMESSAGES,SUBSCRIPTIONS与/或NOTIFICATIONS。

     SENDER:通过INSTANT MESSAGE SERVICE传送的源INSTANT MESSAGES。
SENDER USER AGENT:PRIINCIPAL操纵零个或多个SENDERS的方法。

     SERVER:一个PRESENCE SERVICE或INSTANT MESSAGESERVICE的不可分割的单元。

     SPAM:不期望的INSTANT MESSAGES。

     SPOOFING:一个不正确的,模仿其他PRINCIPAL的PRINCIPAL。

     STALKING:使用PRESENCEINFORMATION去推断一个PRINCIPAL在何处,特别是用于恶意的或非法的意图。

     STATUS:一个PRESENTITY的PRESENCEINFORMATION的显著部分。STATUS有至少一对互斥值OPEN与CLOSED,有接受INSTANTMESSAGES的意思,并可能有其它COMMUNICATIONMEANS的意思。可能有其它的STATUS值并不暗示任何有关INSTANTMESSAGE接受的信息。其它STATUS值可能合并OPEN与CLOSED或可能是互斥值。
     一些实现可能用其它实体合并STATUS。举例,一个实现仅当INSTANTINBOX能够接受一个INSTANT MESSAGE时才使INSTANT INBOXADDRESS可见。然后,INSTANT INBOXADDRESS的存在暗示OPEN,缺乏则暗示CLOSED。

SUBSCRIBER:WATCHER的一种形式要求PRESENCESERVICE在一个或多个PRESENTITIES的PRESENCEINFORMATION改变时立即通知它。

     SUBSCRIPTION:PRESENCESERVICE所保留的关于一个SUBSCRIBER请求在一个或多个PRESENTITIES的PRESENCEINFORMATION改变时的通知的信息。

     VISIBILITY RULES:PRESENCE SERVICE使WATCHERINFORMATION对WATCHERS的可利用程度的约束。对每个WATCHER的WATCHERINFORMATION,VISIBILITYRULES的应用由控制WATCHER的PRINCIPAL的WATCHER USERAGENT来操纵。

动机:需要讨论来自人们的隐藏观察者的信息。

     WATCHER:请求来自于PRESENCE SERVICE的有关PRESENTITY的PRESENCEINFORMATION,或有关WATCHER的WATCHERINFORMATION。特别类型的WATCHER是FETCHER,POLLER,SUBSCRIBER。

     WATCHERINFORMATION:WATCHERS在最近一段特殊时间内已经收到的关于一个特别PRESENTITY的PRESENCEINFORMATION的信息。WATCHER INFORMATION由PRESENCESERVICE维护,可以选择与PRESENCEINFORMATION一样的格式来表示;即,服务可能选择使WATCHERS看起来像一个特别形式的PRESENTITY。

     动机:如果一个PRESENTITY想知道谁知道它,仅检查相关的SUBSCRIPTIONS信息是不够的。一个WATCHER可能重复取得信息而没有订阅。另外,WATCHER可能重复订阅,然后取消SUBSCRIPTION。如果PRESENCESERVICE提供了WATCHERSINFORMATION,那类WATCHERS对于PRESENTITY应该是可见的。

     WATCHER USERAGENT:PRINCIPAL操纵零个或多个由它控制的WATHCERS的方法。
     动机:当有PRESENCE USERAGENT与PRESENTITY时,区别意指将一个WATCHER的核心功能从它可能被一个产品的操作隔离开来。像以前一样,我们不考虑WATCHERUSER AGENT,WATCHER,与PRESENCE SERVICE穿过机器联合/分布。

4.安全考虑
     此文档为有一定价值安全论点的系统提供了模型与词汇。特别的,出席与即时消息系统必须处理“3S”:STALKING,SPOOFING,SPAM。ACCESSRULES,VISIBILITY RULES,WATCHERINFORMATION用于处理STALKING。有几种认证提及INSTANT MESSAGESERVICE与PRESENCE
  SERVICE,用于处理SPOOFING。DELIVERY RULES用于处理SPAM。

5.总结
此文档为出席与即时系统提供了模型。模型为进一步定义与实现可互操作的出席与即时消息协议提供了统一的词汇。


英文:http://shindowyu.blogbus.com/c3459396/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值