📄 conformance.docs
字号:
/* -*- html -*- *//**@page sofia_sip_conformance SIP and SDP Protocol Features in Sofia-SIPThis document describes how Sofia-SIP stack supports specifications listedbelow.<table border=0><tr valign="top"><td><a href="#3261">RFC 3261</a> <br><a href="#2617">RFC 2617</a> <br><a href="#3262">RFC 3262</a> <br><a href="#3263">RFC 3263</a> <br><a href="#3265">RFC 3265</a> <br><a href="#2806">RFC 2806</a> <br><a href="#2976">RFC 2976</a> <br><a href="#3311">RFC 3311</a> <br><a href="#3313">RFC 3313</a> <br><a href="#3323">RFC 3323</a> <br><a href="#3326">RFC 3326</a> <br></td><td><a href="#3325">RFC 3325</a> <br><a href="#3327">RFC 3327</a> <br><a href="#3329">RFC 3329</a> <br><a href="#3361">RFC 3361</a> <br><a href="#3420">RFC 3420</a> <br><a href="#3428">RFC 3428</a> <br><a href="#3486">RFC 3486</a> <br><a href="#3515">RFC 3515</a> <br><a href="#3608">RFC 3608</a> <br><a href="#3680">RFC 3680</a> <br><a href="#3824">RFC 3824</a> <br></td><td><a href="#3840">RFC 3840</a> <br><a href="#3841">RFC 3841</a> <br><a href="#3842">RFC 3842</a> <br><a href="#3856">RFC 3856</a> <br><a href="#3857">RFC 3857</a> <br><a href="#3858">RFC 3858</a> <br><a href="#3891">RFC 3891</a> <br><a href="#3892">RFC 3892</a> <br><a href="#3903">RFC 3903</a> <br><a href="#4028">RFC 4028</a> <br><a href="#4566">RFC 4566</a> <br></td><td><a href="#2327">RFC 2327</a> <br><a href="#3264">RFC 3264</a> <br><a href="#3266">RFC 3266</a> <br><a href="#3312">RFC 3312</a> <br><a href="#3388">RFC 3388</a> <br><a href="#3407">RFC 3407</a> <br><a href="#3524">RFC 3524</a> <br><a href="#3556">RFC 3556</a> <br><a href="#3605">RFC 3605</a> <br><a href="#3890">RFC 3890</a> <br></td></tr></table><table border=1 cellpadding=4 cellspacing=0><tr> <th>Feature</th> <th>Supported</td> <th>Notes</td></tr><tr valign=top> <th align="left"> <a name="3261"></a> @RFC3261: Basic SIP Protocol </th> <td> The SIP registration and dialog level implementation enables the application to operate as a SIP UA, SIP proxy or a redirect server according to the @RFC3261. The @RFC3261 functionality is divided into five layers: -# <a href="sip/index.html">message syntax and encoding</a> -# <a href="tport/index.html">transport</a> -# <a href="nta/index.html">transaction</a> -# transaction user (UAS and UAC cores, proxy core) -# SIP elements: <a href="nua/index.html">user agent</a> client and server, proxies, registrars </td> <td> </td></tr><tr valign=top> <th align="left"> <a name="3261.19"></a> <a name="3261.20"></a> @RFC3261 Sections 19 and 20:<br> Syntax and encoding </td> <td> The supported @RFC3261 methods are: @b REGISTER, @b OPTIONS, @b INVITE, @b ACK, @b CANCEL, @b BYE, as well as methods <a href="#2976"><b>INFO</b></a>, <a href="#3262"><b>PRACK</b></a>, <a href="#3265"><b>SUBSCRIBE</b></a>, <a href="#3265"><b>NOTIFY</b></a>, <a href="#3311"><b>UPDATE</b></a>, <a href="#3428"><b>MESSAGE</b></a>, <a href="#3515"><b>REFER</b></a>, and <a href="#3903"><b>PUBLISH</b></a>. Sofia-SIP supports the following SIP headers as specified in @RFC3261 or its extensions (generating, parsing and syntax checking): @ref sip_accept "Accept", @ref sip_accept_encoding "Accept-Encoding", @ref sip_accept_language "Accept-Language", @ref sip_allow "Allow", @ref sip_authentication_info "Authentication-Info", @ref sip_authorization "Authorization", @ref sip_call_id "Call-ID" ("i"), @ref sip_call_info "Call-Info", @ref sip_contact "Contact" ("m"), @ref sip_content_disposition "Content-Disposition", @ref sip_content_encoding "Content-Encoding" ("e"), @ref sip_content_language "Content-Language", @ref sip_content_length "Content-Length" ("l"), @ref sip_content_type "Content-Type" ("c"), @ref sip_cseq "CSeq", @ref sip_date "Date", @ref sip_error_info "Error-Info", @ref sip_expires "Expires", @ref sip_from "From" ("f"), @ref sip_in_reply_to "In-Reply-To", @ref sip_max_forwards "Max-Forwards", @ref sip_min_expires "Min-Expires", @ref sip_mime_version "MIME-Version", @ref sip_organization "Organization", @ref sip_priority "Priority", @ref sip_proxy_authenticate "Proxy-Authenticate", @ref sip_proxy_authorization "Proxy-Authorization", @ref sip_proxy_require "Proxy-Require", @ref sip_record_route "Record-Route", @ref sip_require "Require", @ref sip_retry_after "Retry-After", @ref sip_route "Route", @ref sip_server "Server", @ref sip_subject "Subject" ("s"), @ref sip_supported "Supported" ("k"), @ref sip_timestamp "Timestamp", @ref sip_to "To" ("t"), @ref sip_unsupported "Unsupported", @ref sip_user_agent "User-Agent", @ref sip_via "Via" ("v"), @ref sip_warning "Warning", and @ref sip_www_authenticate "WWW-Authenticate". Unknown headers (extension headers) are supported and can be passed to/received from application as name-value pairs. It is possible to extend SIP parser in run-time with header-specific parsers. </td> <td> - Unsupported headers: Alert-Info, Reply-To - Automatic escaping of reserved characters has not been implemented. - Using NUL (zero byte) in doublequoted strings has not been implemented </td></tr><tr valign=top> <th align="left"> <a name="3261.18"></a> @RFC3261 Section 18:<br> UDP and TCP transports </th> <td> UDP and TCP on both IP4 and IP6 are supported. The UDP size limit of 1300 bytes is enforced by default. If limit is exceeded, TCP is tried instead. If TCP connection is refused, UDP is tried if message size is less than 64 kilobytes. Limit is adjustable via parameter NTATAG_UDP_MTU(). TCP connections are reused by client. However, server closes connections after idle time of 30 minutes (by default). The idle time limit is adjustable with TPTAG_IDLE() (given as argument to nta_agent_add_tport() or nta_agent_create()). Server tries to use same TCP connection to return response as the request was received. Only one SIP message is accepted per UDP message, as per @RFC3261. </td> <td> There is experimental support for SCTP, too. </td></tr><tr valign=top> <th align="left"> <a name="3261.17"></a> @RFC3261 Section 17:<br> Transactions </th> <td> Transaction state engines function as specified in @RFC3261 section 17. There is special handling of methods @b INVITE, @b ACK, and @b CANCEL. There are two modes for transaction state engines, User-Agent and Proxy modes. Default values for SIP timers are those specified by @RFC3261. The defaults for T1, T1x64, T2 and T4 can be changed via configuration tags defined in <nta_tag.h>. </td> <td> </td></tr><tr valign=top> <th align="left"> <a name="3261.26"></a> @RFC3261 Section 26:<br> Security </th> <td> TLS and SIPS URIs has been implemented. Currently, TLS does not require certificate from client nor it does check it if one is provided. </td> <td> Missing: - TLS certificate checking - S/MIME </td></tr><tr valign=top> <th align="left"> <a name="2617"></a> @RFC2617: HTTP Digest Authentication </th> <td> Sofia-SIP an authentication client and server modules implementing HTTP Digest authentication. HTTP Digest is a simple challenge-response authentication scheme defined in @RFC2617 based on the UA sending a checksum calculated over specific values in response to a challenge sent by the server (proxy or UA). Checksum calculation supports MD5 (@RFC1321). The algorithm for calculating MD5 digest hash can be MD5, MD5sess or be @RFC2069-compatible algorithm. The quality-of-protection (qop) parameters "auth", "auth-int" and none (missing) are supported. The "opaque" parameter is supported. The SIP authentication headers supported (generating, parsing and syntax checking) are: @ref sip_authorization "Authorization", @ref sip_authentication_info "Authentication-Info", @ref sip_proxy_authenticate "Proxy-Authenticate", @ref sip_proxy_authentication_info "Proxy-Authentication-Info", @ref sip_proxy_authorization "Proxy-Authorization", and @ref sip_www_authenticate "WWW-Authenticate". SIP interface to the modules is implemented as defined in @RFC3261 (sections 8.1.3.5, 22.2, 22.3, 22.4). An @RFC2617 header @ref sip_proxy_authentication_info "Proxy-Authentication-Info" is not listed in @RFC3261 but it is nevertheless supported by Sofia-SIP. </td> <td> Missing: - Using nextnonce - Mutual authentication </td></tr><tr valign=top> <th align="left"> <a name="3262"></a> @RFC3262: PRACK and 100rel </th> <td> PRACK method is supported within dialog as defined in RFC3262. Semantics of reliable provisional responses are supported: - including 100rel Required header in provisional responses if request had 100rel - generation of PRACK based on 100rel option tag in Require header of a provisional response, and - automatic re-transmission of provisional responses. The SIP headers supported (generating, parsing and syntax checking) are @ref sip_rseq "RSeq" and @ref sip_rack "RAck". </td> <td> </td></tr><tr valign=top> <th align="left"> <a name="3263"></a> @RFC3263: Locating SIP Servers </th> <td> Support for SIP server address resolution from SIP or SIPS URI using NAPTR, SRV, A or AAAA records in DNS as defined in @RFC3263. </td> <td> - Resolving any other types of URIs than SIP or SIPS URIs, e.g., IM: or PRES: URIs. </td></tr><tr valign=top> <th align="left"> <a name="3265"></a> @RFC3265: SIP Event Notifications </th> <td> SIP extensions for subscribing and processing asynchronous event notifications as defined in @RFC3265. Includes dialog level support for sending and refreshing SUBSCRIBE and receiving NOTIFY messages. The SIP headers explicitly supported (generating, parsing and syntax checking) are @ref sip_event "Event" ("o"), @ref sip_allow_events "Allow-Events", and @ref sip_subscription_state "Subscription-State" Note: currently there is no support for forked SUBSCRIBE requests. </td> <td> Application must take care of: - Subscribing, generating or processing specific event types and interpreting the content of event data is up to application </td></tr><tr valign=top> <th align="left"> <a name="2806"></a> @RFC2806: tel URI </th> <td> Sofia-SIP supports handling of any URI type. Sofia-SIP parses tel: URIs. </td> <td> Missing: - Resolving the tel: URIs </td></tr><tr valign=top> <th align="left"> <a name="2976"></a> @RFC2976: INFO </th> <td> INFO method is supported within a dialog natively. </td> <td> Not implemented: - Generating or processing contents of INFO requests </td></tr><tr valign=top> <th align="left"> <a name="3311"></a> @RFC3311: UPDATE </th> <td> UPDATE method as defined in RFC3311. UPDATE allows a client to update parameters of a session (such as the set of media streams and
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -