SIP 100Rel作用

一:问题的提出
在分析码流时遇到如下SIP流程
Invite
100try
风筝绞盘183z轴线性马达
冰箱模具-->PRACK
200Ok
180Ring
PRACK
第一个PRACK是对183消息响应,很少见到第二个在180Ring之后的PRACK;那么产生PRACK时机是什么呢,PRACK真实作用是什么呢。
二:问题的解答
查阅如下资料
SIP定义了两种应答:临时(provisional)和最终(final)。
最终应答传送的是请求处理的结果,是可靠性的(reliably)。 而临时应答传送的是处理过程的信息,由RFC3261可知是非可靠的。但是由现在的情况看来,如果需要在该响应消息中携带媒体信息,那么就必须保证该消息能够可靠的传输到对端,全自动电脑针织机临时应答也应该是可靠的。
RFC3262定义了一种SIP可选的扩展方法——PRACK(provisional ack),用于支持临时应答的可靠性。它的实现机制如下:
借鉴了INVITE请求的2**应答的可靠性机制:通过构造新的事务来重发ACK来确认接收到了2**应答,这种可靠性是端点到端点(end-to-end)的。对于1**(除100外)的应答,使用PRACK来终止该应答的重发。PRACK是对临时应答而言,不同于ACK,是一种跟BYE一样的正常SIP消息。所以它的可靠性是点到点(hop-by-hop)的,且具有应答。
每个临时响应都有一个顺序号,在于RSeq头域中。而PRACK消息包括了RAck头域,指示回应的临时相应的顺序号,且不具有积累效果。
UAS行为
如果请求INVITE的头域Supported中包括选项100rel,UAS可能发送可靠性临时响应;如果请求INVITE的头域Require中包括选项100rel,UAS必须发送可靠性临时响应,否则发送420 (Bad Extension)且Unsupported头域中包括选项100rel。但是,如果请求中不满足以上任一情况,则不能支持可靠临时相应。
UAS需要发送可靠临时相应原因:多种原因。其中之一为根据RFC3261,如果UAS需要一段时间来处理请求,UAS需要发送临时相应消息给Proxies来“延时(extention)”,因为Proxy一般只保留请求上下文3分钟,所以为了避免丢失消息,常需要1分钟重发一次。而使用可靠临时相应只需2分半钟重发一次。
可靠临时响应的构建:只需在RFC3261的基础上进行一些补充:必须包括Require头域(包括100rel选项)和RSeq头域(值为1到2**32-1,是对话中是唯一的)。
PRACK和临时响应的匹配:PRACK首先必须和临时相应在同一个对话之中,RAck中的方法、CSeq-num和response-num分别对应于临时响应CSeq中的方法、CSeq中的序号和RSeq的序号。远程控制杀虫灯
nfc天线如果接受到的PRACK无法到相匹配的临时相应,则回应481;否则回应2**,并停止该临时相应的重发。如果在64*T1时间内没有接收到PRACK,则UAS回应5**。在第一个可靠响应得到回应,才可以发送第二个可靠相应。对于同一个请求,第二个可靠相应的RSeq比第一个大1。
UAS可以在可靠临时响应未收到PRACK情况下发送最终应答,除了以下情况:最终响应为2**且其中一个临时相应中有媒体描述。如果最终响应已经发送,则临时相应的重发和新的临时消息发送都不能进行。
UAC行为
如果需要可靠临时应答,则在INVITE请求的Require头域中包含100rel选项,而其他方法中的Require中不能包含该选项;如果将可靠临时应答的需求的决定权交给UAS,则应在INVI
TE的头域Supported中包含100rel选项。当头域Require中包含100rel的临时消息到来时,且临时消息非100,说明临时消息是可靠的。UAC接下来在对话中建立PRACK请求,跟其它在对话中建立的非INVITE请求一样,UAC不应在接收到重发的可靠临时应答时重发PRACK,即使重发不会引起协议错误。
一个临时应答到来时,如果dialog ID、CSeq、 和RSeq跟之前的一样时,该应答视为重发,该应答必须被丢弃。所以,UAC需要记录RSeq值直到最终应答的到来。如果新的一个临时应答到来时,需要判断RSeq是否比之前的值大。如果不是的话,则不能回应PRACK,可以丢弃该临时应答或缓存起来以等待没有到来的老的临时应答。如果在最终应答到来之后收到临时应答,可以回应或直接丢弃。
当UAS收到的INVITE中含有Supported:100rel,UAS在发送响应的临时消息中,可以根据UAS中是否支持PRACK决定发送临时消息中的参数。如果支持则临时消息中加入Require:100rel和Rseq字段,接到该消息UAC发送PRACK;否则不加上述参数,UAC不发PRACK。
    当UAS收到的INVITE中含有Require:100rel。UAS如果不支持PRACK需要使用420(不
正确的扩展)来拒绝呼叫。否则临时消息中加入Require:100rel和Rseq字段,接到该消息UAC发送PRACK。
三:信令流程
1.Invite
Supported:100Rel 将可靠临时应答的需求的决定权交给UAS
2.<---183
Require:100rel UAS返回的183是可靠的临时消息,需要UAC回复PRACK的确认
3.-->PRACK
UAC发送PRACK对183进行收到确认

本文发布于:2024-09-23 11:19:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/200849.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:应答   消息   可靠   发送   响应   相应
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议