element
Click on the red underlined text to get to the source
... IP addresses are permitted.
While the Via header field tells other elements where to send the
response, the Contact header field tells other elements ...
... elements where to send the
response, the Contact header field tells other elements where to send
future requests.
...
... protocol behavior is described as layers for the purpose of
presentation, allowing the description of functions common across
elements in a single section. It does not dictate an implementation
in any way. When we say that an element "contains" a layer ...
... elements in a single section. It does not dictate an implementation
in any way. When we say that an element "contains" a layer, we mean
it is compliant to the set of rules defined by that layer ...
... layer.
Not every element specified by the protocol contains every layer.
Furthermore, the elements ...
... element specified by the protocol contains every layer.
Furthermore, the elements specified by SIP are logical elements, not
...
... Furthermore, the elements specified by SIP are logical elements, not
physical ones. A physical realization ...
... physical ones. A physical realization can choose to act as different
logical elements, perhaps even on a transaction-by-transaction basis.
...
... sends requests and receives responses and how a server receives
requests and sends responses over the network. All SIP elements
contain a transport layer. The transport layer ...
... proxy core). Section 16 discusses the
proxy element, which facilitates routing of messages between user
agents.
...
... router.
Message: Data sent between SIP elements as part of the protocol.
SIP messages are either requests or responses.
...
... Record-Route, or it can be configured.
Server: A server is a network element that receives requests in
order to service them and sends back responses to those
...
... the end-of-line CRLF sequence. No linear whitespace (LWS) is allowed
in any of the elements.
Request-Line = Method ...
... control
characters and MUST NOT be enclosed in "<>".
SIP elements MAY support Request-URIs with schemes other than
"sip" and "sips", for example the "tel" URI scheme ...
... version
followed by a numeric Status-Code and its associated textual phrase,
with each element separated by a single SP character.
...
... header field, it contains a URI and optionally a display name. It is
used by SIP elements to determine which processing rules to apply to
a request (for example, automatic call rejection). As such, it is
...
... 2543(-> 3265prop | 3264prop | 3263prop | 3262prop | 3261prop).
The branch ID inserted by an element compliant with this
specification MUST always begin with the characters "z9hG4bK". These
7 characters are used as a magic cookie ...
... DNS procedures described in [4] as follows. If the
first element in the route set indicated a strict router (resulting
...
... UAC SHOULD follow the procedures defined in [4] for stateful
elements, trying each address until a server is contacted. Each try
constitutes a new transaction ...
... If contacting an address in the list results in a failure, as defined
in the next paragraph, the element moves to the next address in the
list, until the list is exhausted. If the list is exhausted, then
...
...
Assuming the UAS decides that it is the proper element to process the
request, it examines the Require header field, if present.
...
... proxy responds to a CANCEL, rather than simply forwarding
a response it would receive from a downstream element. For that
reason, CANCEL is referred to as a "hop-by-hop" request, since it is
...
... destination user is reachable. This discovery process is
frequently accomplished by SIP network elements such as proxy servers
and redirect servers ...
... the user, and then sending it there. To do this, SIP network
elements consult an abstract service known as a location service,
...
... UAs may send requests through a proxy server in order to reach a
registrar if the two are separate elements.
SIP ...
... request that contains a tag in the To field. The rules for computing
the dialog ID of a message depend on whether the SIP element is a UAC
or UAS ...
... supports stateless session processing in various elements, and
supports failover and recovery capabilities. Of course, a UAC MAY
...
... routing
decisions, modifying the request before forwarding it to the next
element. Responses will route through the same set of proxies
...
... Being a proxy is a logical role for a SIP element. When a request
arrives, an element that can play the role ...
... role for a SIP element. When a request
arrives, an element that can play the role of a proxy first decides
...
... proxy first decides
if it needs to respond to the request on its own. For instance, the
request may be malformed or the element may need credentials from the
client ...
... appropriate error code. When responding directly to a request, the
element is playing the role of a UAS and MUST behave as described in
...
... new request. When stateless, a proxy acts as a simple forwarding
element. It forwards each request downstream to a single element
...
... proxy acts as a simple forwarding
element. It forwards each request downstream to a single element
determined by making a targeting and routing decision based on the
...
...
For all new requests, including any with unknown methods, an element
intending to proxy the request MUST:
...
... Authorization
If any of these checks fail, the element MUST behave as a user agent
server (see Section 8.2) and respond with an error code.
...
... well-formed or not, SHOULD be
ignored and remain unchanged when the message is forwarded. For
instance, an element would not reject a request because of a
malformed Date header field. Likewise, a proxy ...
... define new methods and header fields at any time. An element MUST
NOT refuse to proxy a request because it contains a method ...
... The Max-Forwards header field (Section 20.22) is used to limit the
number of elements a SIP request can traverse.
...
... If the request contains a Max-Forwards header field with a field
value of zero (0), the element MUST NOT forward the request. If
the request was for OPTIONS, the element MAY act as the final
...
... value of zero (0), the element MUST NOT forward the request. If
the request was for OPTIONS, the element MAY act as the final
recipient and respond per Section 11. Otherwise, the element MUST
...
... the request was for OPTIONS, the element MAY act as the final
recipient and respond per Section 11. Otherwise, the element MUST
return a 483 (Too many hops) response.
...
... 4. Optional Loop Detection check
An element MAY check for forwarding loops before forwarding a
request. If the request contains a Via header field with a sent-
...
... by value that equals a value placed into previous requests by the
proxy, the request has been forwarded by this element before. The
request has either looped or is legitimately spiraling through the
element ...
... this element before. The
request has either looped or is legitimately spiraling through the
element. To determine if the request has looped, the element MAY
perform the branch parameter calculation described in Step 8 of
...
... request has either looped or is legitimately spiraling through the
element. To determine if the request has looped, the element MAY
perform the branch parameter calculation described in Step 8 of
Section 16.6 on this message and compare it to the parameter
...
... header field. If the parameters match, the
request has looped. If they differ, the request is spiraling, and
processing continues. If a loop is detected, the element MAY
return a 482 (Loop Detected) response.
...
... header field (Section
20.29) with one or more option-tags this element does not
understand, the element MUST return a 420 (Bad Extension)
...
... tags this element does not
understand, the element MUST return a 420 (Bad Extension)
response. The response MUST include an Unsupported (Section
20.40) header field ...
... Authorization check
If an element requires credentials before forwarding a request,
the request MUST be inspected as described in Section 22.3. That
...
... credentials before forwarding a request,
the request MUST be inspected as described in Section 22.3. That
section also defines what the element must do if the inspection
fails.
...
... this modified request.
This will only happen when the element sending the request to the
proxy (which may have been an endpoint ...
... rewrite on receive is necessary to enable backwards compatibility
with those elements. It also allows elements following this
specification to preserve the Request-URI ...
... backwards compatibility
with those elements. It also allows elements following this
specification to preserve the Request-URI through strict-routing ...
... domain of the Request-URI indicates a domain this element is
not responsible for, the Request-URI MUST be placed into the target
set ...
... Request-URI MUST be placed into the target
set as the only target, and the element MUST proceed to the task of
Request Forwarding (Section 16.6).
...
... If the target set for the request has not been predetermined as
described above, this implies that the element is responsible for the
domain in the Request-URI ...
... domain in the Request-URI, and the element MAY use whatever mechanism
it desires to determine where to send the request. Any of these
mechanisms can be modeled as accessing an abstract Location Service ...
...
Any information in or about the request or the current environment of
the element MAY be used in the construction of the target set. For
instance, different sets may be constructed depending on contents or
...
... request's arrival, the interface on which the request arrived,
failure of previous requests, or even the element's current level of
utilization.
...
... (such as in a private network) that the next downstream element
that will be in the path of subsequent requests supports that
transport ...
... The URI this proxy provides will be used by some other element
to make a routing decision. This proxy ...
... routing decision. This proxy, in general, has no way
of knowing the capabilities of that element, so it must
restrict itself to the mandatory elements of a SIP ...
... of knowing the capabilities of that element, so it must
restrict itself to the mandatory elements of a SIP
implementation: SIP ...
... URI placed in the Record-Route header field MUST resolve to
the element inserting it (or a suitable stand-in) when the
server location procedures of [4] are applied to it, so that
...
... server location procedures of [4] are applied to it, so that
subsequent requests reach the same SIP element. If the
Request-URI contains a SIPS URI ...
... Request-URI formats the message the
way a strict-routing element expects to receive it (with its
own URI in the Request-URI ...
... proxy has reformatted the
request to send to a strict-routing element as described in
step 6 above, the proxy MUST apply those procedures to the
...
... next address in that ordered set. If the ordered set is
exhausted, the request cannot be forwarded to this element in
the target set. The proxy ...
... proxy does not need to place anything in
the response context, but otherwise acts as if this element of
the target set returned a 408 (Request Timeout) final response.
...
... client transaction (Section 17.1.3) matching the response. If none
is found, the element MUST process the response (even if it is an
informational response) as a stateless proxy ...
... If no Via header field values remain in the response, the
response was meant for this element and MUST NOT be forwarded.
The remainder of the processing described in this section is
not performed on this message, the UAC ...
... transport
layer processing has already occurred).
This will happen, for instance, when the element generates
CANCEL requests as described in Section 10.
...
... Removing the contact before adding the response to the response
context prevents the next element upstream from retrying a
location this proxy ...
... issue non-100 provisional responses on its own. However, it
can branch the request to a UAS sharing the same element as the
proxy. This UAS ...
... 3-6xx responses are delivered hop-by-hop. When issuing a 3-6xx
response, the element is effectively acting as a UAS, issuing
its own response, usually based on the responses received from
...
... its own response, usually based on the responses received from
downstream elements. An element SHOULD preserve the To tag
...
... downstream elements. An element SHOULD preserve the To tag
when simply forwarding a 3-6xx response to a request that did
...
... next upstream and downstream elements. A proxy may choose to
use this mechanism for any reason. For instance, it is useful
...
... upstream (as opposed to
downstream) element that will be in the path of subsequent
requests supports that transport.
...
... header field value. If the server transaction is
no longer available to handle the transmission, the element
MUST forward the response statelessly by sending it to the
server transport ...
... transaction handling the request associated with this
CANCEL. If a matching response context is found, the element MUST
immediately return a 200 (OK) response to the CANCEL request. In
this case, the element ...
... element MUST
immediately return a 200 (OK) response to the CANCEL request. In
this case, the element is acting as a user agent server as defined in
Section 8.2. Furthermore, the element ...
... element is acting as a user agent server as defined in
Section 8.2. Furthermore, the element MUST generate CANCEL requests
for all pending client transactions ...
...
If a response context is not found, the element does not have any
knowledge of the request to apply the CANCEL to. It MUST statelessly
forward the CANCEL request (it may have statelessly forwarded the
...
... retransmission from the
original message). Furthermore, when handling a request statelessly,
an element MUST NOT generate its own 100 (Trying) or any other
provisional response.
...
...
If no strict-routing elements are encountered on the path of the
request, the Request-URI will always indicate the target ...
...
Since all the route set elements contain the lr parameter, U1
constructs the following BYE request:
...
... P4 is not responsible for the resource indicated in the Request-URI
so it will leave it alone. It notices that it is the element in the
first Route header field ...
... transactions are logical functions that are embedded in any number of
elements. Specifically, they exist within user agents and stateful
proxy servers ...
... client transaction is to receive a
request from the element in which the client is embedded (call this
element the "Transaction User ...
... request from the element in which the client is embedded (call this
element the "Transaction User" or TU; it can be a UA or a stateful
...
... between the client and server transactions. Elements MAY (though it
is NOT RECOMMENDED) use smaller values of T1 within closed, private
networks ...
... received over that connection. This duration SHOULD at least equal
the longest amount of time the element would need in order to bring a
transaction from instantiation to the terminated state ...
... T1 (see Section 17.1.1.1 for a
definition of T1). However, it could be larger in an element that
has a TU using a large value for timer C (bullet 11 of Section 16.6),
...
... 2543(-> 3265prop | 3264prop | 3263prop | 3262prop | 3261prop). It has arisen out of the need to handle larger messages,
which MUST use TCP, as discussed below. Thus, even if an element
never sends large messages, it may receive one and needs to be
able to handle them.
...
... ICMP Protocol Not Supported, or results in a TCP reset, the element
SHOULD retry the request, using UDP. This is only to provide
...
... message body, this is considered an error. If the message is a
response, it MUST be discarded. If the message is a request, the
element SHOULD generate a 400 (Bad Request) response. If the message
has no Content-Length header field ...
... method parameter.
The lr parameter, when present, indicates that the element
responsible for this resource implements the routing mechanisms
...
... routing mechanisms of RFC 2543(-> 3265prop | 3264prop | 3263prop | 3262prop | 3261prop)
and the rfc2543bis drafts up to bis-05. An element preparing
to send a request based on a URI not containing this parameter
...
... URI not containing this parameter
can assume the receiving element implements strict-routing and
reformat the message to preserve the information in the
...
...
Since the uri-parameter mechanism is extensible, SIP elements
MUST silently ignore any uri-parameters that they do not
...
... web page or business card. Entries marked "m" are mandatory, those
marked "o" are optional, and those marked "-" are not allowed.
Elements processing URIs SHOULD ignore any disallowed components if
they are present. The second column indicates the default value ...
... they are present. The second column indicates the default value of
an optional element if it is not present. "--" indicates that the
element is either not optional, or has no default value ...
... an optional element if it is not present. "--" indicates that the
element is either not optional, or has no default value.
...
... telephone-subscriber contains a number of
characters in various syntax elements that need to be escaped when
used in SIP URIs ...
... this protocol, the field is opaque. The structure of that value is
only useful to the SIP element responsible for the resource.
...
... header field is not applicable.
"Optional" means that an element MAY include the header field in a
request or response, and a UA ...
... This helps prevent disruptions that could result from the use of
this header field by untrusted elements.
Example:
...
... UA only render the information in the Call-Info
header field if it can verify the authenticity of the element that
originated the header field and trusts that element ...
... element that
originated the header field and trusts that element. This need not
be the peer UA; a proxy ...
... message-body sent to the recipient. The "media-type" element is
defined in [H3.7]. The Content-Type ...
...
This header field should be inserted by elements that can not
otherwise guarantee loop detection. For example, a B2BUA should
...
... refresh interval
supported for soft-state elements managed by that server. This
includes Contact header fields that are stored by a registrar. The
...
... The Organization header field conveys the name of the organization to
which the SIP element issuing the request or response belongs.
The field MAY be used by client software ...
... header field indicates that
it is optional. This allows interoperation with RFC 2543(-> 3265prop | 3264prop | 3263prop | 3262prop | 3261prop) elements,
which did not have to insert the branch parameter.
...
... UTF8-TRIM value.
Hexadecimal numeric characters are used in several protocol elements.
Some elements (authentication ...
... Hexadecimal numeric characters are used in several protocol elements.
Some elements (authentication) force hex alphas to be lower case.
...
...
When tokens are used or separators are used between elements,
whitespace is often allowed before or after these characters:
...
... its multi-faceted trust relationships, its expected usage between
elements with no trust at all, and its user-to-user operation make
...
...
Denial-of-service attacks focus on rendering a particular network
element unavailable, usually by directing an excessive amount of
network traffic ...
... host as the originator of the request and then send this
request to a large number of SIP network elements, thereby using
hapless SIP UAs ...
... mutual authentication with TLS, but no
provisions are set forth in this document for their use. All SIP
elements that support TLS MUST have a mechanism for validating
certificates ...
... certificates for web browsers).
All SIP elements that support TLS MUST also support the SIPS URI
scheme.
...
... proxy only passed up one challenge from
downstream elements in the event of multiple challenges. In this
RFC, proxies are supposed to collect all challenges and place them
...
... has been removed. It caused interoperability problems in elements
that were not time synchronized, a common occurrence. Relative
times are used instead.
...
... o The branch parameter of the Via header field value is now
mandatory for all elements to use. It now plays the role of a
unique transaction ...
... TLS. This scheme is
not backwards compatible with RFC 2543(-> 3265prop | 3264prop | 3263prop | 3262prop | 3261prop). Existing elements that
receive a request with a SIPS URI scheme in the Request-URI ...
... proxies. This requires somewhat special treatment.
Specifically, receipt of a 503 should trigger an attempt to
contact the next element in the result of a DNS SRV lookup. Also,
...
... occurs when a request forks at a proxy and later rejoins at an
element. Handling of merging is done only at a UA, and procedures
are defined for rejecting all but the first request.
...
