Session Timers主要目的是防止UA因为程序异常或者网络异常,无法发送bye给对端(包括proxy、UA),导致对端单方面的保持一个“僵尸”会话。所以RFC4028介绍了一种会话保活机制来避免这种场景。会话保活另一个应用于NAT保活,防止NAT老化。
Supported头域中携带timer标签表示支持会话保活
Session-Expires头域中包含保活时间和刷新方。
Min-SE头域表示最小保活时间,一般出现在请求和422响应中。请求中携带Min-SE意味着响应中携带的Session-Expires的时间不能小于Min-SE。422中携带Min-SE代表UAC发送的保活时间太短,UAS不能接受小于Min-SE的Session-Expires。
下面表格列出两个头域应用场景,其中amr分别表示add/mod/remove。
+---------------+-----+-----+---+---+---+---+---+---+---+---+---+---+ | Header |where|proxy|ACK|BYE|CAN|INV|OPT|REG|PRA|UPD|SUB|NOT| +---------------+-----+-----+---+---+---+---+---+---+---+---+---+---+ |Session-Expires| R | amr | - | - | - | o | - | - | - | o | - | - | |