您当前的位置是:  首页 > 资讯 > 国内 >
 首页 > 资讯 > 国内 >

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

2019-12-24 13:39:39   作者:   来源:CTI论坛   评论:0  点击:


  • 接前面章节。
  • 10  Registrations
  • 10.1 Overview
  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.2 Constructing the REGISTER Request
  注册可以请求添加,移除和查询绑定。一个注册请求可以在一个address-of-record和一个或多个contact地址之间添加一个新的绑定。通过一个授权的,合适的第三方执行一个指定的address-of-record的注册。客户端也可以移除前面的绑定或通过查询来决定哪个绑定是支持的address-of-record。
  这里有一个特别说明,注册请求构建和客户发送注册请求的处理是通过基本的UAC处理方式来规范的,具体的规范说明,请参阅Section 8.1 和Section 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地址头)。
  以下Contact头参数在注册请求中具有特别的含义:
  • action: 在RFC2543的规范中使用的参数"action" 已经停止使用。
  • UACs 不应该再使用"action" 参数。
  • expires: “expires”参数表示UA绑定的有效时长。参数值以秒为单位。如果没有提供这个参数的话,将使用Expires头的值来代替。部署时可以,如果此值大于 2**32-1 (4294967295 seconds 或136 years)可以看作是等于2**32-1。 如果是异常的值的话,异常的值应该被视为等于3600。
  继续发布……
  关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享
  Asterisk freepbx FreeSBC技术文档: www.freepbx.org.cn
  融合通信/IPPBX商业解决方案:www.hiastar.com
  如何使用FreeSBC+FreeSWITCH/Asterisk,qq技术分享群:334023047
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题

CTI论坛会员企业