SIP是一种事务协议:组件之间的交互发生在一系列独立的消息交换中。具体来说,SIP事务由单个请求和对该请求的任何响应组成,其中包括零个或多个临时响应和一个或更多个最终响应。在请求是INVITE(称为INVITE事务)的事务中,仅当最终响应不是2xx响应时,事务还包括ACK消息。如果响应是2xx,则ACK不被视为事务的一部分。
事务有客户端和服务端的区分。客户端称为客户端事务,服务器端称为服务器事务。客户端事务发送请求,服务器事务发送响应。客户端和服务器事务是嵌入在任意数量的元素中的逻辑功能。具体来说,它们存在于用户代理和有状态代理服务器中。
为更好理解事务,整理了SIP事务中定时器的定义和取值:
定时器 | 取值 | 含义 |
T1 | 默认500ms | 往返时间的估计(RTT) |
T2 | 4秒 | 非INVITE请求和INVITE响应的最大重传间隔 |
T4 | 5秒 | 消息在网络中保留的持续时间的最大值 |
Timer A | 初始值设置为T1 | INVITE请求重传间隔(仅限UDP) |
Timer B | 64 * T1 | INVITE事务的超时时间 |
Timer C | 大于3分钟 | 代理(proxy)处理INIVITE事务的超时时间 |
Timer D | UDP:大于32秒 TCP/SCTP: 0秒 | 响应消息重传的等待时间 |
Timer E | 初始值设置为T1 | 非INVITE请求重传间隔(仅限UDP) |
Timer F | 64 * T1 | 非INVITE事务的超时时间 |
Timer G | 初始值设置为T1 | INVITE响应的重传间隔 |
Timer H | 64 * T1 | 接收ACK的等待时间 |
Timer I | UDP: T4 TCP/SCTP: 0秒 | ACK重传的等待时间 |
Timer J | UDP: 64* T4 TCP/SCTP: 0秒 | 非INVITE请求的重传等待时间 |
Timer K | UDP: T4 TCP/SCTP: 0秒 | 响应重传的等待时间 |