吴伟贤のBlog

Feed Rss

SIP 协议消息应答代码解释详录

07.27.2010, voip, by .

内容大纲:

1xx = 通知性应答

  • 100 正在尝试
  • 180 正在拨打
  • 181 正被转接
  • 182 正在排队
  • 183 通话进展

2xx = 成功应答

  • 200 OK
  • 202 被接受:用于转介

3xx = 转接应答

  • 300 多项选择
  • 301 被永久迁移
  • 302 被暂时迁移
  • 305 使用代理服务器
  • 380 替代服务

4xx = 呼叫失败

  • 400 呼叫不当
  • 401 未经授权:只供注册机构使用,代理服务器应使用代理服务器授权407
  • 402 要求付费(预订为将来使用)
  • 403 被禁止的
  • 404 未发现:未发现用户
  • 405 不允许的方法
  • 406 不可接受
  • 407 需要代理服务器授权
  • 408 呼叫超时:在预定时间内无法找到用户
  • 410 已消失:用户曾经存在,但已从此处消失
  • 413 呼叫实体过大
  • 414 呼叫URI过长
  • 415 不支持的媒体类型
  • 416 不支持的URI方案
  • 420 不当扩展:使用了不当SIP协议扩展,服务器无法理解该扩展
  • 421 需要扩展
  • 423 时间间隔过短
  • 480 暂时不可使用
  • 481 通话/事务不存在
  • 482 检测到循环
  • 483 跳数过多
  • 484 地址不全
  • 485 模糊不清
  • 486 此处太忙
  • 487 呼叫被终止
  • 488 此处不可接受
  • 491 呼叫待批
  • 493 无法解读:无法解读 S/MIME文体部分

5xx = 服务器失败

  • 500 服务器内部错误
  • 501 无法实施:SIP呼叫方法在此处无法实施
  • 502 不当网关
  • 503 服务不可使用
  • 504 服务器超时
  • 505 不支持该版本:服务器不支持SIP协议的这个版本
  • 513 消息过长

6xx = 全局失败

  • 600 各处均忙
  • 603 拒绝
  • 604 无处存在
  • 606 不可使用

代码详解:
SIP协议应答码
应答代码
应答码是包含了,并且扩展了HTTP/1.1应答码。并不是所有的HTTP/1.1应答码都适当应用,只有在折里指出的是适当的。其他HTTP/1.1应答码不应当使用。并且,SIP也定义了新的应答码系列,6xx。

1 临时应答1xx
临时应答,也就是消息性质的应答,标志了对方服务器正在处理请求,并且还没有决定最后的应答。如果服务器处理请求需要花200ms以上才能产生终结应答的时候,它应当发送一个1xx应答。
注意1xx应答并不是可靠传输的。他们不会导致客户端传送一个ACK应答。临时性质的(1xx)应答可以包含消息体,包含会话描述。
1.1 100 Trying
这个应答表示下一个节点的服务器已经接收到了这个请求并且还没有执行这个请求的特定动作(比如,正在打开数据库的时候)。这个应答,就像其他临时应答一样,种植了UAC重新传送INVITE请求。100(Trying)应答和其他临时应答不同的是,在这里,它永远不会被有状态proxy转发到上行流中。
1.2 180 Ringing
UA收到INVITE请求并且试图提示给用户。这个应答应当出世化一个本地回铃。
1.3 818 Call is Being Forwarded(呼叫被转发)
服务器可以用这个应答代码来表示呼叫正在转发到另一个目的地集合。
1.4 182 Queued
当呼叫的对方暂时不能接收呼叫的时候,并且服务器决定将呼叫排队等候,而不是拒绝呼叫的时候,那么就应当发出这个应答。当被叫方一旦恢复接收呼叫,他会返回合适的终结应答。对于这个呼叫状态,可以有一个表示原因的短语,比如:”5 calls queued;expected waiting time is 15minutes”。服务器可以给出好几个182(Queued)应答告诉呼叫方排队的情况(比如排队靠前了等等)。
1.5 183 会话进度
183(Session Progress)应答用于提示建立对话的进度信息。Reason-Phrase(表达原因的句子)、头域或者消息体可以用于提示呼叫进度的更消息的信息。

2 成功信息2xx
这个应答表示请求是成功的。
2.1 200 OK
请求已经处理成功。这个信息取决于不同方法的请求的应答。

3 转发请求3XX
3xx系列的应答是用于提示用户的新位置信息的,或者为了满足呼叫而转发的额外服务地点。
3.1 300 Multiple Choices
请求的地址有多个选择,每个选择都有自己的地址,用户或者(UA)可以选择合适的通讯终端,并且转发这个请求到这个地址。
应答可以包含一个具有每一个地点的在Accept请求头域中允许的资源特性,这样用户或者UA可以选择一个最合适的地址来转发请求。没有未这个应答的消息体定义MIME类型。
这些地址选择也应当在Contact头域中列出(20.10节)。不同于HTTP,SIP应答可以包含多个Contact头域或者一个Contact头域中具有一个地址列表。UA可以使用Contact头域来自动转发或者要求用户确认转发。不过,本规范没有定义自动转发的标准。
如果被叫方可以在多个地址被找到,并且服务器不能或者不愿意转发请求的时候,可以使用这个应答来给呼叫方。
3.2 301 Moved Permently
当不能在Request-URI指定的地址找到用户的时候,请求的客户端应当使用Contact头域(20.10)所指出的新的地址重新尝试。请求者应当用这个新的值来更新本地的目录,地址本,和用户地址cache,并且在后续请求中,发送到这个/这些列出的地址。
3.3 302 Moved Temporarily
请求方应当把请求重新发到这个Contact头域所指出的新地址(20.10)。新请求的Request-URI应当用这个应答的Contact头域所指出的值。
在应答中的Expires(20.19节)或者Contact头域的expires参数定义了这个Contact URI的生存周期。UA或者proxy在这个生存周期内cache这个URI。如果没有严格的有效时见,那么这个地址仅仅本次有效,并且不能在以后的事务中保存。
如果cache的Contact头域的值失败了,那么被转发请求的Request-URI应当再次尝试一次。临时URI可以比超时时间更快的失效,并且可以有一个新的临时URI。
3.4 305 Use Proxy
请求的资源必须通过Contact头域中指出的proxy来访问。Contact头域指定了一个proxy的URI。接收到这个应答的对象应当通过这个proxy重新发送这个单个请求。305(UseProxy)必须是UAS产生的。
3.5 380 Alternative Service
呼叫不成工,但是可以尝试另外的服务。另外的服务在应答的消息体中定义。消息体的格式在这里没有定义,可能在以后的规范中定义。

4 请求失败4xx
4xx应答定义了特定服务器响应的请求失败的情况。客户端不应当在不更改请求的情况下重新尝试同一个请求。(例如,增加合适的认证信息)。不过,同一个请求交给不同服务器也许就会成功。
4.1 400 Bad Request
请求中的语法错误。Reason-Phrase应当标志这个详细的语法错误,比如”Missing Call-ID header field”

评论已关闭。