Skip to content
SIP Mastery

Part 2 · The SIP language / Module 03

SIP elements and addresses

Who is who in a SIP network — user agents, proxies, registrars, redirect servers, B2BUAs, and SBCs — what each one may change in a message, and how SIP names users and devices with URIs.

BasicNOC coreDEV coredraft

After this module, you can

  • Tell the UAC role from the UAS role, and explain why one device plays both.
  • Explain what a stateless, a stateful, and a dialog-stateful proxy remember, and what any proxy may change in a request.
  • Describe what a registrar, a location service, and a redirect server do.
  • Tell a B2BUA from a proxy in a trace, and explain why an SBC is a B2BUA.
  • Read every part of a sip:, sips:, or tel: URI.
  • Explain the difference between an AOR and a Contact address.

3.1 User agents: UAC and UAS

A user agentuser agent. An endpoint that sends and receives SIP, such as a phone, a softphone, or a gateway. is an endpoint: a desk phone, a softphone, a mobile app, or a gateway to the telephone network. It starts and ends calls, and it sends and receives the media.

SIP gives a user agent one of two roles, and the role belongs to one transaction — one request and its responses:

  • The UACUAC. The user agent role that sends a request. (user agent client) sends a request.
  • The UASUAS. The user agent role that receives a request and sends the responses. (user agent server) answers it.
RFC 3261 §6 · Definitions (User Agent Client)
“A user agent client is a logical entity that creates a new request, and then uses the client transaction state machinery to send it. The role of UAC lasts only for the duration of that transaction.”
Read the section ↗

So “UAC” does not mean “the caller”. In one call, Alice’s phone is the UAC for the INVITE. When Bob hangs up, Bob’s phone sends the BYE: now Bob’s phone is the UAC, and Alice’s phone is the UAS. Step through the call and watch the roles swap.

Call flow · roles

One call, two roles that swap

  • SIP
Alice192.0.2.10Bob203.0.113.2001INVITE02180 Ringing03200 OK04ACK05BYE06200 OK
01/06

Alice's phone sends a request. For this transaction, Alice's phone is the UAC.

All steps as text
  1. Alice → Bob: INVITE. Alice's phone sends a request. For this transaction, Alice's phone is the UAC.
  2. Bob → Alice: 180 Ringing. Bob's phone answers the request, so it is the UAS. Bob's phone rings.
  3. Bob → Alice: 200 OK. Bob answers. The UAS sends the final response for the INVITE transaction.
  4. Alice → Bob: ACK. Alice's phone confirms the 200 OK. The ACK goes straight to Bob's Contact address.
  5. Bob → Alice: BYE. Bob hangs up. Bob's phone sends a new request, so now it is the UAC.
  6. Alice → Bob: 200 OK. Alice's phone answers the BYE. For this transaction, Alice's phone is the UAS.

3.2 Proxies

A proxyproxy. An element that forwards requests and responses. It does not start or end calls. sits between user agents. It receives a request, decides where it goes next, and forwards it. It never starts or ends a call, and it never answers on behalf of the callee — except to reject a request or to ask for credentials.

RFC 3261 §6 · Definitions (Proxy Server)
“A proxy server primarily plays the role of routing, which means its job is to ensure that a request is sent to another entity "closer" to the targeted user.”
Read the section ↗

RFC 3261 §16.6 lists the steps a proxy follows for each request it forwards. The main ones:

  1. Copies the request.
  2. Replaces the Request-URI with the next target — for example, Bob’s AOR becomes the address of Bob’s phone.
  3. Decreases Max-Forwards by one.
  4. Adds Record-Route, if it wants to stay in the path of later requests (optional).
  5. Adds other header fields, if its policy wants (optional).
  6. Processes the Route headers.
  7. Chooses the next hop: address, port, and transport.
  8. Adds its own Via at the top.

Everything else stays as it is. In particular, a proxy must not touch the body:

RFC 3261 §16.6 · Request Forwarding
“The proxy MUST NOT reorder field values with a common field name (See Section 7.3.1). The proxy MUST NOT add to, modify, or remove the message body.”
Read the section ↗

Stateless, stateful, and dialog-stateful

Proxies differ in what they remember.

