When we talk about SIP call flow there are two important things that need to be understood SIP messages and response code. SIP messages and responses are used for setup , in session changes, info and for tearing down a session. A response code is a response which is sent in response to a SIP message, and we can also get a SIP message in acknowledgement of response code.We will look into some quite frequent SIP messages in this post and response codes in the next post.
INVITE: Invite is very first message to set up a connection. It is also used to modify a session as re-invite (which we will discuss in later posts). User Agent sending an Invite is known as User Agent Client.
ACK: ACK is sent in response to a 200 OK message. ACK is used only with Invite or a Re-Invite message.
BYE: Bye is used to indicate a call termination or end of a session. The party who is ending the call will send the Bye message and other party will send 200 OK in response to a bye message.
Cancel: It is used to cancel a pending request. Bye is used when a session has been established, but cancel is used when a client is waiting for a 200 OK message and session has not been established yet. It is sent by a UAC to UAS informing it to stop processing the request.
Register: Register message is used by a UAC to register with the Registrar server. It is used to bind the URI of the SIP client to the SIP server. IP address of the client is stored in the location server.
Options: Options message is used to find out the media capabilities of the other user. In can be used with in a call session or without a call session. UAS sends its capabilities in a 200 OK message.
INFO: Info is used for midsession media capabilities i.e. sending the DTMF tones in a call in progress. Most IVR systems that need an input through keypad use Info to get the capabilities. In order to hide the information we need TLS for securing the signalling.
PRACK: Prack it is also known as provisional acknowledgement. It is a complex method which becomes hard to understand most of the times. It is used only in response to 1XX messages (will be discussed later in this post) except 100 Trying. It is used when an invite is sent without SDP and instead of ‘200 OK’ ‘183 Session in Progress’ contains SDP message. Prack is sent with SDP answer.
SUBSCRIBE: It is used to request a notification of an event. For an example an IM user sends a Request message to the server to watch the presence status of another user.
NOTIFY: It is sent to the client to notify about an event, for an example change in state of subscribed UA, or if a new message has been received from another user. When other user changes its IM status from Available to Busy server sends a Notify message to the subscribed user.
PUBLISH: Publish message is used by a client (presentity) to send it’s current status to the SIP server, which is used to notify the user (watcher) who is watching the status of other client.
MESSAGE: Message method is used to transfer the messages between the SIP clients. Messages are normally sent in plain text.
REFER: Refer message is used to transfer an existing session, inviting other parties to conference or refer external resources.
UPDATE: It is used by a client to update session information before final response to the initial Invite message. It can be sent by a called or the called party. It can be used to update parameters like codec etc.
SERVICE: The SERVICE method can carry a Simple Object Access Protocol (SOAP) message as it's payload. SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. SOAP defines a framework for encoding request and response messages in XML.
BENOTIFY: It is also know as best effort Notify and is used when a 200 OK response is not required for a Notify message. It helps to reduce SIP signalling traffic.
PS: If you like this post please like my Facebook page Cisco Voice Virtual Lab which will help you to know about my next post on Facebook.