SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
/*============================================================================*\
Note: The original contents of the RFC 3261 was left intact. We only added
elaborative footnotes (and links in the ms-word version).
Copyright(C) for original content - The Internet Society (2002).
\*============================================================================*/
/*============================================================================*\
/////////////// SIP RFC (3261) navigator and clarifier Light ///////////////
By sipknowledge, Feb/2012, SIP Research & Training (www.sipknowledge.com)
You can (e)Learn more about SIP/VoIP/IMS for a discounted price (30% OFF) at
http://www.sipknowledge.com/Buy30off.htm
Original content and format of the RFC is intact except for
the addition of footnotes, hyper links and formatting
273 footnotes; ~1500 links/cross-references
/*============================================================================*\
Network Working Group J. Rosenberg
Request for Comments: 3261 dynamicsoft
Obsoletes: 2543 H. Schulzrinne
Category: Standards Track Columbia U.
G. Camarillo
Ericsson
A. Johnston
WorldCom
J. Peterson
Neustar
R. Sparks
dynamicsoft
M. Handley
ICIR
E. Schooler
AT&T
June 2002
SIP: Session Initiation Protocol
Status of this Memo
This document specifies an Internet standards track protocol for the Internet
community, and requests discussion and suggestions for improvements. Please
refer to the current edition of the "Internet Official Protocol Standards" (STD
1) for the standardization state and status of this protocol. Distribution of
this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2002). All Rights Reserved.
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2009).
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 1
SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
Abstract
This document describes Session Initiation Protocol (SIP), an application-layer
control (signaling) protocol for creating, modifying, and terminating sessions
with one or more participants1.
These sessions include Internet telephone calls, multimedia distribution, and
multimedia conferences.
SIP invitations2 used to create sessions carry session descriptions that allow
participants to agree on a set of compatible media types. SIP makes use of
elements called proxy servers to help route requests to the user's current
location, authenticate and authorize users for services, implement provider
call-routing policies, and provide features to users. SIP also provides a
registration function that allows users to upload their current locations for
use by proxy servers. SIP runs on top of several different transport protocols.
Table of Contents
1 Introduction ........................................ 9
2 Overview of SIP Functionality ....................... 9
3 Terminology ......................................... 11
4 Overview of Operation ............................... 11
5 Structure of the Protocol ........................... 20
6 Definitions ......................................... 22
7 SIP Messages ........................................ 29
7.1 Requests ............................................ 30
7.2 Responses ........................................... 31
7.3 Header Fields ....................................... 32
7.3.1 Header Field Format ................................. 33
7.3.2 Header Field Classification ......................... 35
7.3.3 Compact Form ........................................ 35
7.4 Bodies .............................................. 35
7.4.1 Message Body Type ................................... 36
7.4.2 Message Body Length ................................. 36
7.5 Framing SIP Messages ................................ 36
8 General User Agent Behavior ......................... 37
8.1 UAC Behavior ........................................ 38
8.1.1 Generating the Request .............................. 38
1 Participants are the calling party (caller) and the called party (callee).
Recall that in the VoIP world one may establish a session with a group of callees. In such a case we
may have more than two participants. (Other common cases for SIP sessions with multi participants
could be the addition of participants to an existing session either by calling them (dial out) or by have
them dial in or by merging separate sessions to one (See (mainly) RFC 3911 and RFC 4579 (Conf-
ID;isfocus;Join)))
2 Invitation is just the SIP fancy way to say “call setup”.
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 2
SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
8.1.1.1 Request-URI ......................................... 38
8.1.1.2 To .................................................. 38
8.1.1.3 From ................................................ 40
8.1.1.4 Call-ID ............................................. 40
8.1.1.5 CSeq ................................................ 41
8.1.1.6 Max-Forwards ........................................ 42
8.1.1.7 Via ................................................. 42
8.1.1.8 Contact ............................................. 43
8.1.1.9 Supported and Require ............................... 44
8.1.1.10 Additional Message Components ....................... 44
8.1.2 Sending the Request ................................. 44
8.1.3 Processing Responses ................................ 45
8.1.3.1 Transaction Layer Errors ............................ 46
8.1.3.2 Unrecognized Responses .............................. 46
8.1.3.3 Vias ................................................ 46
8.1.3.4 Processing 3xx Responses ............................ 46
8.1.3.5 Processing 4xx Responses ............................ 48
8.2 UAS Behavior ........................................ 49
8.2.1 Method Inspection ................................... 50
8.2.2 Header Inspection ................................... 50
8.2.2.1 To and Request-URI .................................. 50
8.2.2.2 Merged Requests ..................................... 52
8.2.2.3 Require ............................................. 52
8.2.3 Content Processing .................................. 53
8.2.4 Applying Extensions ................................. 53
8.2.5 Processing the Request .............................. 54
8.2.6 Generating the Response ............................. 54
8.2.6.1 Sending a Provisional Response ...................... 54
8.2.6.2 Headers and Tags .................................... 55
8.2.7 Stateless UAS Behavior .............................. 55
8.3 Redirect Servers .................................... 56
9 Canceling a Request ................................. 59
9.1 Client Behavior ..................................... 59
9.2 Server Behavior ..................................... 61
10 Registrations ....................................... 62
10.1 Overview ............................................ 62
10.2 Constructing the REGISTER Request ................... 63
10.2.1 Adding Bindings ..................................... 65
10.2.1.1 Setting the Expiration Interval of Contact Addresses 66
10.2.1.2 Preferences among Contact Addresses ................. 67
10.2.2 Removing Bindings ................................... 67
10.2.3 Fetching Bindings ................................... 67
10.2.4 Refreshing Bindings ................................. 67
10.2.5 Setting the Internal Clock .......................... 68
10.2.6 Discovering a Registrar ............................. 68
10.2.7 Transmitting a Request .............................. 69
10.2.8 Error Responses ..................................... 69
10.3 Processing REGISTER Requests ........................ 69
11 Querying for Capabilities ........................... 72
11.1 Construction of OPTIONS Request ..................... 73
11.2 Processing of OPTIONS Request ....................... 74
12 Dialogs ............................................. 75
12.1 Creation of a Dialog ................................ 75
12.1.1 UAS behavior ........................................ 76
12.1.2 UAC Behavior ........................................ 77
12.2 Requests within a Dialog ............................ 78
12.2.1 UAC Behavior ........................................ 78
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 3
SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
12.2.1.1 Generating the Request .............................. 78
12.2.1.2 Processing the Responses ............................ 80
12.2.2 UAS Behavior ........................................ 81
12.3 Termination of a Dialog ............................. 82
13 Initiating a Session ................................ 83
13.1 Overview ............................................ 83
13.2 UAC Processing ...................................... 83
13.2.1 Creating the Initial INVITE ......................... 83
13.2.2 Processing INVITE Responses ......................... 86
13.2.2.1 1xx Responses ....................................... 86
13.2.2.2 3xx Responses ....................................... 86
13.2.2.3 4xx, 5xx and 6xx Responses .......................... 86
13.2.2.4 2xx Responses ....................................... 86
13.3 UAS Processing ...................................... 88
13.3.1 Processing of the INVITE ............................ 88
13.3.1.1 Progress ............................................ 89
13.3.1.2 The INVITE is Redirected ............................ 89
13.3.1.3 The INVITE is Rejected .............................. 89
13.3.1.4 The INVITE is Accepted .............................. 90
14 Modifying an Existing Session ....................... 91
14.1 UAC Behavior ........................................ 91
14.2 UAS Behavior ........................................ 93
15 Terminating a Session ............................... 94
15.1 Terminating a Session with a BYE Request ............ 95
15.1.1 UAC Behavior ........................................ 95
15.1.2 UAS Behavior ........................................ 95
16 Proxy Behavior ...................................... 95
16.1 Overview ............................................ 95
16.2 Stateful Proxy ...................................... 96
16.3 Request Validation .................................. 97
16.4 Route Information Preprocessing ..................... 99
16.5 Determining Request Targets ......................... 100
16.6 Request Forwarding .................................. 101
16.7 Response Processing ................................. 108
16.8 Processing Timer C .................................. 115
16.9 Handling Transport Errors ........................... 115
16.10 CANCEL Processing ................................... 115
16.11 Stateless Proxy ..................................... 116
16.12 Summary of Proxy Route Processing ................... 117
16.12.1 Examples ............................................ 118
16.12.1.1 Basic SIP Trapezoid ................................. 118
16.12.1.2 Traversing a Strict-Routing Proxy ................... 119
16.12.1.3 Rewriting Record-Route Header Field Values .......... 120
17 Transactions ........................................ 121
17.1 Client Transaction .................................. 123
17.1.1 INVITE Client Transaction ........................... 124
17.1.1.1 Overview of INVITE Transaction ...................... 124
17.1.1.2 Formal Description .................................. 124
17.1.1.3 Construction of the ACK Request ..................... 128
17.1.2 Non-INVITE Client Transaction ....................... 130
17.1.2.1 Overview of the non-INVITE Transaction .............. 130
17.1.2.2 Formal Description .................................. 130
17.1.3 Matching Responses to Client Transactions ........... 131
17.1.4 Handling Transport Errors ........................... 133
17.2 Server Transaction .................................. 134
17.2.1 INVITE Server Transaction ........................... 134
17.2.2 Non-INVITE Server Transaction ....................... 137
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 4
SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
17.2.3 Matching Requests to Server Transactions ............ 137
17.2.4 Handling Transport Errors ........................... 140
18 Transport ........................................... 140
18.1 Clients ............................................. 141
18.1.1 Sending Requests .................................... 141
18.1.2 Receiving Responses ................................. 143
18.2 Servers ............................................. 144
18.2.1 Receiving Requests .................................. 144
18.2.2 Sending Responses ................................... 145
18.3 Framing ............................................. 146
18.4 Error Handling ...................................... 146
19 Common Message Components ........................... 146
19.1 SIP and SIPS Uniform Resource Indicators ............ 146
19.1.1 SIP and SIPS URI Components ......................... 147
19.1.2 Character Escaping Requirements ..................... 151
19.1.3 Example SIP and SIPS URIs ........................... 152
19.1.4 URI Comparison ...................................... 152
19.1.5 Forming Requests from a URI ......................... 155
19.1.6 Relating SIP URIs and tel URLs ...................... 156
19.2 Option Tags ......................................... 157
19.3 Tags ................................................ 157
20 Header Fields ....................................... 158
20.1 Accept .............................................. 162
20.2 Accept-Encoding ..................................... 162
20.3 Accept-Language ..................................... 162
20.4 Alert-Info .......................................... 162
20.5 Allow ............................................... 163
20.6 Authentication-Info ................................. 163
20.7 Authorization ....................................... 163
20.8 Call-ID ............................................. 164
20.9 Call-Info ........................................... 164
20.10 Contact ............................................. 165
20.11 Content-Disposition ................................. 166
20.12 Content-Encoding .................................... 166
20.13 Content-Language .................................... 167
20.14 Content-Length ...................................... 167
20.15 Content-Type ........................................ 167
20.16 CSeq ................................................ 168
20.17 Date ................................................ 168
20.18 Error-Info .......................................... 168
20.19 Expires ............................................. 169
20.20 From ................................................ 169
20.21 In-Reply-To ......................................... 170
20.22 Max-Forwards ........................................ 170
20.23 Min-Expires ......................................... 170
20.24 MIME-Version ........................................ 171
20.25 Organization ........................................ 171
20.26 Priority ............................................ 171
20.27 Proxy-Authenticate .................................. 172
20.28 Proxy-Authorization ................................. 172
20.29 Proxy-Require ....................................... 172
20.30 Record-Route ........................................ 172
20.31 Reply-To ............................................ 173
20.32 Require ............................................. 173
20.33 Retry-After ......................................... 173
20.34 Route ............................................... 174
20.35 Server .............................................. 174
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 5
SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
20.36 Subject ............................................. 174
20.37 Supported ........................................... 175
20.38 Timestamp ........................................... 175
20.39 To .................................................. 175
20.40 Unsupported ......................................... 176
20.41 User-Agent .......................................... 176
20.42 Via ................................................. 176
20.43 Warning ............................................. 177
20.44 WWW-Authenticate .................................... 178
21 Response Codes ...................................... 179
21.1 Provisional 1xx ..................................... 179
21.1.1 100 Trying .......................................... 179
21.1.2 180 Ringing ......................................... 179
21.1.3 181 Call Is Being Forwarded ......................... 180
21.1.4 182 Queued .......................................... 180
21.1.5 183 Session Progress ................................ 180
21.2 Successful 2xx ...................................... 180
21.2.1 200 OK .............................................. 180
21.3 Redirection 3xx ..................................... 180
21.3.1 300 Multiple Choices ................................ 181
21.3.2 301 Moved Permanently ............................... 181
21.3.3 302 Moved Temporarily ............................... 181
21.3.4 305 Use Proxy ....................................... 182
21.3.5 380 Alternative Service ............................. 182
21.4 Request Failure 4xx ................................. 182
21.4.1 400 Bad Request ..................................... 182
21.4.2 401 Unauthorized .................................... 182
21.4.3 402 Payment Required ................................ 182
21.4.4 403 Forbidden ....................................... 183
21.4.5 404 Not Found ....................................... 183
21.4.6 405 Method Not Allowed .............................. 183
21.4.7 406 Not Acceptable .................................. 183
21.4.8 407 Proxy Authentication Required ................... 183
21.4.9 408 Request Timeout ................................. 184
21.4.10 410 Gone ............................................ 184
21.4.11 413 Request Entity Too Large ........................ 184
21.4.12 414 Request-URI Too Long ............................ 184
21.4.13 415 Unsupported Media Type .......................... 184
21.4.14 416 Unsupported URI Scheme .......................... 184
21.4.15 420 Bad Extension ................................... 185
21.4.16 421 Extension Required .............................. 185
21.4.17 423 Interval Too Brief .............................. 185
21.4.18 480 Temporarily Unavailable ......................... 185
21.4.19 481 Call/Transaction Does Not Exist ................. 185
21.4.20 482 Loop Detected ................................... 186
21.4.21 483 Too Many Hops ................................... 186
21.4.22 484 Address Incomplete .............................. 186
21.4.23 485 Ambiguous ....................................... 186
21.4.24 486 Busy Here ....................................... 187
21.4.25 487 Request Terminated .............................. 187
21.4.26 488 Not Acceptable Here ............................. 187
21.4.27 491 Request Pending ................................. 187
21.4.28 493 Undecipherable .................................. 187
21.5 Server Failure 5xx .................................. 188
21.5.1 500 Server Internal Error ........................... 188
21.5.2 501 Not Implemented ................................. 188
21.5.3 502 Bad Gateway ..................................... 188
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 6
SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
21.5.4 503 Service Unavailable ............................. 188
21.5.5 504 Server Time-out ................................. 188
21.5.6 505 Version Not Supported ........................... 189
21.5.7 513 Message Too Large ............................... 189
21.6 Global Failures 6xx ................................. 189
21.6.1 600 Busy Everywhere ................................. 189
21.6.2 603 Decline ......................................... 189
21.6.3 604 Does Not Exist Anywhere ......................... 189
21.6.4 606 Not Acceptable .................................. 189
22 Usage of HTTP Authentication ........................ 190
22.1 Framework ........................................... 191
22.2 User-to-User Authentication ......................... 192
22.3 Proxy-to-User Authentication ........................ 194
22.4 The Digest Authentication Scheme .................... 195
23 S/MIME .............................................. 197
23.1 S/MIME Certificates ................................. 197
23.2 S/MIME Key Exchange ................................. 198
23.3 Securing MIME bodies ................................ 200
23.4 SIP Header Privacy and Integrity using S/MIME:
Tunneling SIP ....................................... 201
23.4.1 Integrity and Confidentiality Properties of SIP
Headers ............................................. 202
23.4.1.1 Integrity ........................................... 202
23.4.1.2 Confidentiality ..................................... 202
23.4.2 Tunneling Integrity and Authentication .............. 203
23.4.3 Tunneling Encryption ................................ 205
24 Examples ............................................ 206
24.1 Registration ........................................ 206
24.2 Session Setup ....................................... 207
25 Augmented BNF for the SIP Protocol .................. 213
25.1 Basic Rules ......................................... 213
26 Security Considerations: Threat Model and Security
Usage Recommendations ............................... 225
26.1 Attacks and Threat Models ........................... 225
26.1.1 Registration Hijacking .............................. 225
26.1.2 Impersonating a Server .............................. 226
26.1.3 Tampering with Message Bodies ....................... 226
26.1.4 Tearing Down Sessions ............................... 227
26.1.5 Denial of Service and Amplification ................. 228
26.2 Security Mechanisms ................................. 228
26.2.1 Transport and Network Layer Security ................ 229
26.2.2 SIPS URI Scheme ..................................... 230
26.2.3 HTTP Authentication ................................. 231
26.2.4 S/MIME .............................................. 231
26.3 Implementing Security Mechanisms .................... 231
26.3.1 Requirements for Implementers of SIP ................ 231
26.3.2 Security Solutions .................................. 232
26.3.2.1 Registration ........................................ 232
26.3.2.2 Interdomain Requests ................................ 233
26.3.2.3 Peer-to-Peer Requests ............................... 235
26.3.2.4 DoS Protection ...................................... 236
26.4 Limitations ......................................... 236
26.4.1 HTTP Digest ......................................... 236
26.4.2 S/MIME .............................................. 237
26.4.3 TLS ................................................. 238
26.4.4 SIPS URIs ........................................... 238
26.5 Privacy ............................................. 239
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 7
SIP RFC (3261) explained, LIGHT 3.3 (2/2012) - www.sipknowledge.com
27 IANA Considerations ................................. 240
27.1 Option Tags ......................................... 240
27.2 Warn-Codes .......................................... 241
27.3 Header Field Names .................................. 241
27.4 Method and Response Codes ........................... 241
27.5 The "message/sip" MIME type. ....................... 242
27.6 New Content-Disposition Parameter Registrations ..... 242
28 Changes From RFC 2543 ............................... 243
28.1 Major Functional Changes ............................ 243
28.2 Minor Functional Changes ............................ 246
29 Normative References ................................ 247
30 Informative References .............................. 248
A Table of Timer Values ............................... 250
Acknowledgments ................................................ 250
Authors' Addresses ............................................. 251
Full Copyright Statement ....................................... 252
Copyright(Footnotes/colors/links ONLY)(C), SIPKnowledge(2012) P. 8