Kind Remembers So it can
stateless proxystateless proxy. A proxy that forgets each message as soon as it forwards it. It keeps no transaction state. Nothing. It forgets each message once it forwards it. Forward very fast. It cannot fork, retransmit, or try another target.
stateful proxystateful proxy. A proxy that keeps the state of each transaction until the transaction ends. It can fork and retransmit. (transaction-stateful) Each transaction, until the final response Send 100 Trying, retransmit over UDP, fork, and try the next target after a failure
dialog-stateful proxydialog-stateful proxy. A stateful proxy that also remembers each dialog until the call ends. (call-stateful) Each dialog, from INVITE to BYE Also count calls, write billing records, and limit calls per user
RFC 3261 §16.1 · Proxy Behavior, Overview
“A stateless proxy discards information about a message once the message has been forwarded. A stateful proxy remembers information (specifically, transaction state) about each incoming request and any requests it sends as a result of processing the incoming request.”
Read the section ↗

Compare the two. In both flows, Proxy B changes the Request-URI and adds a Via. Only the stateful proxy answers 100 Trying itself. In this example, it also adds Record-Route — so the ACK passes through it too.

Stateless

A stateless proxy forwards and forgets

  • SIP
Alice192.0.2.10Proxy BstatelessBob203.0.113.2001INVITE02INVITE03180 Ringing04180 Ringing
01/04

Alice's phone sends the INVITE to Proxy B. The Request-URI is Bob's AOR.

All steps as text
  1. Alice → Proxy B: INVITE. Alice's phone sends the INVITE to Proxy B. The Request-URI is Bob's AOR.
  2. Proxy B → Bob: INVITE. Proxy B replaces the Request-URI with Bob's Contact address. It adds its own Via and forgets the request.
  3. Bob → Proxy B: 180 Ringing. Bob's phone rings. It sends the response to the address in the top Via.
  4. Proxy B → Alice: 180 Ringing. Proxy B removes its own Via and forwards the response. The next Via tells it where.

A proxy that sends one request to several targets — forkingforking. A proxy sends one request to several Contact addresses, in parallel or one after another. — must keep state, because it must collect all the responses and choose the best one:

RFC 3261 §16.1 · Proxy Behavior, Overview
“Any request that is forwarded to more than one location MUST be handled statefully.”
Read the section ↗

3.3 Registrar, location service, and redirect server

How does Proxy B know where Bob’s phone is? Bob’s phone told it. When the phone starts, it sends a REGISTER request to the RegistrarRegistrar. The server that accepts REGISTER requests for a domain and stores the bindings in its location service. In most examples it serves atlanta.example; in Module 12, biloxi.example. of its domain.

RFC 3261 §6 · Definitions (Registrar)
“A registrar is a server that accepts REGISTER requests and places the information it receives in those requests into the location service for the domain it handles.”
Read the section ↗

The registrar stores a bindingbinding. One entry in the location service that maps an AOR to a Contact.: “requests for sip:bob@biloxi.example go to sip:bob@203.0.113.20:5060”. The database of bindings is the location servicelocation service. The database of bindings from AORs to Contact addresses.. Each binding expires, so the phone must register again before the time runs out. Module 12 covers registration in detail.

RFC 3261 §6 · Definitions (Location Service)
“It contains a list of bindings of address-of-record keys to zero or more contact addresses.”
Read the section ↗

A Redirect serverRedirect server. A UAS that answers a request with a 3xx response and a list of Contact addresses to try. also uses the location service, but it does not forward the request. It answers with a 3xx response that lists the Contact addresses, and the caller sends a new request itself.

RFC 3261 §6 · Definitions (Redirect Server)
“A redirect server is a user agent server that generates 3xx responses to requests it receives, directing the client to contact an alternate set of URIs.”
Read the section ↗

Call flow · redirect

A redirect server answers instead of forwarding

  • SIP
Alice192.0.2.10Redirect server203.0.113.30Bob203.0.113.2001INVITE02302 Moved Temporarily03ACK04INVITE (new target)05180 Ringing06200 OK07ACK
01/07

Alice's phone sends the INVITE for Bob's AOR to the server for biloxi.example.

All steps as text
  1. Alice → Redirect server: INVITE. Alice's phone sends the INVITE for Bob's AOR to the server for biloxi.example.
  2. Redirect server → Alice: 302 Moved Temporarily. The Redirect server finds Bob's Contact address. It sends the address back and does not forward the INVITE.
  3. Alice → Redirect server: ACK. Alice's phone confirms the 302 with ACK. The first transaction ends here.
  4. Alice → Bob: INVITE (new target). Alice's phone sends a new INVITE straight to the Contact address. The Redirect server is out of the path.
  5. Bob → Alice: 180 Ringing. Bob's phone rings.
  6. Bob → Alice: 200 OK. Bob answers.
  7. Alice → Bob: ACK. Alice's phone confirms the 200 OK. The call runs without the Redirect server.
