SIP (Session Initiation Protocol) is a protocol to setup multimedia sessions over the Internet.
The endpoint or devices are called user agents (UA). A user agent can be a client and initiate a request to a server (e.g. make calls), or can act as a server and receive requests (e.g. receive calls).
Those two roles are distinguished in descriptions of call scenarios. The initiating UA is therefore called UAC (client) and the receiving UA is called UAS (server).
Interestingly, there is no server or any kind of central management function needed to make a simple SIP to SIP call. If there are two SIP devices connect over IP (having public IP addresses or are on the same LAN), using the IP address for "dialing" is in most cases enough to make a simple call.
UAC->UAS is the simplest call case.
In practice there are some limitations and inconveniences, so that this setup is not used.
Problems we need to solve:
- Getting over NAT in private LANs connected to the internet (standard DSL configuration)
- Reaching a peer without having to know the IP address
- Call handling in case of unavailability of the UA
- Transcoding in case both peers do not have a common codec
- Supplementary services
- Interworking with non-SIP devices