E-mail: macrofox@163.com QQ:18902388 MSN: ming_wy@hotmail.com
目 录
2.基于SIMPLE协议的presence体系结构... 3
1.概述
“presence”,也作“presence information”,中文一般译为“呈现”,用以传达某一用户通过一组设备进行通信的能力和意愿。拿常见的MSN Messenger来举例,MSN v7.5为用户提供的可选状态有:联机、忙碌、马上回来、离开、接听电话、外出就餐和显示为脱机。这些状态便称为“presence状态”,它们表征了用户当前处于的某种状态和用户进行通信的意愿。同时,这些状态还反映出与该用户进行通信的能力,比如若用户处于“脱机”状态的话,别的用户便不能用即时消息与之通信。因此,一个最简单的presence过程如下:一个用户(称为watcher)订阅(SUBSCRIBE)他感兴趣的另一用户(presentity)的presence状态,presentity接受订阅请求。以后presentity的状态发生变化之后他会发布(PUBLISH)自己的新状态,这个新状态会通知(NOTIFY)给watcher。(注:watcher、presentity等概念严格上来说指网络中的通信实体,这里为了解释方便将他们进行了扩展,也泛指人)
随着市场对presence和IM(即时通信)的需求日益增大,各种各样的实现也如雨后春笋般冒了出来。但是目前市场上的大部分实现一般都采用私有协议,相互之间不兼容,呈现功能实现的也不完整。为了对presence和IM规范化,IETF在1998年成立了IMPP(Instant Message and Presence Protocol)工作组,希望设计出健壮、安全和灵活的呈现/即时消息协议。IMPP主要定义必要的协议和数据格式,用来构建一个具有空间接收、发布能力的即时信息系统。现在已经提出了各种不同的协议草案或建议,如:SIMPLE、XMPP、PRIM和APEX等。其中,最有实力的是前两个标准,目前的IM/presence也主要分为两大阵营:SIP/SIMPLE和JABBER/XMPP。本文主要介绍基于SIMPLE的presence。
2.基于SIMPLE协议的presence体系结构
SIMPLE规范是在2001年2月由IETF SIMPLE工作组正式提出的,全称为 SIP Instant Messaging and Presence Leveraging Extensions (针对即时消息和呈现业务的利用扩展的会话初始化协议),是SIP协议针对IM/presence的扩展。
SIMPLE是目前为止制定的较为完善的一个规范,微软和IBM都致力于在它们的即时通讯系统中实现这个协议。
SIMPLE符合RFC2778提出的presence模型,其结构图如下:
Figure 1 presence model
注:上面的实体都是功能实体,与实际实现中的物理实体往往有差别。
各实体功能如下:
Ø Presence Service:接收、存储和分发presence information。Presence Service既可以是一个物理实体上的server,也可以只是presentity和watcher之间的直接通信。在具体实现中前者比较常见,后者是P2P的模式。
Ø Presentity:用于提供presence information给Presence Service。
Ø Watcher:向Presence Service请求获取Presentity的presence information或者自身的watcher information。
Ø Principal:指单个的人、程序或者设备,也可以是人、程序、设备的集合体。对于Presence Service来说,各个Principal是不同的。
Ø Presence User Agent:为Principal提供手段来操作0个或者多个Presentity,Principal操作Presence User Agent改变Presentity的状态。是Principal和Presentity交互的interface。
Ø Watcher User Agent:类似Presence User Agent,Principal通过其来操作0个或多个Watcher,Watcher收到Presentity的新状态之后也通过Watcher User Agent呈现给Principal。
Ø Presence Protocol:定义了Presentity和Presence Service,Watcher和Presence Service之间交换消息的一组标准。
在具体的实现中最常见的是把Presence Service实现为一个Presence Server,Presence User Agent和Presentity组合在一起,Watcher和Watcher User Agent组合在一起,由一个终端来同时支持这两种组合体,这样,一个终端就既能订阅别人的也能发布自己的presence information。