Proxy Redirect server
Who sends the INVITE to Bob’s phone The proxy Alice’s phone, after the 3xx
In the path after the first request Yes, if it adds Record-Route No
Work for the server Every message of the transaction One response
INVITEs the caller sends One Two: one to the Redirect server, one to Bob’s phone
RFC 3261 §8.1.3.4 · Processing 3xx Responses
“Upon receipt of a redirection response (for example, a 301 response status code), clients SHOULD use the URI(s) in the Contact header field to formulate one or more new requests based on the redirected request.”
Read the section ↗

3.4 The B2BUA: two user agents back to back

A B2BUAB2BUA. An element that ends one call leg as a UAS and starts a new leg as a UAC. (back-to-back user agent) is not a proxy. It answers the incoming INVITE as a UAS, and then starts a new INVITE as a UAC. Between the two, its own logic decides what to copy: a PBX dial plan, a prepaid platform, a call recorder.

RFC 3261 §6 · Definitions (Back-to-Back User Agent)
“Unlike a proxy server, it maintains dialog state and must participate in all requests sent on the dialogs it has established.”
Read the section ↗

Compare a proxy and a B2BUA on the same call. Select F3 in each, and look at the changes since F1. The proxy changes four lines. The B2BUA changes almost everything: Call-ID, From tag, CSeq, Via, and Contact are new.

Proxy

A stateful proxy that stays in the path

  • SIP
Alice192.0.2.10Proxy BstatefulBob203.0.113.2001INVITE02100 Trying03INVITE04180 Ringing05180 Ringing06200 OK07200 OK08ACK09ACK
01/09

Alice's phone sends the INVITE to Proxy B. The Request-URI is Bob's AOR.

All steps as text
  1. Alice → Proxy B: INVITE. Alice's phone sends the INVITE to Proxy B. The Request-URI is Bob's AOR.
  2. Proxy B → Alice: 100 Trying. Proxy B answers 100 Trying at once. It now holds a transaction, so Alice's phone stops retransmitting.
  3. Proxy B → Bob: INVITE. Proxy B changes the Request-URI and adds a Via. It also adds Record-Route to stay in the path.
  4. Bob → Proxy B: 180 Ringing. Bob's phone rings. The response copies the Record-Route header from the request.
  5. Proxy B → Alice: 180 Ringing. Proxy B removes its own Via and forwards the response to Alice's phone.
  6. Bob → Proxy B: 200 OK. Bob answers. The 200 OK carries the SDP of Bob's phone.
  7. Proxy B → Alice: 200 OK. Proxy B forwards the 200 OK. It does not touch the SDP body.
  8. Alice → Proxy B: ACK. Alice's phone sends the ACK to Proxy B, because of the Record-Route. Module 10 explains the Route header.
  9. Proxy B → Bob: ACK. Proxy B removes its Route entry, adds a Via, and forwards the ACK to Bob's phone.

The result is two dialogs, one on each side. Alice’s phone and Bob’s phone never see each other’s Call-ID, tags, or Contact.

RFC 7092 §3.1.2 · Signaling-only B2BUA
“No SIP header field is guaranteed to be copied from the received request on the UAS side to the generated request on the UAC side.”
Read the section ↗

Kinds of B2BUA

RFC 7092 names the common kinds, from the most transparent to the least:

Kind Changes Example
Proxy-B2BUA Acts as a proxy, but can send its own BYE to end a dead call A proxy with a call-length limit
Signaling-only Any header, but not the SDP An application server
SDP-modifying Headers and the SDP, but stays out of the media path A PBX that removes codecs
Media relay Headers, SDP, and relays the RTP packets Most SBCs
Media aware Also reads or changes RTP headers, for example for SRTP An SRTP gateway
Media termination Also decodes the media itself A transcoder, a conference bridge, a voicemail server

3.5 The SBC: a B2BUA at the border

