About the SIP Protocol

SIP is a simple network signalling protocol for creating and terminating sessions with one or more participant. The SIP protocol is designed to be independent of the underlying transport protocol, so SIP applications can run on Transport Control Protocol (TCP), User Datagram Protocol (UDP), or other lower-layer networking protocols.

Typically, the SIP protocol is used for internet telephony and multimedia distribution between two or more endpoints. For example, one person can initiate a telephone call to another person using SIP, or someone may create a conference call with many participants.

The SIP protocol was designed to be very simple, with a limited set of commands. It is also text-based, so humans can read the SIP messages passed between endpoints in a SIP session.

SIP Requests

The SIP protocol defines the following common request types:

Table 2-1 SIP Request Types

SIP Request Description

INVITE

Initiates a session between two participants.

ACK

The client acknowledges receiving the final message from an INVITE request.

BYE

Terminates a connection.

CANCEL

Cancels any pending actions, but does not terminate any accepted connections.

OPTIONS

Queries the server for a list of capabilities.

REGISTER

Registers the address in the To header with the server.

INFO

Sends a mid-session information that does not modify session state.

UPDATE

Modifies session state without changing the dialog state.

SUBSCRIBE

Subscribes to event notifications from a notifier.

NOTIFY

Notifies a subscriber of a new event.

REFER

As a recipient to issue a SIP call transfer request.

PRACK

A provisional acknowledgement.

PUBLISH

Publishes an event to the server.

MESSAGE

Simple instant message transport.

SIP requests are codes used to indicate the various stages in a connection between SIP-enabled entities.

SIP Responses

The SIP Protocol uses response codes similar to the HTTP protocol. Some of the common response codes are:

  • 100 (Trying)

  • 200 (OK)

  • 404 (Not found)

  • 500 (Server error)

  • 600 (Global failure)