🎯 SIP Responses: Talking Back

In the previous round, we explored SIP Requests — the moves you make to start, manage, and end a SIP session. But what happens when your move lands?

That’s where SIP Responses come in. Every request gets an answer. Some are good, some bad, and some …


This content originally appeared on DEV Community and was authored by SIP GAMES

In the previous round, we explored SIP Requests — the moves you make to start, manage, and end a SIP session. But what happens when your move lands?

That’s where SIP Responses come in. Every request gets an answer. Some are good, some bad, and some just say, "Hold up, we’re thinking about it."

This post will cover:

  • Categories of SIP responses (1xx → 6xx).
  • How to interpret them.
  • Examples for quick understanding.
  • A handy response code reference table.
  • How unique identifiers (tags, Call-ID) tie requests and responses together.
  • How SIP timers behave with responses.

đź§© SIP Response Categories

SIP responses follow a status code system (like HTTP, but SIP-flavored).

🔹 1xx: Provisional Responses

  • These don’t finish the transaction. They’re progress updates.
  • Examples:
    • 100 Trying → “Got your request, working on it.”
    • 180 Ringing → “User is being alerted.”
    • 183 Session Progress → “Here’s early media info.”

🔹 2xx: Success Responses

  • Everything went fine.
  • Examples:
    • 200 OK → The Swiss Army knife of SIP. Success for INVITE, BYE, REGISTER, etc.
    • With INVITE, it establishes the dialog (when To-tag is set).

🔹 3xx: Redirection Responses

  • The called party isn’t here, but they suggest where to go.
  • Examples:
    • 302 Moved Temporarily → “Try this other address.”

🔹 4xx: Client Error Responses

  • Something’s wrong with the request. Caller must fix it.
  • Examples:
    • 400 Bad Request → Syntax or formatting error.
    • 401 Unauthorized → Challenge for authentication (with WWW-Authenticate).
    • 404 Not Found → User not registered / unknown.
    • 415 Unsupported Media Type → Codec/SDP mismatch.

🔹 5xx: Server Error Responses

  • The server understood the request but failed to process it.
  • Examples:
    • 500 Server Internal Error → General failure.
    • 503 Service Unavailable → Overloaded or temporarily down.

🔹 6xx: Global Failure Responses

  • Final “no” that applies everywhere.
  • Examples:
    • 603 Decline → Callee doesn’t want to talk.
    • 606 Not Acceptable → Callee’s capabilities don’t match caller’s request.

📊 SIP Response Code Reference Table

Here’s a quick reference for the most common responses:

Code Category Meaning
100 Provisional Trying
180 Provisional Ringing
183 Provisional Session Progress (early media)
200 Success OK
202 Success Accepted (rare in INVITE, more in SUB)
302 Redirection Moved Temporarily
400 Client Error Bad Request
401 Client Error Unauthorized
403 Client Error Forbidden
404 Client Error Not Found
415 Client Error Unsupported Media Type
480 Client Error Temporarily Unavailable
486 Client Error Busy Here
500 Server Error Internal Server Error
503 Server Error Service Unavailable
603 Global Failure Decline
606 Global Failure Not Acceptable

🏷️ How IDs Tie It Together

Remember from our last post:

  • Call-ID: Shared across all requests and responses in a dialog.
  • From-tag: Caller’s unique dialog identifier.
  • To-tag: Set by callee in the first final response (like 200 OK to INVITE).
  • Via branch parameter: Identifies the specific transaction so responses can find their way back.

Example:

INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.10;branch=z9hG4bK123
From: Alice sip:alice@example.com
;tag=111
To: Bob sip:bob@example.com

Call-ID: 1234567890@example.com

CSeq: 1 INVITE
...

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.0.2.10;branch=z9hG4bK123
From: Alice sip:alice@example.com
;tag=111
To: Bob sip:bob@example.com
;tag=222
Call-ID: 1234567890@example.com

CSeq: 1 INVITE

  • The branch matches the INVITE transaction.
  • The To-tag creates the dialog.
  • Call-ID stays constant for all dialog messages.

📞 Example Call Flow with Responses

Here’s a simple ASCII call flow showing requests + responses:

Alice                           Bob
| INVITE ---------------------> |
| <---------- 100 Trying -------|
| <---------- 180 Ringing ------|
| <---------- 200 OK -----------|
| ACK ------------------------->|
|========= Media (RTP) =========|
| BYE ------------------------->|
| <---------- 200 OK -----------|
  • 100 Trying → Provisional, no retransmission of INVITE needed.
  • 180 Ringing → Alerts Alice, doesn’t complete transaction.
  • 200 OK → Final response, completes the INVITE transaction.
  • ACK → Separate request confirming the dialog setup.

