Skip to main content

21. 响应码 (Response Codes)

本章定义了SIP响应码的含义。响应码是一个3位整数,用于指示请求的结果。响应码分为6类。

响应码分类

  • 1xx: 临时响应 (Provisional) - 请求已收到,继续处理
  • 2xx: 成功 (Success) - 请求已成功接收、理解和接受
  • 3xx: 重定向 (Redirection) - 需要进一步操作以完成请求
  • 4xx: 请求失败 (Client Error) - 请求包含错误语法或无法满足
  • 5xx: 服务器失败 (Server Error) - 服务器未能满足有效请求
  • 6xx: 全局失败 (Global Failure) - 请求在任何服务器上都无法满足

21.1 临时响应 (1xx)

21.1.1 100 Trying

含义: 尝试中
说明: 扩展搜索正在进行中,但在时间限制内没有确定响应

21.1.2 180 Ringing

含义: 振铃
说明: UA已收到INVITE并正在尝试提醒用户

21.1.3 181 Call Is Being Forwarded

含义: 呼叫正在转发
说明: 服务器可能使用此状态码指示呼叫正在转发到不同的目的地集

21.1.4 182 Queued

含义: 排队
说明: 被叫方暂时不可用,但服务器已排队此请求

21.1.5 183 Session Progress

含义: 会话进展
说明: 用于传达关于呼叫进展的信息


21.2 成功响应 (2xx)

21.2.1 200 OK

含义: 成功
说明: 请求已成功


21.3 重定向响应 (3xx)

21.3.1 300 Multiple Choices

含义: 多项选择
说明: 地址解析产生了多个选择,用户(或UAC)可以从中选择

21.3.2 301 Moved Permanently

含义: 永久移动
说明: 用户不再位于Request-URI指示的地址

21.3.3 302 Moved Temporarily

含义: 临时移动
说明: 请求接收者可以使用Contact头字段指示的URI临时联系

21.3.4 305 Use Proxy

含义: 使用代理
说明: 请求的资源必须通过Contact字段给出的代理访问

21.3.5 380 Alternative Service

含义: 替代服务
说明: 呼叫未成功,但建议了替代服务


