【IMS】SIP应答消息状态码与功能详解(一)

之前我们向大家介绍过SIP应答消息状态码与功能,但是对于其中的多数功能,我们并不是很了解,对其理解尚停留在字面上,今天我们就为大家比较详细的介绍下这些状态码及其对应的功能含义,希望能对大家有所助益!
SIP协议架构.jpg

1、SIP协议应答消息状态码及功能分类
SIP/2.0 allows six values for the first digit:
      1xx: Provisional -- request received, continuing to process the request;
      2xx: Success -- the action was successfully received, understood, and accepted;
      3xx: Redirection -- further action needs to be taken in order to complete the request;
      4xx: Client Error -- the request contains bad syntax or cannot be fulfilled at this server;
      5xx: Server Error -- the server failed to fulfill an apparently valid request;
      6xx: Global Failure -- the request cannot be fulfilled at any server.
The first digit of the Status-Code defines the class of response. 
The last two digits do not have any categorization role.  
For this reason, any response with a status code between 100 and 199 is referred to as a "1xx response", any response with a status code between 200 and 299 as a "2xx response", and so on. 
SIP消息1.gif

2 、SIP应答消息状态码与功能
格式:类型  状态码  状态说明
1) 临时应答(1XX) 
100 Trying 正在处理中
180 Ringing 振铃
181 call being forwarder 呼叫正在前向
182 queue 排队
183 session progress 会话进行
2)会话成功(2XX)
200 OK 会话成功
3)重定向(3XX)
300 multiple 多重选择
301 moved permanently 永久移动
302 moved temporaily 临时移动
305 use proxy 用户代理
380 alternative service 替代服务
4)客户端失败(4XX) 
400 bad request 错误请求
401 unauthorized 未授权
402 payment required 付费要求
403 forbidden 禁止
404 not found 未发现
405 method no allowed 方法不允许
406 not acceptable 不可接受
407 proxy authentication required 代理需要认证
408 request timeout 请求超时
410 gone 离开
413 request entity too large 请求实体太大
414 request-url too long 请求URL太长
415 unsupported media type 不支持的媒体类型
416 unsupported url scheme 不支持的URL计划
420 bad extension 不良扩展
421 extension required 需要扩展 
423 interval too brief 间隔太短
480 temporarily unavailable 临时失效
481 call/transaction does not exist 呼叫/事务不存在
482 loop detected 发现环路
483 too many hops 跳数太多
484 address incomplete 地址不完整
485 ambiguous 不明朗
486 busy here 这里忙
487 request terminated 请求终止
488 not acceptable here 这里请求不可接受
491 request pending 未决请求
493 undecipherable 不可辨识
5)服务器失败(5XX)
500 server internal error 服务器内部错误
501 not implemented 不可执行
502 bad gateway 坏网关
503 service unavailable 服务无效
504 server time-out 服务器超时
505 version not supported 版本不支持
513 message too large 消息太大
6)全局性错误(6XX)
600 busy everywhere 全忙
603 decline 丢弃
604 does not exist anywhere 不存在
606 not acceptable 不可接受
SIP消息2.jpg

3、SIP应答消息状态码详解
1) 临时应答1xx 
临时应答,也就是消息性质的应答,标志了对方服务器正在处理请求,并且还没有决定最后的应答。
如果服务器处理请求需要花200ms以上才能产生终结应答的时候,它应当发送一个1xx应答。 
注意1xx应答并不是可靠传输的,他们不会导致客户端传送一个ACK应答。临时性质的(1xx)应答可以包含消息体,包含会话描述。 
  • 100 Trying 

这个应答表示下一个节点的服务器已经接收到了这个请求并且还没有执行这个请求的特定动作(比如,正在打开数据库的时候)。
这个应答,就像其他临时应答一 样,终止了UAC重新传送INVITE请求。
  • 180 Ringing 