⏱️ SIP Timers and Responses

SIP uses timers to ensure requests don’t get lost forever. Some key ones:

  • Timer A → INVITE retransmission interval (UDP). Stops when 100 Trying is received.
  • Timer B → INVITE transaction timeout (default 32s). If no final response (2xx–6xx), transaction fails.
  • Timer D → Wait time after sending final response to INVITE (to absorb stray retransmissions).
  • Timer F → Non-INVITE transaction timeout.
  • Timer K → Wait time before cleaning up after final response in non-INVITE.

How responses affect them:

  • 100 Trying: Stops retransmission (Timer A).
  • 200 OK: Ends INVITE transaction → Caller must send ACK.
  • 4xx/5xx/6xx: Also final, but may trigger re-INVITE or fallback by application.

🔎 Quick-Reference: Timers vs Responses

Timer Triggered / Stopped By Notes
Timer A Stopped by 100 Trying INVITE retransmission timer (UDP)
Timer B Stopped by final resp INVITE timeout (32s if no reply)
Timer D After sending final resp Keeps transaction state to absorb stray retransmits (INVITE server)
Timer F Stopped by final resp Non-INVITE timeout (client side)
Timer K After final resp (non-INVITE) Waits before cleanup

📞 Example: Timers in Action (ASCII Flow)

Caller (UAC)                      Callee (UAS)

INVITE ---------------------------> (Start Timer A, B)

[ Timer A running: Retransmit INVITE if no response ]
[ Timer B running: Fail after 32s if no final response ]
        <----------------------- 100 Trying
         (Stops Timer A)

        <----------------------- 180 Ringing
         (Timer B still running)

        <----------------------- 200 OK
         (Stops Timer B)

👉 In this flow:

  • Timer A makes sure the INVITE doesn’t vanish (stopped by 100 Trying).
  • Timer B guarantees the call won’t hang forever if the other side stays silent.
  • The 200 OK stops Timer B and the transaction is finalized with the ACK.

This ties responses directly to timers, helping you debug retransmissions, timeouts, or why a SIP phone “gives up” after a while.

⚡ Quick Recap

  • SIP Responses = feedback for SIP Requests.
  • Categories: 1xx progress, 2xx success, 3xx redirect, 4xx client error, 5xx server error, 6xx global failure.
  • IDs (Call-ID, tags, branch) bind everything together.
  • Timers ensure SIP doesn’t wait forever.

⏭️ Next Round: SIP in Action with Scenarios

Up next, we’ll dive into real-world call scenarios with SIP Requests + Responses, and build toward understanding all the different SIP methods in actual use.

🕹 Follow @sip_games to survive the signaling jungle.


This content originally appeared on DEV Community and was authored by SIP GAMES


Print Share Comment Cite Upload Translate Updates
APA

SIP GAMES | Sciencx (2025-08-20T14:08:35+00:00) 🎯 SIP Responses: Talking Back. Retrieved from https://www.scien.cx/2025/08/20/%f0%9f%8e%af-sip-responses-talking-back/

MLA
" » 🎯 SIP Responses: Talking Back." SIP GAMES | Sciencx - Wednesday August 20, 2025, https://www.scien.cx/2025/08/20/%f0%9f%8e%af-sip-responses-talking-back/
HARVARD
SIP GAMES | Sciencx Wednesday August 20, 2025 » 🎯 SIP Responses: Talking Back., viewed ,<https://www.scien.cx/2025/08/20/%f0%9f%8e%af-sip-responses-talking-back/>
VANCOUVER
SIP GAMES | Sciencx - » 🎯 SIP Responses: Talking Back. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/08/20/%f0%9f%8e%af-sip-responses-talking-back/
CHICAGO
" » 🎯 SIP Responses: Talking Back." SIP GAMES | Sciencx - Accessed . https://www.scien.cx/2025/08/20/%f0%9f%8e%af-sip-responses-talking-back/
IEEE
" » 🎯 SIP Responses: Talking Back." SIP GAMES | Sciencx [Online]. Available: https://www.scien.cx/2025/08/20/%f0%9f%8e%af-sip-responses-talking-back/. [Accessed: ]
rf:citation
» 🎯 SIP Responses: Talking Back | SIP GAMES | Sciencx | https://www.scien.cx/2025/08/20/%f0%9f%8e%af-sip-responses-talking-back/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.