A SBCSBC. Session Border Controller. A B2BUA at the edge of a network that protects and normalises SIP. (Session Border Controller) is a B2BUA at the edge of a network: between an enterprise and its SIP trunk provider, or between two carriers. “SBC” is a product category, not a standard. RFC 5853 describes what SBCs do in practice:

  • Protect the network: access control, rate limits, and protection against floods of requests.
  • Hide the topology: no inner address leaves the network (topology hidingtopology hiding. An SBC removes or replaces the addresses of the inner network in each message it forwards.).
  • Fix what the endpoints cannot: NAT traversal (Module 20), and protocol repair between equipment that does not understand each other.
  • Control the media: relay the RTP, measure its quality, and sometimes transcode it.
RFC 5853 §2 · Background on SBCs
“SBCs often modify certain SIP headers and message bodies that proxies are not allowed to modify. Consequently, they are, by definition, B2BUAs (Back-to-Back User Agents).”
Read the section ↗

Watch an SBC forward Alice’s INVITE out of atlanta.example. In F3, select the changes since F1: the Vias and Record-Route of the inner network are gone, and the SDP points to the SBC.

Call flow · SBC

An SBC rewrites the INVITE at the network edge

  • SIP
Proxy A198.51.100.10SBC198.51.100.200Proxy B203.0.113.1001INVITE02100 Trying03INVITE (outer side)
01/03

Proxy A sends Alice's INVITE to the SBC at the edge of atlanta.example.

All steps as text
  1. Proxy A → SBC: INVITE. Proxy A sends Alice's INVITE to the SBC at the edge of atlanta.example.
  2. SBC → Proxy A: 100 Trying. The SBC answers as a UAS on the inner side.
  3. SBC → Proxy B: INVITE (outer side). The SBC sends a new INVITE on the outer side. No inner address remains, and the media now flows through the SBC.
RFC 7092 §4.3 · Session Border Controllers
“By default, most SBCs are either Media-relay or Media-aware B2BUAs and replace the Contact URI; remove the Via and Record-Route headers; modify Call-ID, To, From, and various other headers; and modify SDP.”
Read the section ↗

All the elements, side by side

Select an element to see the message it receives, the message it sends, and every line it changes. Select an arrow, or use the buttons, to switch between the two messages.

Element gallery

What each element may change in a message

  • SIP
  • +Adds
  • ~Changes
  • −Removes
Alice192.0.2.10Proxy BstatefulBob203.0.113.20F1 INVITEF3 INVITE

A proxy that keeps each transaction until it ends. It can send 100 Trying, retransmit, fork, and try the next target after a failure.

State
Each transaction. A dialog-stateful proxy also tracks each call until BYE.
Media path
No
Examples
Kamailio and OpenSIPS; the CSCFs of IMS (Module 27)

What it does

  • ~Request-URI: the new target
  • ~Max-Forwards: minus 1
  • +Its own Via at the top
  • +Record-Route, if it wants to stay in the path
  • +Its own 100 Trying

What it keeps

  • From, To, Call-ID, and CSeq
  • Contact
  • The body (SDP)

RFC 3261 §16.6 · Request Forwarding

“The proxy MUST NOT reorder field values with a common field name (See Section 7.3.1). The proxy MUST NOT add to, modify, or remove the message body.”

Read the section ↗
F3INVITEProxy B → Bob
4 changes
~INVITE sip:bob@203.0.113.20:5060 SIP/2.0
+Via: SIP/2.0/UDP 203.0.113.10:5060;branch=z9hG4bKpb721e
Via: SIP/2.0/UDP 192.0.2.10:5060;branch=z9hG4bK74bf9
~Max-Forwards: 69
+Record-Route: <sip:proxy.biloxi.example;lr>
From: Alice <sip:alice@atlanta.example>;tag=9fxced76sl
To: Bob <sip:bob@biloxi.example>
Call-ID: 3848276298220188511@192.0.2.10
CSeq: 1 INVITE
Contact: <sip:alice@192.0.2.10:5060>
Content-Type: application/sdp
Content-Length: 158
(empty line)
v=0
o=alice 2890844526 2890844526 IN IP4 192.0.2.10
s=-
c=IN IP4 192.0.2.10
t=0 0
m=audio 49170 RTP/AVP 0 8
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000

Point at a line, or select it, to see what it means.

Stateless proxy Stateful proxy Registrar Redirect server B2BUA SBC
Forwards requests Yes Yes No No Makes new ones Makes new ones
Changes Call-ID or tags No No — — Yes Yes
Changes the SDP No No — — Sometimes Usually
Keeps state None Transactions Bindings None Dialogs Dialogs and media
In the media path No No No No Sometimes Usually

