RFC-Ref is not longer maintained; use RFC browser at: http://zvon.org/comp/r/ref-RFC.html
RFC 3261:SIP: Session Initiation Protocol
RFC-Ref

SIP: Session Initiation Protocol


1. Introduction
2. Overview of SIP Functionality
3. Terminology
4. Overview of Operation
5. Structure of the Protocol
6. Definitions
7. SIP Messages
7.1. Requests
7.2. Responses
7.3. Header Fields
7.3.1. Header Field Format
7.3.2. Header Field Classification
7.3.3. Compact Form
7.4. Bodies
7.4.1. Message Body Type
7.4.2. Message Body Length
7.5. Framing SIP Messages
8. General User Agent Behavior
8.1. UAC Behavior
8.1.1. Generating the Request
8.1.1.1. Request-URI
8.1.1.2. To
8.1.1.3. From
8.1.1.4. Call-ID
8.1.1.5. CSeq
8.1.1.6. Max-Forwards
8.1.1.7. Via
8.1.1.8. Contact
8.1.1.9. Supported and Require
8.1.1.10. Additional Message Components
8.1.2. Sending the Request
8.1.3. Processing Responses
8.1.3.1. Transaction Layer Errors
8.1.3.2. Unrecognized Responses
8.1.3.3. Vias
8.1.3.4. Processing 3xx Responses
8.1.3.5. Processing 4xx Responses
8.2. UAS Behavior
8.2.1. Method Inspection
8.2.2. Header Inspection
8.2.2.1. To and Request-URI
8.2.2.2. Merged Requests
8.2.2.3. Require
8.2.3. Content Processing
8.2.4. Applying Extensions
8.2.5. Processing the Request
8.2.6. Generating the Response
8.2.6.1. Sending a Provisional Response
8.2.6.2. Headers and Tags
8.2.7. Stateless UAS Behavior
8.3. Redirect Servers
9. Canceling a Request
9.1. Client Behavior
9.2. Server Behavior
10. Registrations
10.1. Overview
10.2. Constructing the REGISTER Request
10.2.1. Adding Bindings
10.2.1.1. Setting the Expiration Interval of Contact Addresses
10.2.1.2. Preferences among Contact Addresses
10.2.2. Removing Bindings
10.2.3. Fetching Bindings
10.2.4. Refreshing Bindings
10.2.5. Setting the Internal Clock
10.2.6. Discovering a Registrar
10.2.7. Transmitting a Request
10.2.8. Error Responses
10.3. Processing REGISTER Requests
11. Querying for Capabilities
11.1. Construction of OPTIONS Request
11.2. Processing of OPTIONS Request
12. Dialogs
12.1. Creation of a Dialog
12.1.1. UAS behavior
12.1.2. UAC Behavior
12.2. Requests within a Dialog
12.2.1. UAC Behavior
12.2.1.1. Generating the Request
12.2.1.2. Processing the Responses
12.2.2. UAS Behavior
12.3. Termination of a Dialog
13. Initiating a Session
13.1. Overview
13.2. UAC Processing
13.2.1. Creating the Initial INVITE
13.2.2. Processing INVITE Responses
13.2.2.1. xx Responses
13.2.2.2. xx Responses
13.2.2.3. xx, 5xx and 6xx Responses
13.2.2.4. xx Responses
13.3. UAS Processing
13.3.1. Processing of the INVITE
13.3.1.1. Progress
13.3.1.2. The INVITE is Redirected
13.3.1.3. The INVITE is Rejected
13.3.1.4. The INVITE is Accepted
14. Modifying an Existing Session
14.1. UAC Behavior
14.2. UAS Behavior
15. Terminating a Session
15.1. Terminating a Session with a BYE Request
15.1.1. UAC Behavior
15.1.2. UAS Behavior
16. Proxy Behavior
16.1. Overview
16.2. Stateful Proxy
16.3. Request Validation
16.4. Route Information Preprocessing
16.5. Determining Request Targets
16.6. Request Forwarding
16.7. Response Processing
16.8. Processing Timer C
16.9. Handling Transport Errors
16.10. CANCEL Processing
16.11. Stateless Proxy
16.12. Summary of Proxy Route Processing
16.12.1. Examples
16.12.1.1. Basic SIP Trapezoid
16.12.1.2. Traversing a Strict-Routing Proxy
16.12.1.3. Rewriting Record-Route Header Field Values
17. Transactions
17.1. Client Transaction
17.1.1. INVITE Client Transaction
17.1.1.1. Overview of INVITE Transaction
17.1.1.2. Formal Description
17.1.1.3. Construction of the ACK Request
17.1.2. Non-INVITE Client Transaction
17.1.2.1. Overview of the non-INVITE Transaction
17.1.2.2. Formal Description
17.1.3. Matching Responses to Client Transactions
17.1.4. Handling Transport Errors
17.2. Server Transaction
17.2.1. INVITE Server Transaction
17.2.2. Non-INVITE Server Transaction
17.2.3. Matching Requests to Server Transactions
17.2.4. Handling Transport Errors
18. Transport
18.1. Clients
18.1.1. Sending Requests
18.1.2. Receiving Responses
18.2. Servers
18.2.1. Receiving Requests
18.2.2. Sending Responses
18.3. Framing
18.4. Error Handling
19. Common Message Components
19.1. SIP and SIPS Uniform Resource Indicators
19.1.1. SIP and SIPS URI Components
19.1.2. Character Escaping Requirements
19.1.3. Example SIP and SIPS URIs
19.1.4. URI Comparison
19.1.5. Forming Requests from a URI
19.1.6. Relating SIP URIs and tel URLs
19.2. Option Tags
19.3. Tags
20. Header Fields
20.1. Accept
20.2. Accept-Encoding
20.3. Accept-Language
20.4. Alert-Info
20.5. Allow
20.6. Authentication-Info
20.7. Authorization
20.8. Call-ID
20.9. Call-Info
20.10. Contact
20.11. Content-Disposition
20.12. Content-Encoding
20.13. Content-Language
20.14. Content-Length
20.15. Content-Type
20.16. CSeq
20.17. Date
20.18. Error-Info
20.19. Expires
20.20. From
20.21. In-Reply-To
20.22. Max-Forwards
20.23. Min-Expires
20.24. MIME-Version
20.25. Organization
20.26. Priority
20.27. Proxy-Authenticate
20.28. Proxy-Authorization
20.29. Proxy-Require
20.30. Record-Route
20.31. Reply-To
20.32. Require
20.33. Retry-After
20.34. Route
20.35. Server
20.36. Subject
20.37. Supported
20.38. Timestamp
20.39. To
20.40. Unsupported
20.41. User-Agent
20.42. Via
20.43. Warning
20.44. WWW-Authenticate
21. Response Codes
21.1. Provisional 1xx
21.1.1. 100 Trying
21.1.2. 180 Ringing
21.1.3. 181 Call Is Being Forwarded
21.1.4. 182 Queued
21.1.5. 183 Session Progress
21.2. Successful 2xx
21.2.1. 200 OK
21.3. Redirection 3xx
21.3.1. 300 Multiple Choices
21.3.2. 301 Moved Permanently
21.3.3. 302 Moved Temporarily
21.3.4. 305 Use Proxy
21.3.5. 380 Alternative Service
21.4. Request Failure 4xx
21.4.1. 400 Bad Request
21.4.2. 401 Unauthorized
21.4.3. 402 Payment Required
21.4.4. 403 Forbidden
21.4.5. 404 Not Found
21.4.6. 405 Method Not Allowed
21.4.7. 406 Not Acceptable
21.4.8. 407 Proxy Authentication Required
21.4.9. 408 Request Timeout
21.4.10. 410 Gone
21.4.11. 413 Request Entity Too Large
21.4.12. 414 Request-URI Too Long
21.4.13. 415 Unsupported Media Type
21.4.14. 416 Unsupported URI Scheme
21.4.15. 420 Bad Extension
21.4.16. 421 Extension Required
21.4.17. 423 Interval Too Brief
21.4.18. 480 Temporarily Unavailable
21.4.19. 481 Call/Transaction Does Not Exist
21.4.20. 482 Loop Detected
21.4.21. 483 Too Many Hops
21.4.22. 484 Address Incomplete
21.4.23. 485 Ambiguous
21.4.24. 486 Busy Here
21.4.25. 487 Request Terminated
21.4.26. 488 Not Acceptable Here
21.4.27. 491 Request Pending
21.4.28. 493 Undecipherable
21.5. Server Failure 5xx
21.5.1. 500 Server Internal Error
21.5.2. 501 Not Implemented
21.5.3. 502 Bad Gateway
21.5.4. 503 Service Unavailable
21.5.5. 504 Server Time-out
21.5.6. 505 Version Not Supported
21.5.7. 513 Message Too Large
21.6. Global Failures 6xx
21.6.1. 600 Busy Everywhere
21.6.2. 603 Decline
21.6.3. 604 Does Not Exist Anywhere
21.6.4. 606 Not Acceptable
22. Usage of HTTP Authentication
22.1. Framework
22.2. User-to-User Authentication
22.3. Proxy-to-User Authentication
22.4. The Digest Authentication Scheme
23. S/MIME
23.1. S/MIME Certificates
23.2. S/MIME Key Exchange
23.3. Securing MIME bodies
23.4. SIP Header Privacy and Integrity using S/MIME: Tunneling SIP
23.4.1. Integrity and Confidentiality Properties of SIP Headers
23.4.1.1. Integrity
23.4.1.2. Confidentiality
23.4.2. Tunneling Integrity and Authentication
23.4.3. Tunneling Encryption
24. Examples
24.1. Registration
24.2. Session Setup
25. Augmented BNF for the SIP Protocol
25.1. Basic Rules
26. Security Considerations: Threat Model and Security Usage Recommendations
26.1. Attacks and Threat Models
26.1.1. Registration Hijacking
26.1.2. Impersonating a Server
26.1.3. Tampering with Message Bodies
26.1.4. Tearing Down Sessions
26.1.5. Denial of Service and Amplification
26.2. Security Mechanisms
26.2.1. Transport and Network Layer Security
26.2.2. SIPS URI Scheme
26.2.3. HTTP Authentication
26.2.4. S/MIME
26.3. Implementing Security Mechanisms
26.3.1. Requirements for Implementers of SIP
26.3.2. Security Solutions
26.3.2.1. Registration
26.3.2.2. Interdomain Requests
26.3.2.3. Peer-to-Peer Requests
26.3.2.4. DoS Protection
26.4. Limitations
26.4.1. HTTP Digest
26.4.2. S/MIME
26.4.3. TLS
26.4.4. SIPS URIs
26.5. Privacy
27. IANA Considerations
27.1. Option Tags
27.2. Warn-Codes
27.3. Header Field Names
27.4. Method and Response Codes
27.5. The "message/sip" MIME type.
27.6. New Content-Disposition Parameter Registrations
28. Changes From RFC 2543
28.1. Major Functional Changes
28.2. Minor Functional Changes
29. References
29.1. Normative References
29.2. Informative References
30. A Table of Timer Values
31. Acknowledgments
32. Authors' Addresses
33. Full Copyright Statement
34. Acknowledgement

Google
Web
RFC-Ref