SIP overview:
SIP is an application-layer control protocol that can establish,
modify, and terminate multimedia sessions (conferences) such as
Internet telephony calls. SIP can also invite participants to
already existing sessions, such as multicast conferences.
Normally SIP uses UDP and TCP port 5060 anf TCP 5061 for SSL communication.
SIP protocol is very similar to HTTP, so who has some knowledge about http
then easy to learn SIP.
SIP doesn't transfer session data like audio,video, RTP(real time protocol) is used
for that, SIP just helps to open RTP streams.
SIP message example:
INVITE sip:john@domain.com SIP/2.0
From: <sip:doe@domain.com>;tag=2084442460
To: <sip:john@1domain.com>
Via: SIP/2.0/UDP domain.com:5060;branch=z9hG4bK2df7b9194cd51e25
Call-ID: john@domain.com-4524j
CSeq: 1 INVITE
Contact: <sip:doe@domain.com:5060>
Content-Length: 226
Content-Type: application/sdp
<session description data, like RTP description>
SIP server types:
stateless
|
SIP server doesn't store any transaction info. |
statefull
|
SIP server creates and holds SIP commands transaction state. |
registrar/location
|
Allows users to register their locations and later to use that info to forward calls to registered contact. |
B2BUA
|
SIP server is like statefull + holds active calls state. (This is needed if call billing or full control of call is needed) |
presence
|
Provides user availabilty services, like if user is online,offline, ... . |
... |
there are some more, but not so important ones. |
Basic SIP commands:
INVITE - Initiates a session. This method includes information about the calling and
called users and the type of media that is to be exchanged.
ACK - Sent by the client who sends the INVITE. ACK is sent to confirm that the
session is established. Media can then be exchanged.
BYE - Terminates a session. This method can be sent by either user.
CANCEL - Terminates a pending request, such as an outstanding INVITE. After a session is established, a BYE method needs to be used to terminate the session.
OPTIONS - Queries the capabilities of the server or other devices. It can be used to check media capabilities before issuing an INVITE.
REGISTER - Used by a client to login and register its address with a SIP registrar server.
Ok, some ABC done,there are many documents on net, so not good idea to rewrite these there.
If want more advanced info then see:
RFC 3261 (defines SIPv2)
http://www.iptel.org/sip/intro
http://www.sipdev.org/wiki/index.php/A_newcomer's_guide_to_SIP
http://www.tech-invite.com/
and also google.com is always your friend.
SIP proxy demo overview.
This SIP proxy example just implements fully functional simple statefull proxy.
You can use hardware SIP phones or soft phones to play with this proxy.
This is advanced example, code is well commeneted, so beginners don't hate me beacuse no more blaaa text here. Just read rfc 3216, see info links i noted before, if you then look
code all more nicer then.
Some free available softphones in www:
http://www.nch.com.au
http://www.counterpath.net