...
SIP Description/Call Flow
SIP, session initiation protocol, is the protocol used to facilitate the transfer of Non-Audio VoIP call data. It is used to initiate and maintain a call from start to end.
Common SIP Methods:
ACK - Used as an acknowledgement of receipt and/or acceptance of a SIP message
BYE - Used to end a session in progress (i.e. after a 200 OK)
CANCEL - Used to cancel a session before it begins (i.e. before a 200 OK)
INVITE - Used to initiate a new session
RE-INVITE - This is a second invite sent with the same Call-ID. This is done to change aspects of the dialog.
Uncommon SIP Methods:
OPTIONS - Used to ask a SIP server what methods are supported
MESSAGE - Single message transmission used in instant messaging (RFC3428)
UPDATE - Essentially like a re-invite, but it can be sent at any time during the dialog (i.e. both before and after the 200 OK or any other non-provisional response code)
Typical Call Flow (Successful, no Re-invite)
I - Initiator
R - Recipient
I --------
...
INVITE-------
...
> R
...
I <------
...
100 Trying------
...
R
...
I <---
...
180/183 Ringing-----
...
R
I <-------
...
200 OK --------
...
R
...
I -----------
...
ACK--------
...
> R
...
I -----------
...
BYE--------
...
> R (Direction Interchangeable)
...
I <--------
...
200 OK---------
...
R (Direction is opposite the path of the BYE)
...
Notes
-A dialog may have a 180 Ringing, which is a standard ringing response; a 183 ringing, which is typically early media (i.e. ringing in the actual RTP stream or in some cases, an IVR or operator message); or go directly to a 200 OK, which is typically in cases of IVRs.
-The BYE message is initiated by the end that hangs up the call first. If this is done before a 200 OK is sent, this will be a CANCEL instead of a BYE message.
-Error and Redirect Responses (3xx, 4xx, 5xx, 6xx) will typically come before the 180/183 ringing portion of a call.
-Re-invites can be initiated by either side at any time between the initial 200 OK and the BYE closing the dialog.
-Dialogs with re-invites that are rejected will continue until one of the 2 sides end the call. A error code (4xx, 5xx, 6xx level responses) should not end the session outright.
...