SDP offer-answer协商原则

xiaoxiao2021-02-28  11

规则1:初始Offer必须在INVITE消息或者第一个可靠的非失败型响应中。(理解:初始的Offer不能在Prack/Ack/Update中)

规则2:如果初始Offer在INVITE消息中,Answer必须出现在一个可靠的非失败型响应中(补充:当可靠的1**响应和2**响应都携带了SDP,那么两者的SDP内容必须一致,且2**中的SDP被忽略)

规则3:如果初始Offer出现在第一个可靠的非失败型响应中,Answer必须出现在对该响应的确认消息中(ACK/Prack)

规则4:如果已经发送或接受对于第一个Offer的Answer,UAC可以继续发送新的Offer;相反的,如果没有确认对前一个Offer的Answer,不能发送新的Offer。(理解:只有上一次能力协商完成之后,才能发起新的能力协商)

规则5:如果已经发送或接受对于初始Offer的Answer,UAS禁止在之后同一个事务的响应消息中带上新的Offer。(理解:这个规则和规则2是一致的,可靠的1**和2**响应都属于invite事务,所以2**中的SDP认为是重复的,被忽略,而不是新的Offer)

规则6:如果UAC接收到1**中的Offer,必须在PRACK方法中带有Answer。但是如果UAC收到1**中的Answer,则可能在PRACK带上新的Offer。如果UAS接收到PRACK中的Offer,则必须在2**中带上Answer。(理解:Prack属于新的事务,所以当1**响应完成上一次的能力协商,所以Prack可以发起新的能力协商,这与规则4是保持一致的)

规则7:如果Offer/Answer交互成功的话,在INVITE事务没有完成之前也能建立好会话。(理解:这就我们的早期会话媒体场景,因为会话的最终目的是为了媒体的互通,当能力协商之后,就可以媒体交互了)

转载请注明原文地址: https://www.6miu.com/read-1750241.html

最新回复(0)