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的实现
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