require头域

来源:互联网 发布:mac快捷键缩小窗口 编辑:程序博客网 时间:2024/06/05 17:06

Require介绍

如果请求的各项要素通过了UAS的判定,那么如果存在Require头域,接下来就是检查Require头域。Require头域是UAC用来通知UAS应该用什么样的SIP扩展来处理本请求的。如果UAS不支持请求的Require头域中的option-tag列表,那就必须产生一个420应答(错误的扩展)。并且UAS必须添上Unsupported头域,里边填上刚才接收到的请求的Require头域中,哪些options是自己所不支持的。

注意:Require和Proxy-Require禁止出现在CANCEL请求中,或者回应给非2xx应答的ACK请求中。就算出现了在处理的时候也必须被忽略。并且回应给2xx应答的ACK请求必须只能包含在初始请求(在这个ACK请求之前的请求)中包含的Require和Proxy-Require所规定options,这样才能保证服务端能够正确处理。

例子:

UAC->UAS: 

INVITE sip:watson@bell-telephone.comSIP/2.0

Require: 100rel

UAS->UAC: 

SIP/2.0 420 Bad Extension

Unsupported: 100rel

这个特性(Unsupported)是为了保证客户-服务端都能够无阻碍的交互,除非是options对方不支持(就像上边的例子说明的一样)。对于相互匹配的客户-服务端(相互匹配的意思就是客户端Require的正好是服务端支持的),那么这些请求、应答将会处理的非常迅速,减少了一个请求的往返协商的浪费。另外,这个也避免了客户端不知道服务端到底不支持那些特性扩展。

某些特性扩展只对终端(endsystem)有效例如呼叫处理域等等。

Require头域应用

Require头域用于UAC告诉UAS关于要求UAS支持那些特性。虽然这是一个可选的头域,但是如果Require头域存在,那就一定不能掠过不处理。

头域包含一个option tag的列表。每一个option tag定了一个要处理请求要求UAS必须支持的SIP扩展。通常,这用于定义一个需要支持的扩展头域的集合。本规范的UAC应当只包含规范的RFC扩展。

例如:

Require:100rel


0 0
原创粉丝点击