What is SIP?
SIP stands for Session Initiation Protocol. It is defined by RFC3261 and provides a method for registering with VoIP service (or 'Dial-tone') providers and initiating/receiving VoIP calls.
Once a 'call' is created, the audio (and optionally video) is sent directly between caller and callee, although it is possible to use SIP proxies - where the call is routed through the proxy.
The audio/video is encoded/compressed using a codec. Different codecs are available within Ekiga, and each provides a compromise between audio quality and bandwidth required.
A SIP number normally looks like an email address, for example, firstname.lastname@example.org. The part before the '@' represents the user, and the part after represents the service provider.
The user part may be either numeric or alphanumeric, depending on the provider. For example, Ekiga.net uses alphanumeric usernames, but each has a numerical alias to enable dialing from a standard telephone key pad.
To dial a number on an application (such as Ekiga), just enter the SIP number.
With a telephone keypad it is not possible to enter alphanumerical characters, so it is not possible to enter the provider portion. To make calls to other providers, the user can use a Peering prefix.
Another problem is that unlike a normal telephone, the full 'user' part of the number must be entered before the call is placed and the number can be any number of digits. In this case, the '#' can be used to indicate that the number is complete. Another solution is to set up a dialplan (which interprets numbers as they are typed).
In order to differentiate a SIP number from an email address, the 'sip:' URI should be used, for example sip:email@example.com.
How contact presence (online, offline) works in SIP
The ekiga.net SIP proxy (kamailio) has a table with SIP addresses, their state, and the users who are subscribed to an address.
If the user eugen for example wants to know the user yannick's state, then:
- eugen's Ekiga client sends to ekiga.net a SUBSCRIBE sip:firstname.lastname@example.org
- ekiga.net adds eugen as subscriber for yannick
- ekiga.net sends a NOTIFY to eugen's Ekiga client containing yannick's current state
- each time yannick changes state (or when he registers), his Ekiga client sends to ekiga.net a PUBLISH sip:email@example.com with his new state
- upon reception, kamailio sends to eugen's Ekiga client (and to all of yannick's subscribers) a NOTIFY with the yannick's updated state
- PUBLISH and SUBSCRIBE (as well as REGISTER) are subject to an expiry period. This is why, even if yannick's Ekiga client does not change state for 500 seconds, it will still send a PUBLISH sip:firstname.lastname@example.org to ekiga.net
- if after 10 - 15 minutes ekiga.net does not receive any PUBLISH sip:email@example.com from yannick's Ekiga client, then it marks yannick as offline in its table, and sends to eugen's Ekiga client (and to all of yannick's subscribers) a NOTIFY with yannick's offline message. The same applies for SUBSCRIBE
You are talking about SIP and H.323. I do not know what the difference is - which one should I choose?
SIP and H.323 are two different protocols used in voice over IP (VoIP i.e. audio communication over the internet). If you want to call Windows Messenger users, use SIP. If you want to call Netmeeting users, use H.323. If you do not know what protocol to use, use SIP. The URL prefix determines what protocol will be used, e.g. sip: or h323: (or callto:).
How can I get a SIP address?
A SIP address is a way to be reachable and to reach people. You can compare it to an email address. You can sign up for a free account on http://ekiga.net. This will give you a unique SIP address that you can give to your friends so that they can contact you. An example of a SIP address is sip:firstname.lastname@example.org.