There are two basic components within SIP: the SIP user agent and the SIP network server. The user agent is the end system component for the call and the SIP server is the network device that handles the signalling associated with multiple calls.
The user agent itself has a client element, the User Agent Client (UAC) and a server element, the User Agent Server (UAS). The client element initiates the calls and the server element answers the calls. This allows peer-to-peer calls to be made using a client-server protocol.
SIP user agents can be lightweight clients suitable for embedding in end-user devices such as mobile handsets or PDAs. Alternatively, they can be desktop applications that bind with other software applications such as contact managers.
The main function of the SIP servers is to provide name resolution and user location, since the caller is unlikely to know the IP address or host name of the called party, and to pass on messages to other servers using next hop routing protocols.
SIP servers can operate in two different modes: stateful and stateless. The difference between these modes is that a server in a stateful mode remembers the incoming requests it receives, along with the responses it sends back and the outgoing requests it sends on. A server acting in a stateless mode forgets all information once it has sent a request. These stateless servers are likely to be the backbone of the SIP infrastructure while stateful-mode servers are likely to be the local devices close to the user agents, controlling domains of users. Other functions fulfilled by the SIP servers are re-direct and forking.
A re-direct server receives requests but, rather than passing these onto the next server, it sends a response to the caller indicating the address for the called user. Forking is the ability to split or “fork†an incoming call so that several locations can ring at once. The first location to answer takes the call.