3.6 SIP URIs

SIP names users, devices, and servers with a URIURI. A text address for a resource, such as sip:alice@atlanta.example or tel:+12025550123.. The general form of a SIP URISIP URI. A URI with the sip scheme. It names a user or a server, such as sip:alice@atlanta.example. is:

RFC 3261 §19.1.1 · SIP and SIPS URI Components
“Its general form, in the case of a SIP URI, is: sip:user:password@host:port;uri-parameters?headers”
Read the section ↗

Three schemes are common in SIP:

  • sip: — the normal scheme. Any transport.
  • sips: — a SIPS URISIPS URI. A URI with the sips scheme. It requires TLS on every hop up to the target domain.: the request must use TLS on every hop.
  • tel: — a tel URItel URI. A URI that holds a telephone number, such as tel:+12025550123.: a telephone number, with no host.

Type a URI, or pick an example. You can also paste a header value with a display namedisplay name. The optional human-readable name before a URI, such as "Alice" in Alice <sip:alice@atlanta.example>. and angle brackets, such as the value of a To header. Select a part to read about it.

URI dissector

What does each part of this URI do?

  • SIP
  • AaCase-sensitive
  • ⚠Problem

host

biloxi.example

A domain name. The sender asks DNS for the SIP servers of this domain (Module 11).

Compared case-insensitively: "ATLANTA.example" and "atlanta.example" are the same.

Role: Looks like an AOR: a user at a domain name, with no port. This is the address people call.

  • No port. The sender finds it with DNS (Module 11), or uses 5060.

  • tag is a header parameter: it sits outside the angle brackets, so it belongs to the To or From header, not to the URI.

Rules worth remembering

Angle brackets decide who owns a parameter. In <sip:bob@biloxi.example;transport=tcp>;tag=314159, transport is inside the brackets, so it belongs to the URI. tag is outside, so it belongs to the header. Module 4 shows what goes wrong without the brackets.

The user part is case-sensitive; the rest is not. sip:Alice@ATLANTA.example and sip:alice@atlanta.example are different URIs, because the user parts differ.

RFC 3261 §19.1.4 · URI Comparison
“Comparison of the userinfo of SIP and SIPS URIs is case-sensitive. This includes userinfo containing passwords or formatted as telephone-subscribers. Comparison of all other components of the URI is case-insensitive unless explicitly defined otherwise.”
Read the section ↗

sips: means TLS on every hop, not only on the first one:

RFC 3261 §26.2.2 · SIPS URI Scheme
“When used as the Request-URI of a request, the SIPS scheme signifies that each hop over which the request is forwarded, until the request reaches the SIP entity responsible for the domain portion of the Request-URI, must be secured with TLS;”
Read the section ↗

RFC 3261 allowed one exception for the last hop. RFC 5630 removed it:

RFC 5630 §4 · Overview of Operations
“This will ensure that TLS is used on all hops all the way up to the remote target.”
Read the section ↗

Phone numbers can appear in two ways: as a tel URI, or as the user part of a SIP URI with ;user=phone. A global number starts with + and the country code. A local number, such as an extension, needs a phone-context:

RFC 3966 §5.1.4 · Global Numbers
“Globally unique numbers are identified by the leading "+" character.”
Read the section ↗
RFC 3966 §5.1.5 · Local Numbers
“Local numbers MUST have a 'phone-context' parameter that identifies the scope of their validity.”
Read the section ↗

3.7 Address of Record and Contact

Every user has two kinds of SIP address:

  • The AORAOR. The public SIP address of a user, such as sip:alice@atlanta.example. (address of record) is the public address of the user, like an email address: sip:bob@biloxi.example. It appears on business cards, and in the To and From headers. It does not change when Bob moves.
  • A ContactContact. The address where a user agent can be reached directly at this time. address is where one device of the user can be reached now: sip:bob@203.0.113.20:5060. It contains an IP address or a host name, and often a port. It changes when the device moves, restarts, or gets a new address.
RFC 3261 §6 · Definitions (Address-of-Record)
“An address-of-record (AOR) is a SIP or SIPS URI that points to a domain with a location service that can map the URI to another URI where the user might be available.”
Read the section ↗

