This example shows how SIP is used in a presence and instant messaging application. Presence information can be thought of as the state of a user or device at a particular instant. It can be as simple as whether a particular user is signed in or not, whether they are active at their station, or idle or away. For a mobile device, presence information can include the actual location in terms of coordinates, or in general terms such as "in the office", "on travel", or "in the lab". Presence information can even include information about the status or mood of the user, whether they are working, relaxing, or socializing. For all these examples, a presence protocol is mainly concerned about establishing subscriptions or long-term relationships between devices about transferring status information, and the delivery of that information. The actual information transferred, and how that information is presented to the user is application dependent. In terms of the SIP protocol, SUBSCRIBE is used to request status or presence updates from the presence server (or "presentity"), and NOTIFY is used to deliver that information to the requestor or presence "watcher". SIP presence uses the SIP Events extensions [4] and instant message extensions [5].
In this example, Chebychev wishes to communicate with Poisson. The message flow is shown in Figure 2.4. To find out the status of Poisson, Chebychev subscribes to Poisson's presence information by sending a SUBSCRIBE message to Poisson. The request looks like:
SUBSCRIBE sip:poisson@probability.org SIP/2.0
Via SIP/2.0/TCP lecturehall21.academy.ru:5060
;branch=z9hG4bK348471123
Max-Forwards: 70
To: M. Poisson <sip:poisson@probability.org>
From: P. L. Chebychev <sip:chebychev@academy.ru>;tag=21171
Call-ID: 58dkfj34924lk34452k592520
CSeq: 3412 SUBSCRIBE
Allow-Events: presence
Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE, MESSAGE
Contact: <sip:pafnuty@lecturehall21.academy.ru;transport=tcp>
Event: presence
Content-Length: 0
In this example, TCP is used as the transport for the SIP messages as indicated in the Via header field and in the transport=tcp parameter in the Contact URI. This request also contains Allow and Allow-Events header fields, which are used to advertise capabilities. In this example, Chebychev is indicating support for receiving seven methods listed in the Allow header field, and also presence subscriptions in the Allow-Event header field. As this SUBSCRIBE is creating a dialog (in an analogous way that an INVITE created a dialog in the earlier examples), the From contains a tag but the To header field does not yet contain a tag.
Poisson accepts the subscription request by sending a 202 Accepted response back to Chebychev:
SIP/2.0 202 Accepted
Via SIP/2.0/TCP lecturehall21.academy.ru:5060
;branch=z9hG4bK348471123;received=19.34.3.1
To: M. Poisson <sip:poisson@probability.org>;tag=25140
From: P. L. Chebychev <sip:chebychev@academy.ru>;tag=21171
Call-ID: 58dkfj34924lk34452k592520
CSeq: 3412 SUBSCRIBE
Allow-Events: presence
Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE, MESSAGE
Contact: <sip:s.possion@dist.probability.org;transport=tcp>
Event: presence
Expires: 3600
Content-Length: 0
In this example, there are no proxy servers between Chebychev's watcher and Poisson's presence server, although there could be any number. The Expires header field indicates that the subscription expires in 1 hour. The actual subscription is begun by Poisson sending the first NOTIFY back to Chebychev:
NOTIFY sip:pafnuty@lecturehall21.academy.ru SIP/2.0
Via SIP/2.0/TCP dist.probablilty.org:5060
;branch=z9hG4bK4321
Max-Forwards: 70
To: P. L. Chebychev <sip:chebychev@academy.ru>;tag=21171
From: M. Poisson <sip:poisson@probability.org>;tag=25140
Call-ID: 58dkfj34924lk34452k592520
CSeq: 1026 NOTIFY
Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE, MESSAGE
Allow-Events: dialog
Contact: <sip:s.possion@dist.probability.org;transport=tcp>
Subscription-State: active;expires=3600
Event: presence
Content-Type: application/cpim-pidf+xml
Content-Length: 244
<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:cpim-pidf"
entity="sip:poisson@probability.org">
<tuple id="452426775">
<status>
<basic>closed</basic>
</status>
</tuple>
</presence>
Note that this NOTIFY is sent within the dialog established with the SUBSCRIBE-it uses the same dialog identifier (Call-ID, local and remote tags)-and the request is sent to the Contact URI provided by Chebychev in the subscription request. The Subscription-State header field indicates that the subscription has been authorized and activate and that it will expire in 1 hour unless refreshed by Chebychev (using another SUBSCRIBE request).
The Common Presence and Instant Message Presence Information Data Format (CPIM PIDF) [6] XML message body contains the status information that Poisson is currently off-line (closed).
Chebychev sends a 200 OK response to the NOTIFY to confirm that it has been received:
SIP/2.0 200 OK
Via SIP/2.0/TCP dist.probablilty.org:5060
;branch=z9hG4bK4321;received=24.32.1.3
To: P. L. Chebychev <sip:chebychev@academy.ru>;tag=21171
From: M. Poisson <sip:poisson@probability.org>;tag=25140
Call-ID: 58dkfj34924lk34452k592520
CSeq: 1026 NOTIFY
Content-Length: 0
Later, when Poisson does sign in, this information is provided in a second NOTIFY containing the change in status:
NOTIFY sip:pafnuty@lecturehall21.academy.ru SIP/2.0
Via SIP/2.0/TCP dist.probablilty.org:5060
;branch=z9hG4bK334241
Max-Forwards: 70
To: P. L. Chebychev <sip:chebychev@academy.ru>;tag=21171
From: M. Poisson <sip:poisson@probability.org>;tag=25140
Call-ID: 58dkfj34924lk34452k592520
CSeq: 1027 NOTIFY
Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE, MESSAGE
Allow-Events: presence
Contact: <sip:s.possion@dist.probability.org;transport=tcp>
Subscription-State: active;expires=1800
Event: presence
Content-Type: application/cpim-pidf+xml
Content-Length: 325
<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:cpim-pidf"
entity="sip:poisson@probability.org">
<tuple id="452426775">
<status>
<basic>open</basic>
</status>
<contact>sip:s.possion@dist.probability.org;transport=tcp
</contact>
</tuple>
</presence>
The expiration time indicated in the Subscription-State header field indicates that 30 minutes have passed since the subscription was established. The CPIM PIDF XML message body now indicates that Poisson is on-line (open) and can be reached via the URI sip:s.possion@dist.probability.org;transport=tcp.
Chebychev confirms receipt of the NOTIFY with a 200 OK response:
SIP/2.0 200 OK
Via SIP/2.0/TCP dist.probablilty.org:5060
;branch=z9hG4bK334241;received=24.32.1.3
To: P. L. Chebychev <sip:chebychev@academy.ru>;tag=21171
From: M. Poisson <sip:poisson@probability.org>;tag=25140
Call-ID: 58dkfj34924lk34452k592520
CSeq: 1027 NOTIFY
Content-Length: 0
Now that Chebychev knows that Poisson is on-line, he sends an instant message to him using the Contact URI from the NOTIFY:
MESSAGE sip:s.possion@dist.probability.org SIP/2.0
Via SIP/2.0/TCP lecturehall21.academy.ru:5060
;branch=z9hG4bK3gtr2
Max-Forwards: 70
To: M. Poisson <sip:s.possion@dist.probability.org>
From: P. L. Chebychev <sip:chebychev@academy.ru>;tag=4542
Call-ID: 9dkei93vjq1ei3
CSeq: 15 MESSAGE
Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE, MESSAGE
Content-Type: text/plain
Content-Length: 9
Hi There!
Notice that this MESSAGE is sent outside the dialog. Instant messages sent using the MESSAGE method in SIP are like page messages-they are not part of any dialog. As a result, each message contains a new Call-ID and From tag. The 200 OK response is used to acknowledge receipt of the instant message:
SIP/2.0 200 OK
Via SIP/2.0/TCP lecturehall21.academy.ru:5060
;branch=z9hG4bK3gtr2;received=19.34.3.1
To: M. Poisson <sip:s.possion@dist.probability.org>;tag=2321
From: P. L. Chebychev <sip:chebychev@academy.ru>;tag=4542
Call-ID: 9dkei93vjq1ei3
CSeq: 15 MESSAGE
Content-Length: 0
Poison answers with a reply, which is also sent outside of any dialog, with a new Call-ID and From tag (an instant message response is never sent in a 200 OK reply to a MESSAGE request):
MESSAGE sip:chebychev@academy.ru SIP/2.0
Via SIP/2.0/TCP dist.probablilty.org:5060
;branch=z9hG4bK4526245
Max-Forwards: 70
To: P. L. Chebychev <sip:chebychev@academy.ru>
From: M. Poisson <sip:s.possion@dist.probability.org>;tag=14083
Call-ID: lk34452k592520
CSeq: 2321 MESSAGE
Allow: ACK, INVITE, CANCEL, BYE, NOTIFY, SUBSCRIBE, MESSAGE
Content-Type: text/plain
Content-Length: 30
Well, hello there to you, too!
which receives a 200 OK reply:
SIP/2.0 200 OK
Via SIP/2.0/TCP dist.probablilty.org:5060
;branch=z9hG4bK4526245;received=24.32.1.3
To: P. L. Chebychev <sip:chebychev@academy.ru>;tag=mc3bg5q77wms
From: M. Poisson <sip:s.possion@dist.probability.org>;tag=14083
Call-ID: lk34452k592520
CSeq: 2321 MESSAGE
Content-Length: 0
Other presence packages define other sets of information that can be requested by watchers from presence servers.
分享到:
相关推荐
2.4 SIP Presence and Instant Message Example 33 2.5 Message Transport 38 2.5.1 UDP Transport 38 2.5.2 TCP Transport 40 2.5.3 TLS Transport 40 2.5.4 SCTP Transport 41 References 42 3 SIP Clients and ...
NULL 博文链接:https://ansonlai.iteye.com/blog/801810
STB上基于SIP PRESENCE的Presence Service,梁涛,,PRESENCE作为一种呈现协议,主要应用于即时通信领域。STB在成为家用网关之后,将面临业务呈现问题。而SIP协议是支持多媒体会话的信令�
sip业务中presence业务的实现,希望可以帮助到需要的朋友
介绍sip prensence的系列文档,很有参考价值!
基于JAINsip的一个proxy源码,有对sip感兴趣的朋友,可以下载,作为sip的一个代理服务器,实现sip消息的接收和发送。
下一代网络)以及IMS(IP Multimedia Subsystem,IP多媒体子系统)的网络中,可以支持并应用于语音、视频、数据等多媒体业务,同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务。...
一个支持众多rfc的开源sip协议栈,包括presence应用,SIMPLE。
下一代网络)以及IMS(IP Multimedia Subsystem,IP多媒体子系统)的网络中,可以支持并应用于语音、视频、数据等多媒体业务,同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务。...
Extensible Messaging and Presence Protocol (XMPP)_ Core
Provides SIP-based service examples such as presence, instant messaging and Push-to-Talk Engineers, programmers, business managers, marketing representatives, and technically aware users will all find...
Lotus.Instant.Messaging.and.Web.Conferencing.Data.and.Directory.Access.Toolkit.v6.5.1-ACMELotus公司的即时通讯和网络会议软件(Lotus Instant Messaging and Web Conferencing)的前身是Lotus Sametime,多年...
JESD300-5A 2022 SPD5118, SPD5108 HUB AND SERIAL PRESENCE DETECT DEVICE STANDARD.pdf
Lotus公司的即时通讯和网络会议软件(Lotus Instant Messaging and Web Conferencing)的前身是Lotus Sametime,多年以来在商用IM领域中一直是独占鳌头。它具有丰富的功能和互操作性。支持跨平台,可提高个人和团队...
sip的simple协议的presence介绍,好友列表,好友在线状态等
SPD Serial presence detect
Lotus.Instant.Messaging.and.Web.Conferencing.Java.Toolkit.v6.5.1-ACMELotus公司的即时通讯和网络会议软件(Lotus Instant Messaging and Web Conferencing)的前身是Lotus Sametime,多年以来在商用IM领域中一直...
有关IMS SIP及Presence应用的RFC文档包
一篇比较经典的对于参数呵模型不确定动态系统鲁棒性的论文
extensible messaging and presence protocol xmpp co.pdf