# Exchanging SIP requests and responses

Dialogic implements SIP based on a client-server model. The client is a SIP application that communicates with the SIP server. The SIP server, nmssip, implements the SIP protocol stack, forming SIP messages as described in RFC 3261.

SIP automatically forms these messages when NaturalCallControl (NCC) functions are called. For voice over IP applications, the body of the SIP messages typically contains session description protocol (SDP) information describing the characteristics of the session.

## Requests

The following table describes some of the SIP messages implemented by SIP:

Request | Description
INVITE | Invitation to establish a session. Contains a unique call identifier, destination address, and client address.
ACK | Acknowledgment by the initiating client that a server response was received.
BYE | Termination of a specific session or an attempted session.
PRACK | Acknowledgment of a provisional response.
CANCEL | Cancellation of a previous client INVITE request.
REGISTER | Registration in the domain server database of a user's current location. Users are identified by a SIP URI, for example, sip:user@dialogic.com or sip:user@1.1.1.1.

## Responses

The response to a SIP request message is a SIP response. Response messages are numbered with codes grouped in ranges. The following table describes SIP responses:

Response code | Description
100 to 199 | Provisional. Information about the progress of a request.
200 to 299 | Success. A request successfully completed.
300 to 399 | Redirection. Retry the request at another location.
400 to 499 | Client error. Error in the client request.
500 to 599 | Server error. Error in the server response.
600 to 699 | Global failure. Do not retry the request.

## Establishing a session

The following illustration shows the sequence of requests and responses to establish a session:

## Terminating a session

The following illustration shows the sequence of requests and responses to terminate a session: