SIP中的PRACK

PRACK:the Provisional Response ACKnowledgement
 
SIP中的最终响应被理解是会可靠传输的,例如对应INVITE的200OK响应,UAC会给一个ACK,告诉UAS已经收到了200OK。200与ACK间的可靠性是end-to-end的。PRACK是SIP消息中保证临时消息(101-199)可靠传输的机制。PRACK就是仿照200OK的可靠性响应,对除100以外的1xx临时响应(100是hop-to-hop的),进行可靠性传输。PRACK一般是对收到183 call in progress/180 ringing的确认,
PRACK的实现
   UAC与UAS对是否支持该扩展的协商,就是通过一个option tag -- 100rel。
  为达到该目的,UAC有两种选择,在INVITE消息中加入Require:100rel或者Supported:100rel。UAS在接受到上述消息中,也存在选择的问题。
    当INVITE中含有Supported:100rel,UAS在发送临时消息中,可以根据UAS中是否支持PRACK决定发送临时消息中的参数。如果支持则临时消息中加入Require:100rel和Rseq字段,接到该消息UAC发送PRACK;否则不加上述参数,UAC不发PRACK。
  当INVITE中含有Require:100rel。UAS如果不支持PRACK需要使用420(不正确的扩展)来拒绝呼叫。否则临时消息中加入Require:100rel和Rseq字段,接到该消息UAC发送PRACK。
   例如:UAC发起的INVITE中含有Supported:100 rel,而UAS也支持该扩展并且在183响应中有Require:100rel,说明接下来会话中,对所有100以外的1xx响应,均要有PRACK回应。
 


PRACK被定义在RFC3262中。 

在没有收到对PRACK确定回复包之前,PRACK包会不停重发。重发机制见RFC 3262:
     The reliable provisional response is passed to the transaction layer 
   periodically with an interval that starts at T1 seconds and doubles
   for each retransmission .
      并且,要求要小于或等于T2,若超过,以后就按照T2时间间隔发PRACK。若在64*T1还没有收到相应,就回408.
     通过抓包发现T1=0.5s,T2=4S


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值