21.4 请求失败响应 (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

含义: 未找到
说明: 服务器有关于用户不存在于Request-URI指定域的确定信息

21.4.6 405 Method Not Allowed

含义: 方法不允许
说明: Request-URI标识的资源不允许使用Request-Line中指定的方法

21.4.7 406 Not Acceptable

含义: 不可接受
说明: 资源只能生成Accept头字段不可接受的响应

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

含义: Request-URI过长
说明: 服务器拒绝服务请求,因为Request-URI长于服务器愿意解释的

21.4.13 415 Unsupported Media Type

含义: 不支持的媒体类型
说明: 服务器拒绝服务请求,因为请求的消息体格式不受支持

21.4.14 416 Unsupported URI Scheme

含义: 不支持的URI方案
说明: 服务器无法处理请求,因为Request-URI的方案不被服务器识别

21.4.15 420 Bad Extension

含义: 错误扩展
说明: 服务器不理解Proxy-Require或Require头字段中列出的协议扩展

21.4.16 421 Extension Required

含义: 需要扩展
说明: UAS需要特定扩展来处理请求

21.4.17 423 Interval Too Brief

含义: 间隔太短
说明: 服务器拒绝请求,因为Expires头字段的值太小

21.4.18 480 Temporarily Unavailable

含义: 暂时不可用
说明: 被叫方的终端系统成功联系,但被叫方当前不可用

21.4.19 481 Call/Transaction Does Not Exist

含义: 呼叫/事务不存在
说明: 此状态码由UAS和服务器事务返回

21.4.20 482 Loop Detected

含义: 检测到循环
说明: 服务器检测到循环

21.4.21 483 Too Many Hops

含义: 跳数过多
说明: 服务器收到包含Max-Forwards头字段的请求,值为零

21.4.22 484 Address Incomplete

含义: 地址不完整
说明: 服务器收到Request-URI不完整的请求

21.4.23 485 Ambiguous

含义: 模糊
说明: Request-URI模糊

21.4.24 486 Busy Here

含义: 此处忙
说明: 被叫方的终端系统成功联系,但被叫方当前不希望或无法参与

21.4.25 487 Request Terminated

含义: 请求已终止
说明: 请求被BYE或CANCEL请求终止

21.4.26 488 Not Acceptable Here

含义: 此处不可接受
说明: 响应与Accept、Accept-Encoding或Accept-Language头字段中的任何值不兼容

21.4.27 491 Request Pending

含义: 请求挂起
说明: UAS已有对话的挂起请求

21.4.28 493 Undecipherable

含义: 无法解密
说明: UAS收到包含加密MIME体的请求,但无法解密


21.5 服务器失败响应 (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

含义: 版本不支持
说明: 服务器不支持或拒绝支持请求中使用的SIP协议版本

21.5.7 513 Message Too Large

含义: 消息过大
说明: 服务器无法处理请求,因为消息长度超出其处理能力


21.6 全局失败响应 (6xx)

21.6.1 600 Busy Everywhere

含义: 到处忙
说明: 被叫方的终端系统成功联系,但被叫方忙且不希望参与

21.6.2 603 Decline

含义: 拒绝
说明: 被叫方的机器成功联系,但用户明确不希望或无法参与

21.6.3 604 Does Not Exist Anywhere

含义: 任何地方都不存在
说明: 服务器有信息表明Request-URI中指示的用户不存在于任何地方

21.6.4 606 Not Acceptable

含义: 不可接受
说明: UA已成功联系,但会话描述的某些方面不可接受


响应码快速参考表

代码含义类别
100Trying临时
180Ringing临时
181Call Is Being Forwarded临时
182Queued临时
183Session Progress临时
200OK成功
300Multiple Choices重定向
301Moved Permanently重定向
302Moved Temporarily重定向
305Use Proxy重定向
380Alternative Service重定向
400Bad Request客户端错误
401Unauthorized客户端错误
403Forbidden客户端错误
404Not Found客户端错误
405Method Not Allowed客户端错误
406Not Acceptable客户端错误
407Proxy Authentication Required客户端错误
408Request Timeout客户端错误
410Gone客户端错误
413Request Entity Too Large客户端错误
414Request-URI Too Long客户端错误
415Unsupported Media Type客户端错误
416Unsupported URI Scheme客户端错误
420Bad Extension客户端错误
421Extension Required客户端错误
423Interval Too Brief客户端错误
480Temporarily Unavailable客户端错误
481Call/Transaction Does Not Exist客户端错误
482Loop Detected客户端错误
483Too Many Hops客户端错误
484Address Incomplete客户端错误
485Ambiguous客户端错误
486Busy Here客户端错误
487Request Terminated客户端错误
488Not Acceptable Here客户端错误
491Request Pending客户端错误
493Undecipherable客户端错误
500Server Internal Error服务器错误
501Not Implemented服务器错误
502Bad Gateway服务器错误
503Service Unavailable服务器错误
504Server Time-out服务器错误
505Version Not Supported服务器错误
513Message Too Large服务器错误
600Busy Everywhere全局失败
603Decline全局失败
604Does Not Exist Anywhere全局失败
606Not Acceptable全局失败

常见使用场景

成功呼叫流程

UAC              UAS
|---INVITE----->|
|<--100 Trying--|
|<--180 Ringing-|
|<--200 OK------|
|---ACK-------->|

忙线场景

UAC              UAS
|---INVITE----->|
|<--100 Trying--|
|<--486 Busy----|
|---ACK-------->|

重定向场景

UAC              Proxy
|---INVITE----->|
|<--302 Moved---|
| (new contact) |
|---ACK-------->|
| |
|---INVITE----->| (to new contact)

认证场景

UAC              UAS
|---INVITE----->|
|<--401 Unauth-|
|---ACK-------->|
|---INVITE----->| (with Authorization)
|<--200 OK------|

关键要点

  1. 响应码分为6类,从1xx到6xx
  2. 1xx是临时响应,不终止事务
  3. 2xx表示成功,是唯一的成功响应类
  4. 3xx用于重定向,提供新的联系地址
  5. 4xx表示客户端错误,请求有问题
  6. 5xx表示服务器错误,服务器无法处理
  7. 6xx表示全局失败,任何地方都无法满足请求
  8. 某些响应码要求特定头字段(如401需要WWW-Authenticate)

本章小结:

第21章定义了SIP协议中使用的所有标准响应码。响应码采用3位数字,分为6类,每类表示不同类型的结果。理解这些响应码的含义对于正确处理SIP通信至关重要。UA和代理必须能够生成和处理这些响应码,以实现完整的SIP功能。