RFC 3261:SIP: Session Initiation Protocol
RFC-Ref

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 ...
... cancelled (Section 9). The SIP elements, that is, user agent clients and servers, stateless ...
... proxy core). Section 16 discusses the proxy element, which facilitates routing of messages between user agents. ...


... Client: A client is any network element that sends SIP requests and receives SIP ...
... 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 ...
... network type, address type, and address elements in the origin field. ...


... 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 ...
... 2806(-> 3966prop) [9]. SIP elements MAY translate non-SIP URIs using any ...
... 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 ...


... SIP proxies are elements that route SIP requests to user agent servers ...
... 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 ...
... client before acting as a proxy. The element MAY respond with any appropriate error code ...
... 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: ...
... Before an element can proxy a request, it MUST verify the message's validity ...
... 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 ...
... 20.40) header field listing those option-tags the element did not understand. ...
... 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 through strict-routing elements. "Popping" the first Route header field ...
... 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. ...
... When a response is received by an element, it first tries to locate a client transaction ...
... 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 ...
... While it makes no difference to the upstream elements if the proxy replaced the To tag ...
... 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: ...
... domain.com;lr> As any other element (including proxies) would do, it resolves the URI ...
... 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), ...
... for example. All SIP elements MUST implement UDP and TCP. SIP elements ...
... SIP elements MUST implement UDP and TCP. SIP elements MAY implement other protocols. ...
... 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. ...
... MTU. If an element sends a request over TCP because of these message size ...
... 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. ...
... are not. To mitigate this problem, elements constructing telephone-subscriber ...


... 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. ...



Google
Web
RFC-Ref