Sip PRACK实现中的UAC行为

Sip PRACK实现中的UAC行为,sip,Sip,UAC收到PRACK的200 OK比收到邀请的200 OK晚,前提是UAS已按正确顺序发送。UAC的行为应该是什么?它会默默地放下这个包吗?或者它会建立对话框吗?在标准中,我看不到在客户端以某种方式将INVITE的200 OK和PRAK的200 OK限定在一起。UAC应根据 RFC 3261-13.2.2.4 2xx响应 对于单个邀请,可能会有多个2xx响应到达UAC 由于分叉代理而导致的请求。每个响应的区别是 To header字段中的tag参数,每个参数表示一个 独特的对话框,具有独特的对话

UAC收到PRACK的200 OK比收到邀请的200 OK晚,前提是UAS已按正确顺序发送。UAC的行为应该是什么?它会默默地放下这个包吗?或者它会建立对话框吗?

在标准中,我看不到在客户端以某种方式将INVITE的200 OK和PRAK的200 OK限定在一起。UAC应根据

RFC 3261-13.2.2.4 2xx响应

对于单个邀请,可能会有多个2xx响应到达UAC
由于分叉代理而导致的请求。每个响应的区别是
To header字段中的tag参数,每个参数表示一个
独特的对话框,具有独特的对话框标识符

如果2xx响应中的对话框标识符与对话框匹配
现有对话框的标识符,该对话框必须转换为
“已确认”状态
,对话框的路由设置必须为
使用第节中的程序,根据2xx响应重新计算 12.2.1.2. 否则,必须使用第12.1.2节中的程序构建处于“已确认”状态的新对话框

它必须根据RFC3262处理对PRACK的响应

请注意,PRACK与应用程序中的任何其他非邀请请求类似 对话

这是对无人机的要求

UAS可以在开始之前发送对初始请求的最终响应 收到所有未经确认的可靠临时文件 响应,除非最终响应为2xx并且 未确认的可靠临时响应包含会话 描述在这种情况下,必须在 这些临时答复得到确认


因此,似乎UAC收到2xx响应可以确定UAS已收到PRACK并停止其重新传输丢失-但RFC中没有这样的规定。因此,即使在收到对INVITE的2xx响应后,UAC仍应继续重新传输PRACK,直到确认为止。

我在标准中没有看到在客户端以某种方式将INVITE的OK值限制为200,PRACK的OK值限制为200。UAC应根据

RFC 3261-13.2.2.4 2xx响应

对于单个邀请,可能会有多个2xx响应到达UAC
由于分叉代理而导致的请求。每个响应的区别是
To header字段中的tag参数,每个参数表示一个
独特的对话框,具有独特的对话框标识符

如果2xx响应中的对话框标识符与对话框匹配
现有对话框的标识符,该对话框必须转换为
“已确认”状态
,对话框的路由设置必须为
使用第节中的程序,根据2xx响应重新计算 12.2.1.2. 否则,必须使用第12.1.2节中的程序构建处于“已确认”状态的新对话框

它必须根据RFC3262处理对PRACK的响应

请注意,PRACK与应用程序中的任何其他非邀请请求类似 对话

这是对无人机的要求

UAS可以在开始之前发送对初始请求的最终响应 收到所有未经确认的可靠临时文件 响应,除非最终响应为2xx并且 未确认的可靠临时响应包含会话 描述在这种情况下,必须在 这些临时答复得到确认


因此,似乎UAC收到2xx响应可以确定UAS已收到PRACK并停止其重新传输丢失-但RFC中没有这样的规定。因此,即使在收到INVITE的2xx响应后,UAC仍应继续重新传输PRACK,直到确认为止。

在UDP land中,UAS实现可能是正确的,但两个200 OK(PRACK和INVITE)仍然以相反的顺序到达。这样的正常事件不应影响对话的建立。在UDP land中,UAS实现可能是正确的,但两个200 OK(PRACK和INVITE)仍然以相反的顺序到达。此类正常事件不应影响对话的建立。