UA收到INVITE请求并且试图提示给用户,这个应答应当初始化一个本地回铃。 
  • 181 Call is Being Forwarde

呼叫被转发,服务器可以用这个应答代码来表示呼叫正在转发到另一个目的地集合。 
  • 182 Queued 

当呼叫的对方暂时不能接收呼叫,并且服务器决定将呼叫排队等候,而不是拒绝呼叫的时候,那么就应当发出这个应答。当被叫方一旦恢复接收呼叫,他会返回合适的终结应答。
对于这个呼叫状态,可以有一个表示原因的短语,比如:”5 calls queued;expected waiting time is 15minutes”。
服务器可以给出好几个182(Queued)应答告诉呼叫方排队的情况(比如排队靠前了等等)。 
  • 183 Session Progress 

会话进度提示,应答用于提示建立对话的进度信息。
Reason-Phrase(表达原因的句子)、头域或者消息体可以用于提示呼叫进度的更消息的信息。 
2)成功信息2xx 
这个应答表示请求是成功的。 
  • 200 OK 

请求已经处理成功。这个信息取决于不同方法的请求的应答。 
 
3)转发请求3XX 
3xx系列的应答是用于提示用户的新位置信息的,或者为了满足呼叫而转发的额外服务地点。 
  • 300 Multiple Choices 

请求的地址有多个选择,每个选择都有自己的地址,用户或者UA可以选择合适的通讯终端,并且转发这个请求到这个地址。 
应答可以包含一个具有每一个地点的在Accept请求头域中允许的资源特性,这样用户或者UA可以选择一个最合适的地址来转发请求。
这些地址选择也应当在Contact头域中列出。不同于HTTP,SIP应答可以包含多个Contact头域或者一个Contact头域中具有一个地址列表。UA可以使用Contact头域来自动转发或者要求用户确认转发。
如果被叫方可以在多个地址被找到,并且服务器不能或者不愿意转发请求的时候,可以使用这个应答来给呼叫方。 
  • 301 Moved Permently 

当不能在Request-URI指定的地址找到用户的时候,请求的客户端应当使用Contact头域所指出的新的地址重新尝试。
请求者应当用这个新的值来更新本地的目录,地址本和用户地址cache,并且在后续请求中,发送到这个/这些列出的地址。 
  • 302 Moved Temporarily 

请求方应当把请求重新发到这个Contact头域所指出的新地址。新请求的Request-URI应当用这个应答的Contact头域所指出的值。 
在应答中的Expires或者Contact头域的expires参数定义了这个Contact URI的生存周期。UA或者proxy在这个生存周期内cache这个URI。如果没有严格的有效时间,那么这个地址仅仅本次有效,并且不能在以后的事务中保存。 
如果cache的Contact头域的值失败了,那么被转发请求的Request-URI应当再次尝试一次。
临时URI可以比超时时间更快的失效,并且可以有一个新的临时URI。 
  • 305 Use Proxy 

请求的资源必须通过Contact头域中指出的proxy来访问。Contact头域指定了一个proxy的URI,接收到这个应答的对象应当通过这个proxy重新发送这个单个请求。
305(UseProxy)必须是UAS产生的。 
  • 380 Alternative Service 

呼叫不成功,但是可以尝试另外的服务。另外的服务在应答的消息体中定义。
消息体的格式在这里没有定义,可能在以后的规范中定义。 

限于篇幅太长,今天就给大家先介绍临时应答(1XX) 、会话成功(2XX)以及重定向(3XX)三类应答消息代码,后续继续介绍客户端请求失败(4xx)、服务器失败(5XX)及全局性错误(6XX),欢迎大家持续关注!

网优俱乐部1.jpg

如果你喜欢本文内容,对你的工作和学习有帮助或者想获取更多信息,就赶紧把我的公众号关注起来吧!
云端拾贝.jpg

 
 
 
0
2018-10-18

0 个评论

要回复文章请先登录注册