The registrar joins the two: each REGISTER adds a binding from the AOR to a Contact. One AOR can have several Contacts — a desk phone, a softphone, and a mobile app. Register and unregister Bob’s devices, and see where Proxy B sends Alice’s INVITE.

Location service

One AOR, several Contacts

  • SIP
  • Error
Bob's devices
INVITEsip:bob@biloxi.exampleINVITEINVITEAlice192.0.2.10Proxy Bbiloxi.exampleBobDesk phone203.0.113.20BobSoftphone203.0.113.21BobMobile appNot registered
Proxy B's location service
AOR sip:bob@biloxi.example
ContactExpires
sip:bob@203.0.113.20:50603600 s
sip:bob@203.0.113.21:50623600 s

What Proxy B sends

  • INVITE sip:bob@203.0.113.20:5060 SIP/2.0 to the desk phone
  • INVITE sip:bob@203.0.113.21:5062 SIP/2.0 to the softphone

2 bindings: Proxy B forks the INVITE. All 2 devices ring; the first to answer gets the call, and Proxy B cancels the others.

RFC 3261 §16.1 · Proxy Behavior, Overview

“Any request that is forwarded to more than one location MUST be handled statefully.”

Read the section ↗
RFC 3261 §10.1 · Registrations, Overview
“Thus, when a proxy for that domain receives a request whose Request-URI matches the address-of-record, the proxy will forward the request to the contact addresses registered to that address-of-record.”
Read the section ↗
AOR Contact
Example sip:bob@biloxi.example sip:bob@203.0.113.20:5060
Names A user One device of the user
Chosen by The service provider The device
Changes Rarely Whenever the device moves or restarts
Where you see it To and From headers; the Request-URI of a new request The Contact header; the Request-URI after the proxy, and of every request inside the dialog

Common mistakes

“Asterisk is a SIP proxy”

Asterisk, FreeSWITCH, and most PBXs are B2BUAs. They answer the call on one side and start a new call on the other. Expect a different Call-ID, new tags, and a new Contact on each side — and do not expect headers to pass through unchanged.

Remember: compare the Call-ID on both sides of the element. The same Call-ID with one more Via means a proxy. A new Call-ID means a B2BUA.

Confusing the AOR with the Contact

The AOR (sip:alice@atlanta.example) is the public address of a user. The Contact (sip:alice@192.0.2.10:5060) is the current address of one device. Storing a Contact as if it were the user’s address breaks as soon as the device moves. A call to an AOR with no registered Contacts usually fails with 480 Temporarily Unavailable.

Remember: people call AORs; proxies deliver to Contacts. The location service joins them.

“sips: only protects the first hop”

A sips: Request-URI requires TLS on every hop up to the target domain, and RFC 5630 extends this to the last hop. TLS on the first hop alone is just a TLS connection to the outbound proxy. The old ;transport=tls parameter is deprecated.

Remember: sips: = TLS all the way. transport=tls = do not use.

Expecting a proxy to fix the SDP

A proxy must not add to, change, or remove the message body. If a private address in the SDP must change, or a codec must go, a proxy cannot do it. That is the work of a B2BUA or an SBC.

Remember: a proxy routes. To change the session, you need an element that ends the session: a B2BUA.

Ignoring case in the user part

sip:Alice@atlanta.example and sip:alice@atlanta.example are different URIs. A phone that registers as Alice may not receive calls for alice — the call can fail with 404 Not Found, although “the user is registered”.

Remember: the user part is case-sensitive. Scheme, host, and parameter names are not.

Summary

  • A user agent is an endpoint. It is the UAC when it sends a request and the UAS when it answers. The role lasts for one transaction.
  • A proxy routes requests. It changes the Request-URI and Max-Forwards, adds a Via, and may add Record-Route — nothing else, and never the body. Stateless proxies remember nothing; stateful proxies remember transactions and can fork.
  • A registrar stores bindings from AORs to Contacts in the location service. A redirect server answers with 3xx and stays out of the path.
  • A B2BUA ends one call and starts another: new Call-ID, tags, CSeq, Via, and Contact. An SBC is a B2BUA at the network border; it usually hides the topology and relays the media.
  • A SIP URI has the form sip:user:password@host:port;parameters?headers. The user part is case-sensitive. sips: requires TLS on every hop. tel: holds a phone number.
  • The AOR names a user; a Contact names a device. One AOR can have several Contacts, and a proxy forks to all of them.