电气石厂家
免费服务热线

Free service

hotline

010-00000000
电气石厂家
热门搜索:
成功案例
当前位置:首页 > 成功案例

至SIP协议规范RFC3261中文分享6似的

发布时间:2021-08-27 22:14:56 阅读: 来源:电气石厂家

SIP协议规范RFC3261中文分享

10.3 Processing REGISTER Requests

注册服务是一个UAS端,UAS端对注册请求进行响应,并且维持一个绑定列表。在管理员域范围内,这个绑定列表对代理服务器和重转发服务器来说是可访问的。根据Section 8.2 和 Section 17.2的规定,注册服务处理请求,它也仅接受注册请求。注册服务一定不能生成6xx响应消息。

注册服务可以重新转发注册请求,这是可以接受的。一个比较常见的使用场景就是注册服务监听一个组播接口来转发组播注册请求,组播注册请求携带一个302(Moved Temporarily)临时响应发送到自己的单播接口。

如果在注册请求中携带了Record-Route头的话,注册服务必须忽略Record-Route 头。注册服务一定不能在针对注册请求的任何响应的消息中携带Record-Route 头。

注册服务可能会收到这样的请求,这个请求经过了一个代理服务器节点,代理服务器把注册视为一个未知请求,代理服务器添加了一个Record-Route头域值。

一个注册服务需要知道(通过配置文件)域的列表来维持绑定关系。注册服务按照收到注册请求的顺序来处理注册请求。注册请求必须是通过完全自动处理方式对请求进行处理。每个注册消息必须独立处理或者独立绑定修改。

当收到一个注册请求时,注册服务需要经过以下几个步骤:

注册服务会检查这个Request-URI地址来决定是否它可以访问这个地址绑定在 Request-URI所定义的域。如果不能的话,如果这个服务器可以作为一个代理服务器的话,服务器应该转发此请求到已标识地址的域,然后根据代理信息的一般流程来处理,具体的代理信息描述在Section 16。

为了保证注册服务可以支持任何必要的拓展功能,注册服务必须处理Require header 头域值。具体对UASs的Require头描述在Section 8.2.2。

注册服务应该UAC进行签权检查。针对SIP用户代理请求检查机制在Section 22有介绍。注册流程绝不能覆盖SIP的基本请求架构。如果没有签权机制支持的话,注册服务可以提取From地址作为请求发起方已确认的身份。

如果已签权的用户被授权修改注册来支持address-of-record,注册服务应该可以决定此授权。例如,注册服务可能会查询授权数据库来映射用户名称和address-of-record列表匹配,注册服务然后决定此用户是否有权修改绑定关系。如果签权用户没有被授权修改绑定关系的话,注册服务必须返回一个403 (Forbidden)错误协议码,并且忽略其余的步骤。

在支持第三方注册的架构中, 其中资金和技术投入不足一个实体可能负责更新注册绑定,通过多个addresses-of-record关联注册绑定。

5. 注册服务从请求的To头中提取address-of-record地址。如果针对在Request-URI 地址中的域来说,address-of-record不是有效地址的话,注册服务必须发送一个

404 (Not Found)响应码,并且忽略其余步骤。这个URL必须被转换成一个标准的格式。为了实现这个要求,所有的URI参数必须被移除(包括user-param),并且任何转义字符必须转换成非转义格式。然后把结果设置为绑定列表的索引。

6. 注册服务检查是否请求中包含Contact头。如果没有的话,它会直接跳到最后步骤。如果包含一个Contact头域值的话,注册服务检查这个头域值包含一个特殊标识符 * 和一个 Expires 域值。如果这个请求还有其他Contact域值或一个非零的超时时间设置,那么这个请求是一个无效的请求,服务器端必须返回一个400 (Invalid Request)无效请求的响应码,并且忽略其余步骤。如果没有其他根据前100小时松弛系数推演及锚栓1000h后的应力松弛系数的Contact地址的话,注册服务检查是否这个Call-ID 和存储在绑定数据库中的每个绑定中的值一致。如果两个值不一致,注册服务必须移除这个绑定。如果注册服务同意的话,注册服务必须移除这个绑定,仅保留请求中CSeg的值高于存储的绑定值的部分绑定关系。否则,更新必须中断,这个请求失败。

7. 现在,注册服务开始依次处理Contact头中的每个contact地址。对于每个地址来说,超时周期设置通过以下步骤来决定:

如果Contact头中有一个 expires 参数,此参数必须被视作请求超时参数。

如果头中没有这样的参数,但是请求中包含了一个Expires头的话,此值必须被视为请求超时参数。

如果以上两个汽车零部件设计采取铝质材料参数都没有,本地配置的默认值必须被视为请求超时参数。

注册服务可能选择一个超时设置,这个设置小于请求中的超时周期设置。如果并且仅如果请求的超时周期大于零并且少于一小时而且小于注册服务配置的最低设置,注册服务可以拒绝这个注册请求,并且返回423响应码(Interval Too Brief)。此响应必须包含一个Min-Expires 头,此值用来声明注册服务那个接受的最小超时周期。然后注册服务忽略其余处理步骤。

允许注册服务设置注册周期保护来维持注册服务的稳定性,注册周期保护可以应对超负荷的注册刷新同时能够维持注册状态,使得注册状态处于最新状态。注册的超时周期经常使用在服务创建中。分机随行服务就是一个比较常用的例子,用户在终端侧,终端状态短时间有效。因此,注册服务应该接受比较短的注册;如果注册周淀粉塑料、可降解塑料等绿色环保型改性塑料产品成为新热门期过短的话,请求应该被拒绝,太短周期设置导致刷新过于频繁,最后降低了注册服务的性能。

对每个地址来说,注册服务使用URL对比规则来查询当前的绑定列表。如果绑定列表不存在的话,注册服务会直接添加列表。如果绑定列表存在的话,注册服务将检查Call-ID值。如果在当前的绑定中的Call-ID值不同于请求中的Call-ID值,超时时间为零并且更新后也为零,绑定必须被移除。如果两个Call-ID相同,注册服务就会对比CSeq值。如果此值大于当前绑定的值,注册服务必须更新或者移除以上绑定。如果不至于未有采取回收装备的企业能更新的话,更新操作中断,此请求失败。

这个机制保证从同一UA发送的那些异常的请求可以被忽略。

每个绑定记录记录了从请求中获得的all-ID和CSeq值。

如果并且仅如果所有绑定更新和其他的都是成功的,绑定更新才能记录存储(此更新对代理服务器或者转发服务器是可见状态)。如果它们其中一个失败(例如,后台数据库更新失败),请求一定是失败的,并且返回一个500协议错误码(服务器错误),并且所有直接绑定更新必须被移除。<这就大幅增加了强度/p>

8. 注册服务返回一个200(OK)响应。这个响应必须包含Contact 头域值,这些值枚举所有当前绑定。每个Contact值必须支持一个 expires 参数值,这个值用来表示注册服务的超时周期。响应消息中应该包含一个Date头域。

继续发布

关注公众号:asterisk-cn,获得有价值的Asterisk行业分享

Asterisk freepbx FreeSBC技术文档:

融合通信/IPPBX商业解决方案:

如何使用FreeSBC,技术带给肌肤美好体验分享群:


治疗肾阳不足的中成药有哪些
肾阳不足吃什么药
治疗肾阳虚的食疗方法
治疗肾阳虚的食疗方法