We have already learned about Sip user agent and sip network server. SIP clients initiates a call and SIP server routes the call . Registrar is responsible for name resolution and user location. Sip proxy receives calls and send it to its destination or next hop.
Presence is user’s reachability and willingness to communicate its current status information . User subscribe to an event and receive notification . The components in presence are :

- Presence user agent
- Presence agent
- Presence server
- Watcher
Image source : http://msdn.microsoft.com/en-us/library/bb896003.aspx
Sip was initially introduced as a signaling protocol but there were Lack of method to emulate constant communication and update status between entity
Three more method was introduced namely – Publish , Subscribe and Notify
Subscribe request should be send by watchers to presence server. Presence agent should authenticate and send acknowledgement. State changes should be notified to subscriber. Agents should be able to allow or terminate subscription

Subscribe
SUBSCRIBE sip:presentity@example.com SIP/2.0
Via: SIP/2.0/UDP host.example.com;branch=z9hG4bKnashds7
To:
From: ;tag=12341234
Call-ID: 12345678@host.example.com
CSeq: 1 SUBSCRIBE
Max-Forwards: 70
Expires: 3600
Event: presence
Contact: sip:user@host.example.com
Content-Length: 0
200 OK to subscribe request
SIP/2.0 200 OK
Via: SIP/2.0/UDP host.example.com;branch=z9hG4bKnashds7 ;received=192.0.2.1
To: ;tag=abcd1234
From: ;tag=12341234
Call-ID: 12345678@host.example.com
CSeq: 1 SUBSCRIBE
Contact: sip:pa.example.com
Expires: 3600
Content-Length: 0
SIP Notify
NOTIFY sip:user@host.example.com SIP/2.0
Via: SIP/2.0/UDP pa.example.com;branch=z9hG4bK8sdf2
To: ;tag=12341234
From: ;tag=abcd1234
Call-ID: 12345678@host.example.com
CSeq: 1 NOTIFY
Max-Forwards: 70
Event: presence
Subscription-State: active; expires=3599
Contact: sip:pa.example.com
Content-Type: application/pidf+xml
Content-Length: …
200 OK success response to notify
SIP/2.0 200 OK
Via: SIP/2.0/UDP pa.example.com;branch=z9hG4bK8sdf2
;received=192.0.2.2
To: ;tag=12341234
From: ;tag=abcd1234
Call-ID: 12345678@host.example.com
CSeq: 1 NOTIFY
SIP PUBLISH
PUBLISH sip:presentity@example.com SIP/2.0
Via: SIP/2.0/UDP pua.example.com;branch=z9hG4bK652hsge
To:
From: ;tag=1234wxyz
Call-ID: 81818181@pua.example.com
CSeq: 1 PUBLISH
Max-Forwards: 70
Expires: 3600
Event: presence
Content-Type: application/pidf+xml
Content-Length: …
200 OK success response to PUBLISH
SIP/2.0 200 OK
Via: SIP/2.0/UDP pua.example.com;branch=z9hG4bK652hsge
;received=192.0.2.3
To: ;tag=1a2b3c4d
From: ;tag=1234wxyz
Call-ID: 81818181@pua.example.com
CSeq: 1 PUBLISH
SIP-ETag: dx200xyz
Expires: 1800
A call flow depicting presence in action is as given below :
presence subscribe notify

Image source http://www.cisco.com/en/US/i/100001-200000/190001-200000/190001-191000/190463.jpg
Security considerations for Presence service include:
Access control.
Notifier privacy mechanism.
Denial of service attacks.
Replay Attacks.
Man-in-the-middle attacks.
Confidentiality.
Solutions for security implementation are
Sip registration
TLS
Digest Authentication
S/MIME
References :
Rfc 3856 http://www.ietf.org/rfc/rfc3856.txt
Rfc 3265 http://www.ietf.org/rfc/rfc3265.txt
Rfc 2778 http://www.ietf.org/rfc/rfc2778.txt
Rfc 3261 http://www.ietf.org/rfc/rfc3261.txt
Rfc 3903 http://www.ietf.org/rfc/rfc3903.txt
http://en.wikipedia.org/wiki/Session_Initiation_Protocol
SIP for Instant Messaging and Presence Leveraging Extensions (simple) IETF http://download.oracle.com/docs/cd/B32110_01/ocms.1013/b31497/about_sdp.htm#BABDHHCJ
Summary :
Presence is a way to have sustained stateful communication. The SIP User agents can use presence service to know about others user’s online status . Presence deployment must confirm to security standards .

Hello it is a fantastic post about SIP presence describing all things like traces , call flows , explanation in details . Keep posting about other SIP functions too .
Hai , I am starting to build a SIP presence server which confirms to latest RFC . Can u suggest any ?
I would recommend building a XDM server for presence . You can use JAISNLEE to build your own PresencecontrolSBB ( service Building Block ) else you can use any opensource implementation of the same
Hello blogger, i’ve been reading your content for some time and
I really like coming back here. I can see that you probably don’t make money
on your blog. I know one cool method of earning
money, I think you will like it. Search google for:
dracko’s tricks
I have noticed you don’t monetize your website, don’t waste your traffic, you can earn extra cash every month.
You can use the best adsense alternative for any type of
website (they approve all websites), for more info
simply search in gooogle: boorfe’s tips monetize your website