【SIP基础】SIP协议响应代码
【SIP基础】SIP协议响应代码
SIP响应是由⽤户代理服务器(UAS)⽣成或由客户端⽣成来回应服务器请求的消息。它是⼀个正式的回复确认,以防⽌UAC重发请求。
响应可能需要包含⼀些额外的头字段
SIP有六类响应
1xx - 5xx是借由HTTP协议,⽽6xx是在SIP中介绍。
1XX被认为是⼀个临时响应,其余的最终响应。
类 别描述动作
1xx信息⽤来只是呼叫完成前的状态,也被称为临时响应。
2xx  成功请求处理成功。如果是INVITE消息的,应回应ACK消息;否则表⽰停⽌重发请求。
3xx重定向服务器返回可⽤的位置。客户端应该重试请求到另⼀个服务器上。
4xx客户端错误请求失败,由于客户端的错误。客户端可以根据响应修改请求并重试。
5xx服务器故障请求失败,由于服务器的错误。请求可以向另⼀台服务器重试。
6xx全局失败请求失败。是全局性错误,该请求不应该向其他服务器再次尝试。
信息(1xx)
信息(1xx)响应⽤于指⽰呼叫过程。通常情况下,响应是端对端(除100尝试)。信息(1xx)的响应的主要⽬的是阻⽌INVITE请求的重发。信息响应包括以下响应:
100 Trying (尝试)
这种特殊的情况下的响应仅仅是⼀个逐跳请求。
它永远不会转发,不得包含消息体。
它被⽤于避免INVITE请求的重传。
180 Ringing (响铃)
此响应被⽤来指⽰⽤户代理已经接收到INVITE消息,并且正在电话振铃。
181 Call is Being Forwarded (呼叫被转发)
此响应⽤于指⽰该呼叫已被转发到另⼀端。
当主叫需要此响应消息时才被发送。
此响应告诉主叫,由于转发操作会导致应答时间变长。
182 Call Queued (呼叫队列)
此响应被⽤来指⽰该INVITE消息已经接收到,并且将在队列进⾏处理。
183 Session Progress (会话进度)
它指⽰本次会话的进度信息可以存在于消息主体或媒体流中。
不像100 Trying的尝试响应,183是端对端的响应,并且会实际性的建⽴起⼀个对话。
⼀个典型的应⽤环境是让UAC通过落地⽹关进⼊PSTN⽹络,并让主叫听到⼿机铃声,或忙⾳,或通话录⾳的通知⾳。(此消息也是电话铃⾳透传的关键)
成功(2xx)
此类响应是⽤于指⽰⼀个请求已被接受。它包括以下响应:
200 OK
200 OK⽤于接受会话邀请。
它表⽰成功完成的请求或接受请求。
202 Accepted (接受)
表⽰该UAS已经接收并理解了请求,但该请求可能没有被授权或正在由服务器处理。
它是常⽤来响应SUBSCRIBE消息,REFER消息。
重定向(3xx)
通常这类响应是由重定向服务器发送,来响应INVITE消息的。它们也被称为重定向类响应。它包括以下响应:
300 Multiple Choices (多重选择)
它包含多个联系⼈的报头字段,说明该位置服务器返回多个可能的位置,并在Request-URI中⽤多个SIP URI表⽰。
301 Moved Permanently (永久移动)
这种重定向响应在Contact头字段中包含着被叫⽅的新的永久性的URI。
位置地址可以被保存,并在以后的INVITE请求中使⽤。
302 Moved Temporarily (临时移动)
该响应包含⼀个URI,该URI是当前有效的,但不是永久的。
也就是该URI位置地址在指定的特殊时间内是有效的 。
305 Use Proxy (使⽤代理)
这个响应包含⼀个URI,该URI指向具有对呼叫⽅有认证信息的代理服务器。
这种响应可以由发出来电的UAS代理服务器发送。
380 Alternative Service (可替代服务)
这个响应返回⼀个URI,该URI指⽰被叫⽅希望的服务类型。
例如,⼀个通话可以被重新定向到⼀个语⾳信箱的服务。
客户端错误(4xx)
客户端错误的响应表明,由于UAC端的⼀些错误使得请求不能得到满⾜。响应代码通常由UAS来发送。客户端在接收到出错消息时,应该基于该响应的描述进⾏修改并重新发送。下⾯讨论的是⼀些重要的客户端错误的响应。
400 Bad Request (错误的请求)
这表明该请求不被服务器理解。
请求可能是缺少必要的头字段,例如To, From, Call-ID, 或 CSeq。
401 Unauthorized (未经授权)
说明该请求要求⽤户进⾏认证。
401 Unauthorized 通常回应的是注册请求,由代理服务器发送。
该响应包含WWW-Authenticate⾝份验证头字段,该字段表明从主叫那⾥获得正确的凭据请求。
随后,REGISTER将重发,并包含着⽤户的正确的凭据。
403 Forbidden (禁⽌)
403 Forbidden 说明代理服务器已经理解请求,并正确匹配请求,但不能提供该请求的服务。
这种响应在需要授权时不能使⽤。
404 Not Found (未到)
404 Not Found表明在服务器中没有到该请求URI标识中的SIP URI⽤户。
405 Method Not Allowed (不允许的⽅法)
说明服务器或⽤户代理已收到并理解该请求,但不能执⾏该请求。
例如:当注册请求被发送到⽤户代理端时,⽤户代理可响应405。
在消息头中,Allow 域是必需的,它告诉UAC什么⽅法是可以接受的。
406 Not Acceptable (不接受)
该响应说明不能按照该请求消息中的规定来处理。
在请求中的Accept头域中没有包含UAS⽀持的任何选项。
407 Proxy Authentication Required (需要代理⾝份验证)
由代理服务器发送该请求说明UAC必须⾸先验证⾃⾝的请求后才可以被处理。
响应消息的Proxy-Authenticate头字段中应包含所需凭据的类型信息。
该请求可以被重新提交,并在Proxy-Authenticate头字段中包含正确的凭据。
408 Request Timeout (请求超时)
当响应时间超过INVITE请求的Expires头域字段中指定的时间段时,该响应被发送。
它可以由代理服务器或⽤户代理发送。
该请求可以在任何时候由UAC重试。
422 Session Timer Interval Too Small (会话定时器间隔太⼩)
该响应被⽤来处理拒绝含有Session-Expires头字段的请求。
允许的最⼩间隔被表⽰在所请求的Min-SE头字段中。
主叫⽅可以重新尝试,当没有会话Expires头字段或间隔时间值⼤于或等于规定的最⼩值时。
423 Interval Too Brief (间隔太短)
该响应说明在请求中设置的资源刷新时间(或者有效时间)过短,可以⽤于代理服务器来拒绝那些Contact头域有效期过短的注册请求。
该响应必须包含Min-Expires头域并指出最⼩有效期,该注册者应该接受并修改。
480 Temporarily Unavailable (暂时不可⽤)
该响应说明请求已正确到达被叫⽅,但因被叫⽅有⼀些暂时不可⽤的原因⽽拒绝。
该响应应包含⼀个Retry-After头,表明何时请求可以得到满⾜。
怎样设置代理服务器481 Dialog/Transaction Does Not Exist (对话/事务不存在)
该响应说明UAS接收到请求,但是没有和现存的对话或者事务匹配。
483 Too Many Hops (太多的跳数)
此响应说明请求已被转发的次数已达到上限,该判断由请求的Max-Forwards头来设置。
请求中Max-Forward:0,即数值为0来表⽰达到最⼤转发。
486 Busy Here (忙,占线)
该响应说明⽤户代理正在忙,不能接受呼叫。
487 Request Terminated (请求终⽌)
该响应会被发送,当⽤户CANCEL来结束INVITE请求时。
200 OK消息⽤来确认CANCEL消息,⽤487 Request Terminated来取消INVITE请求。
服务器故障 (5xx)
此类响应说明因服务器中的错误⽽不能处理发来的请求。显然对有效的请求服务器也⽆法完成。此类响应可包含⼀个Retry-After头字段,⽤来表明可以在其它地址进⾏重试,因为没有在请求中表明请求的错误,所以智能采⽤重试⽅法。⼀些重要的服务器故障响应如下。
500 Server Internal Error (服务器内部错误)
500表⽰服务器发⽣了某种错误,从⽽不能处理请求。
它是⼀种服务器故障,指⽰客户端过⼀段时间后可以再次重试请求。
501 Not Implemented (未实现)
它表明服务器⽆法执⾏,因为它不⽀持处理该请求。
该响应被⽤来拒绝含有未知⽅法的请求。
502 Bad Gateway (错误的⽹关)
如果服务器作为⽹关或者代理存在,从下⾏服务器上接收到了⼀个⾮法的应答(这个应答对应的请求
是本服务器为了完成请求⽽转发给下⾏服务器的)
这表明有其他的⼀些⽹络问题使请求不能被处理。
503 Service Unavailable (暂停服务)
该响应说明所请求的服务是暂时不可⽤。
服务器可以在应答中增加⼀个Retry-After来让客户端重试这个请求。客户端在Retry-After头字段期满之后才能进⾏重试。
504 Gateway Timeout (⽹关超时)
该响应说明服务器在⼀个外部服务器上没有收到⼀个及时的应答。这个外部服务器是本服务器⽤来访问处理这个请求所需要的。如果从上⾏服务器上收到的请求中的Expires头域超时,那么应当返回⼀个408(Request TimeOut)错误。
它是⼀个服务器错误类响应,是因为服务器访问SIP⽹络以外的资源未能得到响应引起的。
505 Version Not Supported (版本不⽀持)
该响应说明服务器不⽀持对应的SIP版本。
⽬前SIP2.0版是唯⼀的实现版本。
513 Message Too Large (消息过⼤)
此响应说明⽆法处理请求,因为消息长度超过了处理的长度。
580 Preconditions Failure (前提条件失败)
此响应说明SDP中需要的前提条件不能得到满⾜⽽拒绝请求。
全局错误 (6xx)
此响应类表⽰服务器知道该请求⽆论怎样尝试都将会失败,所以,该请求不应该被发送到其他地⽅。
这意味这服务器给特定⽤户有⼀个最终的信息,并不只是在Request-URI的特定实例有最终信息。 ⼀些重要的响应的如下:
600 Busy Everywhere (任意占线)
只有当终端系统知道没有其他终端节点(⽐如语⾳邮箱系统)能 够访问到这个⽤户的时候才能使⽤这个应答。否则应当返回⼀个486(Busy Here)的应答。
603 Decline (拒绝)
该响应表明被叫⽅占线,或者⼲脆不希望接通呼叫。
604 Does Not Exist Anywhere (不存在任何地⽅)
该响应类似于404未到的响应,但表⽰在Request-URI中的⽤户不能在任何地⽅到。
该反应应该仅由具有访问所有相关⽤户信息的服务器发送。
606 Not Acceptable (不接受)
该响应说明成功联系到⼀个UA,但是会话描述的⼀些部分⽐如请求的媒体,带宽,或者地址类型不被接收。
该响应意味着⽤户希望通讯,但是不能充分⽀持会话描述。
可以在Warning头域中包含⼀个原因列表,⽤于解释为何会话描述不能被⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。