深圳市宝安区华美居

0086-18665301040

SIP协议规范RFC3261中文分享-14

SIP协议规范RFC3261中文分享-14

接前面章节。

10Registrations

10.1Overview

SIP 提供一种查询能力。如果一个用户想和其他用户发起一个会话的话,SIP必须查找当前其他用户的目的地地址是否是可达状态。这个查询处理过程经常是基于用户地址信息,通过SIP网络的核心要素单元来完成,例如代理服务器和重定位服务器(负责接收请求)来决定发送其发送地址,然后发送这个用户到其地址。为了实现这个处理流程,SIP网络的要素单元会查询一个抽象服务,我们称之为定位服务。这个服务为具体的域提供地址绑定。这些地址绑定映射一个正抵达的SIP或者SIPS URL地址,例如sip:bob@biloxi.com,可能会匹配一个或者多个这样相似的URLs地址,例如sip:bob@engineering.biloxi.com。最终,代理会查询一个定位服务,定位服务会映射收到的URL地址到用户代理,这个用户是已经定位的,这个会话期望抵达的用户。

注册实际上是在定位服务中为指定的域创建了一个绑定关系,这个指定的域通过一个或多个contact地址关联了一个address-of-record(AoR) URI地址。因此,当这个域的代理收到一个请求,这个请求中的Request-URI匹配了address-of-record(AOR)时,代理就会转发这个请求到这个contact地址,这个地址已经注册到了那个address-of-record(AOR)上。一般情况下,只有这样的处理方式是合理的,当注册请求的AOR路由到那个域的时候,在域的定位服务上注册添加一个address-of-record(AOR)地址。大部分情况下,这里表示的意思是,注册的域将需要匹配在AOR地址的域。

有多种方式创建定位服务的内容。一种方式是通过管理方式创建。在以上的示例中,Bob被看作是一名技术部门的成员之一,他有权访问公司数据库。具体操作过程中,SIP协议对UA提供了一种机制,可以明确创建一种绑定关系。这种机制被称之为注册。

注册需要对指定的UAS类型对象发生一个REGISTER请求,这种类型的对象称之为注册服务或者注册服务器。注册服务工作方式类似于置于域定位服务的前端一个角色,注册服务负责读写映射REGISTER请求中的内容。定位服务然后通过解析出的结果查询代理服务器,代理服务器负责针对那个域的绑定结果路由那个请求。
以上所有关于注册流程的解释在Figure 2有完整的说明。注意,注册服务和代理服务器都是逻辑对象,它们可以在网络中部署为一个单一的逻辑对象。

为了说明其功能,这里都把它们分开说明。同时也要注意,如果注册服务和代理服务是独立的对象,为了让UAs那个抵达注册服务,UAs可以通过代理服务器发送请求服务。
SIP不能对一个特别的机制授权来支持定位服务。只有一个要求是必须满足的,那就是针对某些域的注册服务必须可以读写到定位服务中,并且针对那个域的代理或者转发服务必须能够读那些数据消息。注册服务针对同一域,它可以和一个指定的SIP代理服务器部署在同一服务器中。

10.2Constructingthe REGISTER Request

注册可以请求添加,移除和查询绑定。一个注册请求可以在一个address-of-record和一个或多个contact地址之间添加一个新的绑定。通过一个授权的,合适的第三方执行一个指定的address-of-record的注册。客户端也可以移除前面的绑定或通过查询来决定哪个绑定是支持的address-of-record。
这里有一个特别说明,注册请求构建和客户发送注册请求的处理是通过基本的UAC处理方式来规范的,具体的规范说明,请参阅Section 8.1Section 17.1

一个注册请求不能创建dialog。一个UAC可以在注册请求中包括一个Route头,这里的注册请求是基于一个前面存在的route set列表,具体的描述参阅Section 8.1。在注册请求或响应中的这个Record-Route头没有任何含义,如果出现的话,它必须被忽略。特别强调,这个UAC一定不能在注册请求的任何响应中,基于当前的或缺省的Record-Route创建一个新的route set。

除了Contact以外,以下头域必须包括在注册请求中。Contact头也可以包括进去:
Request-URI: Request-URI命名定位服务的域名(例如,sip:chicago.com)。 SIP URL的”userinfo”和”@”部分一定不能出现。
To: To头包含记录地址,其注册流程可以被创建,查询和修改。To头和Request-URI 是不同的,因为前者包含一个用户名称。这个记录地址必须是一个SIP URL或者SIPS URL。

From: From头包含一个人的地址记录,它负责注册。除非请求是一个第三方的注册,否则,这个值和To头域值相同。

Call-ID:所有从UAC发送到特定注册服务的注册使用同一Call-ID头域。
如果同样的客户端使用不同的Call-ID值,注册服务不能检测是否是一个延迟的注册请求,这个请求可能没有按照顺序抵达注册服务。
CSeq: CSeq值用来保证正确的注册请求顺序处理。UA必须对每个带同样Call-ID的注册请求递增一个数值来保证其实现的正确性。
Contact:注册请求可以包含一个Contact头,它包含零个或者多个绑定的地址。
UAs在收到注册的最终响应之前或者没有收到前面的注册请求超时响应,它们一定不能发送新的注册(和重传相反,它包含一个新的Contact地址头)。

SIP协议规范RFC3261中文分享-14

以下Contact头参数在注册请求中具有特别的含义:

action:在RFC2543的规范中使用的参数”action”已经停止使用。

UACs 不应该再使用”action”参数。

expires:“expires”参数表示UA绑定的有效时长。参数值以秒为单位。如果没有提供这个参数的话,将使用Expires头的值来代替。部署时可以,如果此值大于 2**32-1 (4294967295 seconds 或136 years)可以看作是等于2**32-1。如果是异常的值的话,异常的值应该被视为等于3600。
继续发布。。。
SIP协议规范RFC3261中文分享-14
SIP协议规范RFC3261中文分享-14
关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享
Asterisk freepbx FreeSBC技术文档: www.freepbx.org.cn
融合通信/IPPBX商业解决方案:www.hiastar.com
如何使用FreeSBC+FreeSWITCH/Asterisk,qq技术分享群:334023047
联系电话-18665301040
客服-3
客服-2
客服-1